|
|
|
|
CWE-463 Individual Dictionary Definition (Draft 9)
Weakness ID
| Status: Incomplete 463 (Weakness Base) | | Description | Summary The accidental deletion of a data-structure sentinel can cause serious programming logic
problems. | | Common Consequences | Availability: Generally this error will cause the data structure to not work
properly. Authorization: If a control character, such as NULL is removed, one may cause
resource access control problems. | | Potential Mitigations | Pre-design: Use a language or compiler that performs automatic bounds checking. Design: Use an abstraction library to abstract away risky APIs. Not a complete
solution. Pre-design through Build: Compiler-based canary mechanisms such as StackGuard,
ProPolice and the Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
checking, it is not a complete solution. Operational: Use OS-level preventative functionality. Not a complete
solution. | Demonstrative Examples | C/C++ Example: char *foo; int counter; foo=malloc(sizeof(char)*10); for (counter=0;counter!=14;counter++) { foo[counter]='a'; printf("%s\n",foo); } | | Context Notes | Often times data-structure sentinels are used to mark structure of the data structure.
A common example of this is the null character at the end of strings. Another common example is
linked lists which may contain a sentinel to mark the end of the list. It is, of course dangerous
to allow this type of control data to be easily accessible. Therefore, it is important to protect
from the deletion or modification outside of some wrapper interface which provides safety. | | Relationships | | | Source Taxonomies | CLASP - Deletion of data-structure sentinel | | Applicable Platforms | C C++ |
|