13 December 2006
Compiled by Jim Moore
During and after meeting #3, OWGV and various members of OWGV, worked on a template for language-independent descriptions of vulnerabilities. This document captures some of the various versions.
This is simply an example. It comes from [N0048]:
SM 004 Arrays Arrays consist of a set of storage for replicated data together with possibly a set of bounds for each dimension. The major issues for language systems for arrays are as follows: Static or dynamic bounds:
|
This is a revised example done by Steve Michell following some initial discussion. It comes from [N0054]:
SM 004 Arrays Another vulnerability can occur when other techniques such as direct pointers that rely upon knowledge of the representation provided by the implementation are used. Such techniques are problematic for tools and for human review and should be avoided. |
During the meeting, we considered Steve's revised version and performed some editing. The fields in [square brackets] are intended to describe the template.
[Identifier] SM 004 [Brief Title] Out of Bounds Array Element Access [What is the application vulnerability?] Unpredictable behaviour can occur when accessing the elements of an array outside the bounds of the array. [What are the possible ways to avoid the vulnerability?] The vulnerability can be avoided by not using arrays, by using whole array operations, by not attempting access beyond the bounds of the array, or by catching erroneous accesses when they occur. The compiler might generate appropriate code, the run-time system might perform checking or the programmer might explicitly code appropriate checks. [What is the mechanism of the failure? Or Why is this bad?] blah, blah, blah
|
After the meeting, Dan Nagle, Derek Jones, and Jim Moore produced this version. (Jim filled in some details afterward on his own.)
[Identifier] SM 004 [Brief Title] Out of Bounds Array Element Access [What is the application vulnerability?] Unpredictable behaviour can occur when accessing the elements of an array outside the bounds of the array. [What is the mechanism of the failure?] Arrays are defined, perhaps statically, perhaps dynamically, to have given bounds. In order to access an element of the array, index values for one or more dimensions of the array must be computed. If the index values does not fall within the defined bounds of the array, then access might occur to the wrong element of the array, or access might occur to storage that is outside the array. [What are the possible ways to avoid the vulnerability?] The vulnerability can be avoided by not using arrays, by using whole array operations, by checking and preventing access beyond the bounds of the array, or by catching erroneous accesses when they occur. The compiler might generate appropriate code, the run-time system might perform checking, or the programmer might explicitly code appropriate checks. Assumed variations among languages:
Avoiding the vulnerability or mitigating its effects:
|