CWE
Home > CWE List > CWE-123 Individual Dictionary Definition (Draft 9)   View the CWE List

CWE-123 Individual Dictionary Definition (Draft 9)

Write-what-where Condition
Weakness ID
Status: Draft

123 (Weakness Base)

Description

Summary

Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow.

Likelihood of Exploit

High

Weakness Ordinality

Resultant (Weakness is typically related to the presence of some other weaknesses)

Causal Nature

Explicit (This is an explicit weakness resulting from behavior of the developer)

Common Consequences

Access control (memory and instruction processing): Clearly, write-what-where conditions can be used to write data to areas of memory outside the scope of a policy. Also, they almost invariably can be used to execute arbitrary code, which is usually outside the scope of a program's implicit security policy.

Availability: Many memory accesses can lead to program termination, such as when writing to addresses that are invalid for the current process.

Other: When the consequence is arbitrary code execution, this can often be used to subvert any other security service.

Potential Mitigations

Pre-design: Use a language that provides appropriate memory abstractions.

Design: Integrate technologies that try to prevent the consequences of this problem.

Implementation: Take note of mitigations provided for other flaws in this taxonomy that lead to write-what-where conditions.

Operational: Use OS-level preventative functionality integrated after the fact. Not a complete solution.

Context Notes

When the attacker has the ability to write arbitrary data to an arbitrary location in memory, the consequences are often arbitrary code execution. If the attacker can overwrite a pointer's worth of memory (usually 32 or 64 bits), he can redirect a function pointer to his own malicious code. Even when the attacker can only modify a single byte using a write-what-where problem, arbitrary code execution can be possible. Sometimes this is because the same problem can be exploited repeatedly to the same effect. Other times it is because the attacker can overwrite security-critical application-specific data -- such as a flag indicating whether the user is an administrator.

Relationships
NatureTypeIDName
ChildOfWeakness ClassWeakness ClassWeakness Class119Failure to Constrain Operations within the Bounds of an Allocated Memory Buffer
PeerOfWeakness BaseWeakness BaseWeakness Base134Uncontrolled Format String
PeerOfWeakness BaseWeakness BaseWeakness Base132Miscalculated Null Termination
PeerOfWeakness BaseWeakness BaseWeakness Base134Uncontrolled Format String
PeerOfWeakness BaseWeakness BaseWeakness Base364Signal Handler Race Condition
PeerOfWeakness VariantWeakness VariantWeakness Variant415Double Free
CanFollowWeakness BaseWeakness BaseWeakness Base416Use After Free
PeerOfWeakness VariantWeakness VariantWeakness Variant479Unsafe Function Call from a Signal Handler
CanFollowCompound Element: CompositeCompound Element: Composite120Unbounded Transfer ('Classic Buffer Overflow')
Source Taxonomies

CLASP - Write-what-where condition

Applicable Platforms

C

C++

Page Last Updated: April 21, 2008