paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Practical Object-Level Sanitizer with Aggregated Memory Access and Custom Allocator

实用的对象级 Sanitizer:聚合内存访问与自定义分配器
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE)2025匹配度 2/10 · 该论文聚焦运行时内存安全检测(sanitizer)与编译器工程优化,属于程序分析与PL系统方向,但并非用户核心关注的静态分析、LLM/Agent 与程序分析交叉、浮点程序分析或贝叶斯程序分析。其方法不涉及 LLM/Agent,也不以静态分析或形式化验证为核心,因此仅与广义程序分析有很弱的关联。引用 0 inbox
Xiaolei Wang, Ruilin Li, Bin Zhang, Chao Feng, Chaojing Tang
crossref: 2026-09-12

AI 速览

一句话:提出 OLASan,通过在函数级聚合同一对象的内存访问并配合自定义内存标记与分配器,实现低开销且精确的对象级内存违规检测。

现有 sanitizer 在预发布阶段的缺陷检测中难以兼顾性能与精度,根源在于过度依赖影子内存以及运行时大量内存访问检查,细粒度检测时开销尤为严重。本文提出对象级地址 sanitizer OLASan,其核心思想是关注内存访问与对象之间的关联:在函数级别将同一对象的多次内存访问聚合起来,按需执行有针对性的检查,从而避免在运行时检查绝大多数内存访问。OLASan 刻画了多种内存访问模式以识别可聚合的访问,并借助自定义内存标记(memory tagging)实现内存安全检查。作者在 LLVM 框架上实现了 OLASan,并在 SPEC CPU 基准上评测。结果表明,OLASan 的运行时开销分别比 ASan、ASan-- 和 GiantSan 低 51.18%、25.20% 和 6.52%;在 Juliet 测试集上,借助自定义内存标记首次实现零漏报;对真实漏洞的检测能力也与现有方法相当。

问题
现有 sanitizer 难以在性能开销与检测精度之间取得平衡,过度依赖影子内存和大量运行时检查,细粒度检测(包括对象内溢出)时开销尤其高昂。
方法
OLASan 在函数级别聚合对同一对象的多次内存访问,刻画内存访问模式以识别可聚合访问,并按需执行针对性检查;同时结合自定义内存标记与自定义分配器实现对象级内存安全检查,并在 LLVM 上实现。
评估
在 SPEC CPU 基准上与 ASan、ASan--、GiantSan 对比运行时开销,并在 Juliet 测试集与真实漏洞上评估检测精度与漏报情况。
原文摘要(Abstract)

To mitigate potential memory safety vulnerabilities, recently there have been significant advances in sanitizers for pre-production bug detection. However, the limited inability to balance performance and detection accuracy still holds. The main reason is due to excessive reliance on shadow memory and a large number of memory access checks at runtime, incurring a significant performance overhead (if fine-grained memory safety detection is performed, the overhead will be even greater). In this paper, we propose a novel Object-Level Address Sanitizer OLASan to reduce performance overhead further while implementing accurate memory violations (including intra-object overflow) detection. Unlike previous sanitizers ignoring the correlation between memory access and objects, OLASan aggregates multiple memory accesses of same object at function level to perform on-demand targeted sanitization, thus avoiding examining most memory accesses at runtime. Specifically, OLASan characterizes various memory access patterns to identify those which can be aggregated, and implements memory safety checks with customized memory tagging. We implement OLASan atop the LLVM framework and evaluate it on SPEC CPU benchmarks. Evaluations show that OLASan outperforms the state-of-the-art methods with 51.18%, 25.20% and 6.52% less runtime overhead than ASan, ASan-- and GiantSan respectively. Moreover, aided by customized memory tagging, OLASan achieves zero false negatives for the first time when testing Juliet suites. Finally, we confirm that OLASan also offers comparable detection capabilities on real bugs.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot8877,
  title = {Practical Object-Level Sanitizer with Aggregated Memory Access and Custom Allocator},
  author = {Xiaolei Wang and Ruilin Li and Bin Zhang and Chao Feng and Chaojing Tang},
  booktitle = {ICSE},
  year = {2025},
  doi = {10.1109/icse55347.2025.00213}
}