Wrap around errors occur whenever a value is incremented past
the maximum value for its type and therefore "wraps around" to a very small,
negative, or undefined value.
Time of Introduction
Implementation
Applicable Platforms
Languages
C: (Often)
C++: (Often)
Common Consequences
Scope
Effect
Availability
Wrap-around errors generally lead to undefined behavior, infinite
loops, and therefore crashes.
Integrity
If the value in question is important to data (as opposed to flow),
simple data corruption has occurred. Also, if the wrap around results in
other conditions such as buffer overflows, further memory corruption may
occur.
Integrity
A wrap around can sometimes trigger buffer overflows which can be used
to execute arbitrary code. This is usually outside the scope of a
program's implicit security policy.
Likelihood of Exploit
Medium
Potential Mitigations
Phase
Description
Requirements specification: The choice could be made to use a language
that is not susceptible to these issues.
Architecture and Design
Provide clear upper and lower bounds on the scale of any protocols
designed.
Implementation
Place sanity checks on all incremented variables to ensure that they
remain within reasonable bounds.
Background Details
Due to how addition is performed by computers, if a primitive is
incremented past the maximum value possible for its storage space, the
system will fail to recognize this, and therefore increment each bit as if
it still had extra space. Because of how negative numbers are represented in
binary, primitives interpreted as signed may "wrap" to very large negative
values.
Weakness Ordinalities
Ordinality
Description
Primary
(where the
weakness exists independent of other weaknesses)