一句话:提出 Safe Sulong:在高层语言解释器中自动检查 C 内存访问,发现现有工具遗漏的 bug。
该论文关注 C 语言中的内存错误(如缓冲区溢出)仍呈上升趋势的问题。现有动态 bug 查找工具基于底层机器执行模型,以 ad-hoc 方式插入检查,容易遗漏边界情况。作者提出一种在程序执行期间查找 bug 的新方法:核心是用高层语言编写的解释器自动执行边界、NULL 和类型等检查,并将 C 数据结构映射到高层语言的数据结构,使访问自动受检并暴露 bug。他们实现了名为 Safe Sulong 的工具,并评估表明它能发现当前先进工具遗漏的 bug,例如对 main 函数参数的越界访问。
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 ad-hoc 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.
DOI 原文 ·
@inproceedings{paperbot4291,
title = {Sulong, and Thanks for All the Bugs},
author = {Manuel Rigger and Roland Schatz and René Mayrhofer and Matthias Grimmer and Hanspeter Mössenböck},
booktitle = {ASPLOS},
year = {2018},
doi = {10.1145/3173162.3173174}
}