An attacker can supply a pointer for memory locations that the product is not expecting. If the pointer is dereferenced for a write operation, the attack might allow modification of critical state variables, cause a crash, or execute code. If the dereferencing operation is for a read, then the attack might allow reading of sensitive data, cause a crash, or set a variable to an unexpected value (since the value will be read from an unexpected memory location).
There are several variants of this weakness, including but not necessarily limited to:
Scope | Impact | Likelihood |
---|---|---|
Confidentiality | Read Memory Note: If the untrusted pointer is used in a read operation, an attacker might be able to read sensitive portions of memory. | |
Availability | DoS: Crash, Exit, or Restart Note: If the untrusted pointer references a memory location that is not accessible to the product, or points to a location that is "malformed" or larger than expected by a read or write operation, the application may terminate unexpectedly. | |
Integrity Confidentiality Availability | Execute Unauthorized Code or Commands, Modify Memory Note: If the untrusted pointer is used in a function call, or points to unexpected data in a write operation, then code execution may be possible. |
References | Description |
---|---|
CVE-2007-5655 | message-passing framework interprets values in packets as pointers, causing a crash. |
CVE-2010-2299 | labeled as a "type confusion" issue, also referred to as a "stale pointer." However, the bug ID says "contents are simply interpreted as a pointer... renderer ordinarily doesn't supply this pointer directly". The "handle" in the untrusted area is replaced in one function, but not another - thus also, effectively, exposure to wrong sphere (CWE-668). |
CVE-2009-1719 | Untrusted dereference using undocumented constructor. |
CVE-2009-1250 | An error code is incorrectly checked and interpreted as a pointer, leading to a crash. |
CVE-2009-0311 | An untrusted value is obtained from a packet and directly called as a function pointer, leading to code execution. |
CVE-2010-1818 | Undocumented attribute in multimedia software allows "unmarshaling" of an untrusted pointer. |
CVE-2010-3189 | ActiveX control for security software accepts a parameter that is assumed to be an initialized pointer. |
CVE-2010-1253 | Spreadsheet software treats certain record values that lead to "user-controlled pointer" (might be untrusted offset, not untrusted pointer). |
CAPEC-ID | Attack Pattern Name |
---|---|
CAPEC-129 | Pointer Manipulation This attack pattern involves an adversary manipulating a pointer within a target application resulting in the application accessing an unintended memory location. This can result in the crashing of the application or, for certain pointer values, access to data that would not normally be possible or the execution of arbitrary code. Since pointers are simply integer variables, Integer Attacks may often be used in Pointer Attacks. |
Name | Organization | Date | Date release | Version |
---|---|---|---|---|
CWE Content Team | MITRE | 1.10 |
Name | Organization | Date | Comment |
---|---|---|---|
CWE Content Team | MITRE | updated Description | |
CWE Content Team | MITRE | updated Common_Consequences | |
CWE Content Team | MITRE | updated Related_Attack_Patterns, Relationships | |
CWE Content Team | MITRE | updated Relationships, Taxonomy_Mappings | |
CWE Content Team | MITRE | updated Relationships | |
CWE Content Team | MITRE | updated Taxonomy_Mappings | |
CWE Content Team | MITRE | updated Related_Attack_Patterns | |
CWE Content Team | MITRE | updated Relationships | |
CWE Content Team | MITRE | updated Relationships | |
CWE Content Team | MITRE | updated Relationships | |
CWE Content Team | MITRE | updated Research_Gaps | |
CWE Content Team | MITRE | updated Common_Consequences, Description | |
CWE Content Team | MITRE | updated Relationships | |
CWE Content Team | MITRE | updated Mapping_Notes |