CWE-825: Expired Pointer Dereference
Base
The product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.
When a product releases memory, but it maintains a pointer to that memory, then the memory might be re-allocated at a later time. If the original pointer is accessed to read or write data, then this could cause the product to read or modify data that is in use by a different function or process. Depending on how the newly-allocated memory is used, this could lead to a denial of service, information exposure, or code execution.
Consequences
- Confidentiality: Read Memory
- Availability: DoS: Crash, Exit, or Restart
- Integrity, Confidentiality, Availability: Execute Unauthorized Code or Commands
How to prevent it
- Architecture and Design: Choose a language that provides automatic memory management.
- Implementation: When freeing pointers, be sure to set them to NULL once they are freed. However, the utilization of multiple or complex data structures may lower the usefulness of this strategy.
Recent advisories
- GHSA-phwj-rprq-35pp — Nokogiri: Possible Use-After-Free when setting an attribute value via `Nokogiri::XML::Attr#value=` or `#content=`
- GHSA-5r4x-w6p5-222q — ImageMagick: Use-After-Free in MSL decoder.
- GHSA-532v-xpq5-8h95 — Electron: Use-after-free in offscreen child window paint callback
- GHSA-4w98-xf39-23gp — Loop with Unreachable Exit Condition ('Infinite Loop') in ewe
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor