Abstract
In C, memory errors, such as buffer overflows, are among the most dangerous software errors; as we show, they are still on the rise. Current dynamic bug-finding tools that try to detect such errors are based on the low-level execution model of the underlying machine. They insert additional checks in an adhoc fashion, which makes them prone to omitting checks for corner cases. To address this, we devised a novel approach to finding bugs during the execution of a program. At the core of this approach is an interpreter written in a high-level language that performs automatic checks (such as bounds, NULL, and type checks). By mapping data structures in C to those of the high-level language, accesses are automatically checked and bugs discovered. We have implemented this approach and show that our tool (called Safe Sulong) can find bugs that state-of-the-art tools overlook, such as out-of-bounds accesses to the main function arguments.
Original language | English |
---|---|
Title of host publication | Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems |
Place of Publication | New York |
Publisher | ACM |
Pages | 377-391 |
Number of pages | 15 |
ISBN (Print) | 978-1-4503-4911-6 |
DOIs | |
Publication status | Published - 2018 |
Fields of science
- 102 Computer Sciences
- 102016 IT security
JKU Focus areas
- Engineering and Natural Sciences (in general)