Sposoby wprowadzenia
Implementation
Odpowiednie platformy
Język
Name: C (Often)
Name: C++ (Often)
Class: Not Language-Specific (Undetermined)
Typowe konsekwencje
| Zakres |
Wpływ |
Prawdopodobieństwo |
Integrity Availability | DoS: Crash, Exit, or Restart
Note: Use of an index that is outside the bounds of an array will very likely result in the corruption of relevant memory and perhaps instructions, leading to a crash, if the values are outside of the valid memory area. | |
| Integrity | Modify Memory
Note: If the memory corrupted is data, rather than instructions, the system will continue to function with improper values. | |
Confidentiality Integrity | Modify Memory, Read Memory
Note: Use of an index that is outside the bounds of an array can also trigger out-of-bounds read or write operations, or operations on the wrong objects; i.e., "buffer overflows" are not always the result. This may result in the exposure or modification of sensitive data. | |
Integrity Confidentiality Availability | Execute Unauthorized Code or Commands
Note: If the memory accessible by the attacker can be effectively controlled, it may be possible to execute arbitrary code, as with a standard buffer overflow and possibly without the use of large inputs if a precise index can be controlled. | |
Integrity Availability Confidentiality | DoS: Crash, Exit, or Restart, Execute Unauthorized Code or Commands, Read Memory, Modify Memory
Note: A single fault could allow either an overflow (CWE-788) or underflow (CWE-786) of the array index. What happens next will depend on the type of operation being performed out of bounds, but can expose sensitive information, cause a system crash, or possibly lead to arbitrary code execution. | |
Zaobserwowane przykłady
| Odniesienia |
Opis |
| large ID in packet used as array index |
| negative array index as argument to POP LIST command |
| Integer signedness error leads to negative array index |
| product does not properly track a count and a maximum number, which can lead to resultant array index overflow. |
| Chain: device driver for packet-capturing software allows access to an unintended IOCTL with resultant array index error. |
| Chain: array index error (CWE-129) leads to deadlock (CWE-833) |
Potencjalne środki zaradcze
Phases : Architecture and Design
Use an input validation framework such as Struts or the OWASP ESAPI Validation API. Note that using a framework does not automatically address all input validation problems; be mindful of weaknesses that could arise from misusing the framework itself (CWE-1173).
Phases : Architecture and Design
Phases : Requirements
Phases : Operation // Build and Compilation
Phases : Operation
Phases : Implementation
Phases : Implementation
Be especially careful to validate all input when invoking code that crosses language boundaries, such as from an interpreted language to native code. This could create an unexpected interaction between the language boundaries. Ensure that you are not violating any of the expectations of the language with which you are interfacing. For example, even though Java may not be susceptible to buffer overflows, providing a large argument in a call to native code might trigger an overflow.
Phases : Architecture and Design // Operation
Run your code using the lowest privileges that are required to accomplish the necessary tasks [REF-76]. If possible, create isolated accounts with limited privileges that are only used for a single task. That way, a successful attack will not immediately give the attacker access to the rest of the software or its environment. For example, database applications rarely need to run as the database administrator, especially in day-to-day operations.
Phases : Architecture and Design // Operation
Metody wykrywania
Automated Static Analysis
Skuteczność : High
Automated Dynamic Analysis
This weakness can be detected using dynamic tools and techniques that interact with the software using large test suites with many diverse inputs, such as fuzz testing (fuzzing), robustness testing, and fault injection. The software's operation may slow down, but it should not become unstable, crash, or generate incorrect results.
Automated Dynamic Analysis
Use tools that are integrated during
compilation to insert runtime error-checking mechanisms
related to memory safety errors, such as AddressSanitizer
(ASan) for C/C++ [REF-1518].
Skuteczność : Moderate
Black Box
Black box methods might not get the needed code coverage within limited time constraints, and a dynamic test might not produce any noticeable side effects even if it is successful.
Uwagi dotyczące mapowania podatności
Uzasadnienie : This CWE entry is at the Variant level of abstraction, which is a preferred level of abstraction for mapping to the root causes of vulnerabilities.
Komentarz : Carefully read both the name and description to ensure that this mapping is an appropriate fit. Do not try to 'force' a mapping to a lower-level Base/Variant simply to comply with this preferred level of abstraction.
Powiązane wzorce ataków
| CAPEC-ID |
Nazwa wzorca ataku |
| CAPEC-100 |
Overflow Buffers
Buffer Overflow attacks target improper or missing bounds checking on buffer operations, typically triggered by input injected by an adversary. As a consequence, an adversary is able to write past the boundaries of allocated buffer regions in memory, causing a program crash or potentially redirection of execution as per the adversaries' choice. |
Notatki
This weakness can precede uncontrolled memory allocation (CWE-789) in languages that automatically expand an array when an index is used that is larger than the size of the array, such as JavaScript.
An improperly validated array index might lead directly to the always-incorrect behavior of "access of array using out-of-bounds index."
Odniesienia
REF-7
Writing Secure Code
Michael Howard, David LeBlanc.
https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223 REF-96
Top 25 Series - Rank 14 - Improper Validation of Array Index
Jason Lam.
https://web.archive.org/web/20100316064026/http://blogs.sans.org/appsecstreetfighter/2010/03/12/top-25-series-rank-14-improper-validation-of-array-index/ REF-58
Address Space Layout Randomization in Windows Vista
Michael Howard.
https://learn.microsoft.com/en-us/archive/blogs/michael_howard/address-space-layout-randomization-in-windows-vista REF-60
PaX
https://en.wikipedia.org/wiki/Executable_space_protection#PaX REF-61
Understanding DEP as a mitigation technology part 1
Microsoft.
https://msrc.microsoft.com/blog/2009/06/understanding-dep-as-a-mitigation-technology-part-1/ REF-76
Least Privilege
Sean Barnum, Michael Gegick.
https://web.archive.org/web/20211209014121/https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege REF-44
24 Deadly Sins of Software Security
Michael Howard, David LeBlanc, John Viega.
REF-64
Position Independent Executables (PIE)
Grant Murphy.
https://www.redhat.com/en/blog/position-independent-executables-pie REF-962
Automated Source Code Security Measure (ASCSM)
Object Management Group (OMG).
http://www.omg.org/spec/ASCSM/1.0/ REF-18
The CLASP Application Security Process
Secure Software, Inc..
https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf REF-1332
Prelink and address space randomization
John Richard Moser.
https://lwn.net/Articles/190139/ REF-1333
Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR
Dmitry Evtyushkin, Dmitry Ponomarev, Nael Abu-Ghazaleh.
http://www.cs.ucr.edu/~nael/pubs/micro16.pdf REF-1335
Segment Address Offset Randomization (D3-SAOR)
D3FEND.
https://d3fend.mitre.org/technique/d3f:SegmentAddressOffsetRandomization/ REF-1336
Process Segment Execution Prevention (D3-PSEP)
D3FEND.
https://d3fend.mitre.org/technique/d3f:ProcessSegmentExecutionPrevention/ REF-1337
Bypassing Browser Memory Protections: Setting back browser security by 10 years
Alexander Sotirov and Mark Dowd.
https://www.blackhat.com/presentations/bh-usa-08/Sotirov_Dowd/bh08-sotirov-dowd.pdf REF-1518
AddressSanitizer
https://clang.llvm.org/docs/AddressSanitizer.html
Zgłoszenie
| Nazwa |
Organizacja |
Data |
Data wydania |
Version |
| CLASP |
|
2006-07-19 +00:00 |
2006-07-19 +00:00 |
Draft 3 |
Modyfikacje
| Nazwa |
Organizacja |
Data |
Komentarz |
| Sean Eidemiller |
Cigital |
2008-07-01 +00:00 |
added/updated demonstrative examples |
| CWE Content Team |
MITRE |
2008-09-08 +00:00 |
updated Alternate_Terms, Applicable_Platforms, Common_Consequences, Relationships, Other_Notes, Taxonomy_Mappings, Weakness_Ordinalities |
| CWE Content Team |
MITRE |
2008-11-24 +00:00 |
updated Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2009-01-12 +00:00 |
updated Common_Consequences |
| CWE Content Team |
MITRE |
2009-10-29 +00:00 |
updated Description, Name, Relationships |
| CWE Content Team |
MITRE |
2009-12-28 +00:00 |
updated Applicable_Platforms, Common_Consequences, Observed_Examples, Other_Notes, Potential_Mitigations, Theoretical_Notes, Weakness_Ordinalities |
| CWE Content Team |
MITRE |
2010-02-16 +00:00 |
updated Applicable_Platforms, Demonstrative_Examples, Detection_Factors, Likelihood_of_Exploit, Potential_Mitigations, References, Related_Attack_Patterns, Relationships |
| CWE Content Team |
MITRE |
2010-04-05 +00:00 |
updated Related_Attack_Patterns |
| CWE Content Team |
MITRE |
2010-06-21 +00:00 |
updated Common_Consequences, Potential_Mitigations, References |
| CWE Content Team |
MITRE |
2010-09-27 +00:00 |
updated Potential_Mitigations, Relationship_Notes, Relationships |
| CWE Content Team |
MITRE |
2010-12-13 +00:00 |
updated Demonstrative_Examples, Observed_Examples, Potential_Mitigations |
| CWE Content Team |
MITRE |
2011-03-29 +00:00 |
updated Common_Consequences, Demonstrative_Examples, Weakness_Ordinalities |
| CWE Content Team |
MITRE |
2011-06-01 +00:00 |
updated Common_Consequences |
| CWE Content Team |
MITRE |
2011-06-27 +00:00 |
updated Relationships |
| CWE Content Team |
MITRE |
2011-09-13 +00:00 |
updated Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2012-05-11 +00:00 |
updated Demonstrative_Examples, Potential_Mitigations, References, Relationships |
| CWE Content Team |
MITRE |
2012-10-30 +00:00 |
updated Potential_Mitigations |
| CWE Content Team |
MITRE |
2014-02-18 +00:00 |
updated Potential_Mitigations, References |
| CWE Content Team |
MITRE |
2014-07-30 +00:00 |
updated Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2015-12-07 +00:00 |
updated Relationships |
| CWE Content Team |
MITRE |
2017-11-08 +00:00 |
updated Causal_Nature, References, Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2018-03-27 +00:00 |
updated References |
| CWE Content Team |
MITRE |
2019-01-03 +00:00 |
updated References, Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2019-09-19 +00:00 |
updated Potential_Mitigations |
| CWE Content Team |
MITRE |
2020-02-24 +00:00 |
updated Potential_Mitigations, Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2020-06-25 +00:00 |
updated Demonstrative_Examples, Potential_Mitigations, Relationships, Type |
| CWE Content Team |
MITRE |
2020-08-20 +00:00 |
updated Potential_Mitigations, Relationships |
| CWE Content Team |
MITRE |
2020-12-10 +00:00 |
updated Relationships |
| CWE Content Team |
MITRE |
2021-03-15 +00:00 |
updated References, Relationships |
| CWE Content Team |
MITRE |
2022-10-13 +00:00 |
updated References, Relationships, Taxonomy_Mappings |
| CWE Content Team |
MITRE |
2023-04-27 +00:00 |
updated Potential_Mitigations, References, Relationships |
| CWE Content Team |
MITRE |
2023-06-29 +00:00 |
updated Mapping_Notes |
| CWE Content Team |
MITRE |
2025-09-09 +00:00 |
updated Demonstrative_Examples, Functional_Areas |
| CWE Content Team |
MITRE |
2025-12-11 +00:00 |
updated Detection_Factors, References, Relationships |