[Forgot Password]
Login  Register Subscribe

23631

 
 

115084

 
 

97559

 
 

909

 
 

78730

 
 

109

Paid content will be excluded from the download.


Download | Alert*
CWE
view XML

Write-what-where Condition

ID: 123Date: (C)2012-05-14   (M)2017-11-15
Type: weaknessStatus: DRAFT
Abstraction Type: Base





Description

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

Applicable Platforms
Language: C
Language: C++

Time Of Introduction

  • Implementation

Common Consequences

ScopeTechnical ImpactNotes
Integrity
Confidentiality
Availability
Access_Control
 
Modify memory
Execute unauthorized code or commands
Gain privileges / assume identity
DoS: crash / exit / restart
Bypass protection mechanism
 
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.
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 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.
 
Integrity
Availability
 
DoS: crash / exit / restart
Modify memory
 
Many memory accesses can lead to program termination, such as when writing to addresses that are invalid for the current process.
 
Access_Control
Other
 
Bypass protection mechanism
Other
 
When the consequence is arbitrary code execution, this can often be used to subvert any other security service.
 

Detection Methods
None

Potential Mitigations

PhaseStrategyDescriptionEffectivenessNotes
  Pre-design: Use a language that provides appropriate memory abstractions.
 
  
Architecture and 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.
 
  

Relationships

Related CWETypeViewChain
CWE-123 ChildOf CWE-890 Category CWE-888  

Demonstrative Examples   (Details)

  1. The classic example of a write-what-where condition occurs when the accounting information for memory allocations is overwritten in a particular fashion. Here is an example of potentially vulnerable code:

White Box Definitions
None

Black Box Definitions
None

Taxynomy Mappings

TaxynomyIdNameFit
CLASP  Write-what-where condition
 
 

References:

  1. Michael Howard David LeBlanc John Viega .24 Deadly Sins of Software Security. McGraw-Hill. Section:'"Sin 5: Buffer Overruns." Page 89'. Published on 2010.

© 2013 SecPod Technologies