Value-Range Analysis of C Programs: Towards Proving the Absence of Buffer Overflow Vulnerabilities

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

The use of static analysis techniques to prove the partial correctness of C code has recently attracted much attention due to the high cost of software errors - particularly with respect to security vulnerabilities. However, research into new analysis techniques is often hampered by the technical difficulties of analysing accesses through pointers, pointer arithmetic, coercion between types, integer wrap-around and other low-level behaviour. Axel Simon provides a concise, yet formal description of a value-range analysis that soundly approximates the semantics of C programs using systems of linear inequalities (polyhedra).

The analysis is formally specified down to the bit-level while providing a precise approximation of all low-level aspects of C using polyhedral operations and, as such, it provides a basis for implementing new analyses that are aimed at verifying higher-level program properties precisely. One example of such an analysis is the tracking of the NUL position in C string buffers, which is shown as an extension to the basic analysis and which thereby demonstrates the modularity of the approach.

While the book focuses on a sound analysis of C, it will be useful to any researcher and student with an interest in static analysis of real-world programming languages. In fact, many concepts presented here carry over to other languages such as Java or assembler, to other applications such as taint analysis, array and shape analysis and possibly even to other approaches such as run-time verification and test data generation.

Author(s): Axel Simon (eds.)
Edition: 1
Publisher: Springer-Verlag London
Year: 2008

Language: English
Pages: 302
Tags: Logics and Meanings of Programs; Software Engineering; Numeric Computing

Front Matter....Pages i-xxii
Introduction....Pages 1-21
A Semantics for C....Pages 23-43
Front Matter....Pages 46-46
Abstract State Space....Pages 47-70
Taming Casting and Wrapping....Pages 71-87
Overlapping Memory Accesses and Pointers....Pages 89-110
Abstract Semantics....Pages 111-124
Front Matter....Pages 126-126
Planar Polyhedra....Pages 127-146
The TVPI Abstract Domain....Pages 147-163
The Integral TVPI Domain....Pages 165-183
Interfacing Analysis and Numeric Domain....Pages 185-194
Front Matter....Pages 196-196
Tracking String Lengths....Pages 197-215
Widening with Landmarks....Pages 217-233
Combining Points-to and Numeric Analyses....Pages 235-258
Implementation....Pages 259-276
Conclusion and Outlook....Pages 277-279
Back Matter....Pages 281-300