一句话:提出源级插桩方法,在运行时检测 C 程序内存错误,规避 IR/二进制插桩的优化敏感、平台依赖与 DO-178C 合规问题。
C 语言中不安全的内存操作常导致内存错误,进而造成静默数据损坏、安全漏洞和程序崩溃。现有运行时内存错误检测工具多采用 IR 级或二进制级插桩,但这类非源级插桩存在三个固有限制:优化敏感性、平台依赖性以及不符合 DO-178C 标准。优化敏感性使工具不得不在性能与有效性之间权衡,例如以 -O0 编译牺牲性能换取有效性,或以 -O3 编译牺牲有效性换取性能。本文提出源级插桩的运行时内存错误检测方法,旨在从源头避免上述限制。摘要未给出具体实现细节与实验评估结果。
The unsafe language features of C, such as low-level control of memory, often lead to memory errors, which can result in silent data corruption, security vulnerabilities, and program crashes. Dynamic analysis tools, which have been widely used for detecting memory errors at runtime, usually perform instrumentation at the IR-level or binary-level. However, their underlying non-source-level instrumentation techniques have three inherent limitations: optimization sensitivity, platform dependence and DO-178C non-compliance. Due to optimization sensitivity, these tools are used to trade either performance for effectiveness by compiling the program at -O0 or effectiveness for performance by compiling the program at a higher optimization level, say, -O3.
DOI 原文 ·
@inproceedings{paperbot5349,
title = {Detecting memory errors at runtime with source-level instrumentation},
author = {Zhe Chen and Junqi Yan and Shuanglong Kan and Ju Qian and Jingling Xue},
booktitle = {ISSTA},
year = {2019},
doi = {10.1145/3293882.3330581}
}