SAFER: Efficient and Error-Tolerant Binary Instrumentation

SAFER: Efficient and Error-Tolerant Binary Instrumentation
复制标题

DOI:
--
复制
发表时间:
2023
期刊:
--
影响因子:
--
通讯作者:
S. Priyadarshan;Huan Nguyen;Rohit Chouhan;R. Sekar
S. Priyadarshan;Huan Nguyen;Rohit Chouhan;R. Sekar
中科院分区:
其他
文献类型:
--
作者:
S. Priyadarshan;Huan Nguyen;Rohit Chouhan;R. Sekar

文献摘要

相似文献

二进制指令插入的最新进展一直集中在性能上。通过静态转换代码以避免额外的运行时操作,Egalito和RetroWite等系统实现了几乎为零的开销。这些静态变换的安全性依赖于几个假设:(A)无错误和完全反汇编,(B)独占使用与位置无关的代码,以及(C)没有误报和漏报的码字间标识。违反这些假设可能会导致受检测的程序崩溃,或者更糟糕的是,会出现延迟故障,从而损坏数据或危及安全性。许多早期的二进制指令插入技术(例如,DynamoRio、Pin和BinCFI)最小化了这种假设,但要付出的代价是高得多的开销,特别是对于间接调用密集型(例如,C++)应用程序。因此,一个悬而未决的研究问题是,早期作品的安全效益是否可以与近期作品的性能效益相结合。我们对这个问题的回答是肯定的,提出了一种新的检测技术,该技术(A)允许使用依赖于位置的代码以及常见的反汇编和静态分析错误,并且(B)在运行时检测假设违规,以免它们导致未定义的行为。我们的方法为正常关闭或恢复提供了故障-崩溃原语。我们在不牺牲性能的情况下实现了安全的检测,引入了大约2%的∼低开销。
Recent advances in binary instrumentation have been focused on performance. By statically transforming the code to avoid additional runtime operations, systems such as Egalito and RetroWrite achieve near zero overheads. The safety of these static transformations relies on several assumptions: (a) error-free and complete disassembly, (b) exclusive use of position-independentcode,and(c)codepointeridentification thatisfree of both false positives and false negatives. Violations of these assumptions can cause an instrumented program to crash, or worse, experience delayed failures that corrupt data or compromise security. Many earlier binary instrumentation techniques (e.g., DynamoRio, Pin, and BinCFI) minimized such assumptions, but the price to be paid is a much higher overhead, especially for indirect-call-intensive (e.g., C++) applications. Thus, an open research question is whether the safety benefits of the earlier works can be combined with the performance benefits of recent works. We answer this question in the affirmative by presenting a new instrumentation technique that (a) tolerates the use of position-dependent code and common disassembly and static analysis errors, and (b) detects assumption violations at runtime before they can lead to undefined behavior. Our approach provides a fail-crash primitive for graceful shutdown or recovery. We achieve safe instrumentation without sacrificing performance, introducing a low overhead of about ∼ 2%.