In C and C++, one may often accidentally refer to the wrong
memory due to the semantics of when math operations are implicitly
scaled.
Time of Introduction
Implementation
Applicable Platforms
Languages
C
C++
Common Consequences
Scope
Effect
Confidentiality
Integrity
Availability
Incorrect pointer scaling will often result in buffer overflow
conditions. Confidentiality can be compromised if the weakness is in the
context of a buffer over-read or under-read.
Likelihood of Exploit
Medium
Demonstrative Examples
Example 1
(Bad Code)
C
int *p = x;
char * second_char = (char *)(p + 1);
In this example, second_char is intended to point to the second byte
of p. But, adding 1 to p actually adds sizeof(int) to p, giving a result
that is incorrect (3 bytes off on 32-bit platforms). If the resulting
memory address is read, this could potentially be an information leak.
If it is a write, it could be a security-critical write to unauthorized
memory-- whether or not it is a buffer overflow. Note that the above
code may also be wrong in other ways, particularly in a little endian
environment.
Potential Mitigations
Phase
Description
Architecture and Design
Use a platform with high-level memory abstractions.
Implementation
Always use array indexing instead of direct pointer
manipulation.
Other: Use technologies for preventing buffer overflows.
Other Notes
Programmers will often try to index from a pointer by adding a number of
bytes, even though this is wrong, since C and C++ implicitly scale the
operand by the size of the data type.
A weakness where code path has a statement that performs a pointer
arithmetic operation on a pointer to datatype1 and casts the result of the
operation to a pointer type to datatype2 where datatype2 has different
length than the datatype1 and the datatype1 has different length than a
character type.
Content History
Submissions
Submission Date
Submitter
Organization
Source
CLASP
Externally Mined
Modifications
Modification Date
Modifier
Organization
Source
2008-07-01
Eric Dalci
Cigital
External
updated Time of Introduction
2008-08-01
KDM Analytics
External
added/updated white box definitions
2008-09-08
CWE Content Team
MITRE
Internal
updated Applicable Platforms, Common Consequences,
Relationships, Other Notes, Taxonomy Mappings