CWE - CWE-672: Operation on a Resource after Expiration or Release (4.20)
Home > CWE List > CWE-672: Operation on a Resource after Expiration or Release (4.20)  
ID

  • Home
  • CWE-672: Operation on a Resource after Expiration or Release

    Weakness ID: 672
    Vulnerability Mapping: ALLOWED This CWE ID could be used to map to real-world vulnerabilities in limited situations requiring careful review (with careful review of mapping notes)
    Abstraction: Class Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource.
    View customized information:
    For users who are interested in more notional aspects of a weakness. Example: educators, technical writers, and project/program managers. For users who are concerned with the practical application and details about the nature of a weakness and how to prevent it from happening. Example: tool developers, security researchers, pen-testers, incident response analysts. For users who are mapping an issue to CWE/CAPEC IDs, i.e., finding the most appropriate CWE for a specific issue (e.g., a CVE record). Example: tool developers, security researchers. For users who wish to see all available information for the CWE/CAPEC entry. For users who want to customize what details are displayed.
    ×

    Edit Custom Filter


    + Description
    The product uses, accesses, or otherwise operates on a resource after that resource has been expired, released, or revoked.
    + Common Consequences
    Section HelpThis table specifies different individual consequences associated with the weakness. The Scope identifies the application security area that is violated, while the Impact describes the negative technical impact that arises if an adversary succeeds in exploiting this weakness. The Likelihood provides information about how likely the specific consequence is expected to be seen relative to the other consequences in the list. For example, there may be high likelihood that a weakness will be exploited to achieve a certain impact, but a low likelihood that it will be exploited to achieve a different impact.
    Impact Details

    Modify Application Data; Read Application Data

    Scope: Integrity, Confidentiality

    If a released resource is subsequently reused or reallocated, then an attempt to use the original resource might allow access to sensitive data that is associated with a different user or entity.

    Other; DoS: Crash, Exit, or Restart

    Scope: Other, Availability

    When a resource is released it might not be in an expected state, later attempts to access the resource may lead to resultant errors that may lead to a crash.
    + Relationships
    Section Help This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore.
    + Relevant to the view "Research Concepts" (View-1000)
    Nature Type ID Name
    ChildOf Class Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource. 666 Operation on Resource in Wrong Phase of Lifetime
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 298 Improper Validation of Certificate Expiration
    ParentOf Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 324 Use of a Key Past its Expiration Date
    ParentOf Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 613 Insufficient Session Expiration
    ParentOf Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 825 Expired Pointer Dereference
    ParentOf Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 910 Use of Expired File Descriptor
    CanFollow Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 562 Return of Stack Variable Address
    CanFollow Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 826 Premature Release of Resource During Expected Lifetime
    CanFollow Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 911 Improper Update of Reference Count
    CanFollow Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 1341 Multiple Releases of Same Resource or Handle
    + Relevant to the view "Weaknesses for Simplified Mapping of Published Vulnerabilities" (View-1003)
    Nature Type ID Name
    MemberOf View View - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1003 Weaknesses for Simplified Mapping of Published Vulnerabilities
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 415 Double Free
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 416 Use After Free
    ParentOf Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource. 613 Insufficient Session Expiration
    + Relevant to the view "CISQ Quality Measures (2020)" (View-1305)
    Nature Type ID Name
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 415 Double Free
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 416 Use After Free
    + Relevant to the view "CISQ Data Protection Measures" (View-1340)
    Nature Type ID Name
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 415 Double Free
    ParentOf Variant Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource. 416 Use After Free
    + Modes Of Introduction
    Section HelpThe different Modes of Introduction provide information about how and when this weakness may be introduced. The Phase identifies a point in the life cycle at which introduction may occur, while the Note provides a typical scenario related to introduction during the given phase.
    Phase Note
    Implementation
    Operation
    + Applicable Platforms
    Section HelpThis listing shows possible areas for which the given weakness could appear. These may be for specific named Languages, Operating Systems, Architectures, Paradigms, Technologies, or a class of such platforms. The platform is listed along with how frequently the given weakness appears for that instance.
    Languages

    Class: Not Language-Specific (Undetermined Prevalence)

    Technologies

    Class: Mobile (Undetermined Prevalence)

    + Demonstrative Examples

    Example 1


    The following code shows a simple example of a use after free error:

    (bad code)
    Example Language: C 
    char* ptr = (char*)malloc (SIZE);
    if (err) {
    abrt = 1;
    free(ptr);
    }
    ...
    if (abrt) {
    logError("operation aborted before commit", ptr);
    }

    When an error occurs, the pointer is immediately freed. However, this pointer is later incorrectly used in the logError function.



    Example 2


    The following code shows a simple example of a double free error:

    (bad code)
    Example Language: C 
    char* ptr = (char*)malloc (SIZE);
    ...
    if (abrt) {
    free(ptr);
    }
    ...
    free(ptr);

    Double free vulnerabilities have two common (and sometimes overlapping) causes:

    • Error conditions and other exceptional circumstances
    • Confusion over which part of the program is responsible for freeing the memory

    Although some double free vulnerabilities are not much more complicated than the previous example, most are spread out across hundreds of lines of code or even different files. Programmers seem particularly susceptible to freeing global variables more than once.



    Example 3


    In the following C/C++ example the method processMessage is used to process a message received in the input array of char arrays. The input message array contains two char arrays: the first is the length of the message and the second is the body of the message. The length of the message is retrieved and used to allocate enough memory for a local char array, messageBody, to be created for the message body. The messageBody is processed in the method processMessageBody that will return an error if an error occurs while processing. If an error occurs then the return result variable is set to indicate an error and the messageBody char array memory is released using the method free and an error message is sent to the logError method.

    (bad code)
    Example Language: C 
    #define FAIL 0
    #define SUCCESS 1
    #define ERROR -1
    #define MAX_MESSAGE_SIZE 32

    int processMessage(char **message)
    {
    int result = SUCCESS;

    int length = getMessageLength(message[0]);
    char *messageBody;

    if ((length > 0) && (length < MAX_MESSAGE_SIZE)) {
    messageBody = (char*)malloc(length*sizeof(char));
    messageBody = &message[1][0];

    int success = processMessageBody(messageBody);

    if (success == ERROR) {
    result = ERROR;
    free(messageBody);
    }
    }
    else {
    printf("Unable to process message; invalid message length");
    result = FAIL;
    }

    if (result == ERROR) {
    logError("Error processing message", messageBody);
    }

    return result;
    }

    However, the call to the method logError includes the messageBody after the memory for messageBody has been released using the free method. This can cause unexpected results and may lead to system crashes. A variable should never be used after its memory resources have been released.

    (good code)
    Example Language: C 
    ...
    messageBody = (char*)malloc(length*sizeof(char));
    messageBody = &message[1][0];

    int success = processMessageBody(messageBody);

    if (success == ERROR) {
    result = ERROR;
    logError("Error processing message", messageBody);
    free(messageBody);
    }
    ...


    + Selected Observed Examples

    Note: this is a curated list of examples for users to understand the variety of ways in which this weakness can be introduced. It is not a complete list of all CVEs that are related to this CWE entry.

    Reference Description
    Chain: race condition (CWE-362) might allow resource to be released before operating on it, leading to NULL dereference (CWE-476)
    + Weakness Ordinalities
    Ordinality Description
    Primary
    (where the weakness exists independent of other weaknesses)
    Resultant
    (where the weakness is typically related to the presence of some other weaknesses)
    + Detection Methods
    Method Details

    Automated Static Analysis

    Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)

    Effectiveness: High

    + Memberships
    Section HelpThis MemberOf Relationships table shows additional CWE Categories and Views that reference this weakness as a member. This information is often useful in understanding where a weakness fits within the context of external information sources.
    Nature Type ID Name
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 808 2010 Top 25 - Weaknesses On the Cusp
    MemberOf ViewView - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 884 CWE Cross-section
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 983 SFP Secondary Cluster: Faulty Resource Use
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1131 CISQ Quality Measures (2016) - Security
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1162 SEI CERT C Coding Standard - Guidelines 08. Memory Management (MEM)
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1163 SEI CERT C Coding Standard - Guidelines 09. Input Output (FIO)
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1306 CISQ Quality Measures - Reliability
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1308 CISQ Quality Measures - Security
    MemberOf ViewView - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1340 CISQ Data Protection Measures
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1415 Comprehensive Categorization: Resource Control
    + Vulnerability Mapping Notes
    Usage ALLOWED-WITH-REVIEW
    (this CWE ID could be used to map to real-world vulnerabilities in limited situations requiring careful review)
    Reason Abstraction

    Rationale

    This CWE entry is a Class and might have Base-level children that would be more appropriate

    Comments

    Examine children of this entry to see if there is a better fit
    + Taxonomy Mappings
    Mapped Taxonomy Name Node ID Fit Mapped Node Name
    Software Fault Patterns SFP15 Faulty Resource Use
    CERT C Secure Coding FIO46-C CWE More Abstract Do not access a closed file
    CERT C Secure Coding MEM30-C CWE More Abstract Do not access freed memory
    OMG ASCSM ASCSM-CWE-672
    + References
    [REF-962] Object Management Group (OMG). "Automated Source Code Security Measure (ASCSM)". ASCSM-CWE-672. 2016-01.
    <http://www.omg.org/spec/ASCSM/1.0/>.
    + Content History
    + Submissions
    Submission Date Submitter Organization
    2008-04-11
    (CWE Draft 9, 2008-04-11)
    CWE Content Team MITRE
    + Modifications
    Modification Date Modifier Organization
    2025-12-11
    (CWE 4.19, 2025-12-11)
    CWE Content Team MITRE
    updated Detection_Factors, Weakness_Ordinalities
    2023-10-26
    (CWE 4.13, 2023-10-26)
    CWE Content Team MITRE
    updated Observed_Examples
    2023-06-29
    (CWE 4.12, 2023-06-29)
    CWE Content Team MITRE
    updated Mapping_Notes
    2023-04-27
    (CWE 4.11, 2023-04-27)
    CWE Content Team MITRE
    updated Relationships, Time_of_Introduction
    2023-01-31
    (CWE 4.10, 2023-01-31)
    CWE Content Team MITRE
    updated Description
    2021-10-28
    (CWE 4.6, 2021-10-28)
    CWE Content Team MITRE
    updated Relationships
    2020-12-10
    (CWE 4.3, 2020-12-10)
    CWE Content Team MITRE
    updated Relationships
    2020-08-20
    (CWE 4.2, 2020-08-20)
    CWE Content Team MITRE
    updated Relationships
    2020-02-24
    (CWE 4.0, 2020-02-24)
    CWE Content Team MITRE
    updated Applicable_Platforms, Relationships
    2019-06-20
    (CWE 3.3, 2019-06-20)
    CWE Content Team MITRE
    updated Relationships, Type
    2019-01-03
    (CWE 3.2, 2019-01-03)
    CWE Content Team MITRE
    updated References, Relationships, Taxonomy_Mappings
    2017-11-08
    (CWE 3.0, 2017-11-08)
    CWE Content Team MITRE
    updated Demonstrative_Examples, Taxonomy_Mappings
    2014-07-30
    (CWE 2.8, 2014-07-31)
    CWE Content Team MITRE
    updated Relationships, Taxonomy_Mappings
    2014-02-18
    (CWE 2.6, 2014-02-19)
    CWE Content Team MITRE
    updated Applicable_Platforms
    2013-02-21
    (CWE 2.4, 2013-02-21)
    CWE Content Team MITRE
    updated Relationships
    2012-05-11
    (CWE 2.2, 2012-05-15)
    CWE Content Team MITRE
    updated Common_Consequences, Demonstrative_Examples, Relationships
    2011-06-01
    (CWE 1.13, 2011-06-01)
    CWE Content Team MITRE
    updated Common_Consequences
    2010-09-27
    (CWE 1.10, 2010-09-27)
    CWE Content Team MITRE
    updated Observed_Examples, Relationships
    2010-02-16
    (CWE 1.8, 2010-02-16)
    CWE Content Team MITRE
    updated Demonstrative_Examples, Description, Name, Relationships
    2008-09-08
    (CWE 1.0, 2008-09-09)
    CWE Content Team MITRE
    updated Relationships
    2008-07-01
    (CWE 1.0, 2008-09-09)
    Eric Dalci Cigital
    updated Time_of_Introduction
    + Previous Entry Names
    Change Date Previous Entry Name
    2010-02-16 Use of a Resource after Expiration or Release
    Page Last Updated: April 30, 2026