一句话:提出 Prober,通过静态分析标记数组相关调用栈并结合页保护,在生产环境低开销检测和阻止堆溢出。
堆溢出问题历经数十年研究仍未完全解决。论文提出 Prober,一个面向生产环境的堆溢出检测与预防系统。其关键观察是:分析数十个真实缺陷后发现,堆溢出均与数组有关;因此 Prober 只关注数组相关的堆对象,而非全部堆对象。它在编译期利用静态分析标记所有易受影响的调用栈,在运行期借助页保护检测非法访问,并集成多种已有方法来保证检测效率。评估显示其平均性能开销仅约 1.5%,几乎可忽略;Prober 既能及时阻止潜在攻击,又能报告可指导修复的故障指令,具备生产部署条件。
Heap-based overflows are still not completely solved even after decades of research. This paper proposes Prober, a novel system aiming to detect and prevent heap overflows in the production environment. Prober leverages a key observation based on the analysis of dozens of real bugs: all heap overflows are related to arrays. Based on this observation, Prober only focuses on array-related heap objects, instead of all heap objects. Prober utilizes static analysis to label all susceptible call-stacks during the compilation, and then employs the page protection to detect any invalid accesses during the runtime. In addition to this, Prober integrates multiple existing methods together to ensure the efficiency of its detection. Overall, Prober introduces almost negligible performance overhead, with 1.5% on average. Prober not only stops possible attacks on time, but also reports the faulty instructions that could guide bug fixes. Prober is ready for deployment due to its effectiveness and low overhead.