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)
Cite this
- APA
- Author
- BIBTEX
- Harvard
- Standard
- RIS
- Vancouver