#c++

共收录 1 条相关安全情报。

← 返回所有主题
👥 作者: Eli Davis, Eric Lahtinen, Michael Gordon

本文提出 PTSan,一种基于 LLVM 的内存安全 sanitizer,旨在为 C/C++ 提供实用的指针对象(pointer-object)权威性检查。传统位置型 sanitizer(如 ASan)检测能力有限,而指针型 sanitizer 虽然能提供更强保证,但因过高的开销和兼容性问题难以在生产环境部署。PTSan 通过在每个指针的高位比特中存储对象标识符(object ID),并在固定大小的运行时表中保存对象的边界信息,从而实现了低开销、对优化器友好且兼容通用硬件的设计。该方案牺牲了有限的活动对象数量预算,换取了性能提升。由于标识符随指针值传播,LLVM 的常规数据流分析即可传递元数据,无需显式的每条指针元数据指令。元数据查找与检查执行分离后,两者均以 LLVM IR 形式暴露,从而支持检查提升、消除、合并,以及兼容性标签剥离(用于解决高位比特被用于其他目的的指针)的全函数最小割放置。在支持 Intel Linear Address Masking (LAM) 的硬件上,剩余的标签剥离操作可被完全消除。在 SPEC CPU 2017 上,PTSan 在 x86-64 上的几何平均开销为 57.2%(启用 LAM 后降至 46.4%),在 ARM64 上为 54.7%,在更接近应用的 LLVM MultiSource 套件上为 31.5%。这约为先前具有类似指针对象权威性保证的系统发布开销的三分之一,同时保持了独立内存安全测试套件所测量的跨对象、非对象和时间性检测覆盖率。其物理内存开销几乎与原生无异,这对内存成本成为首要限制的生产部署至关重要。文章还通过真实服务器和安全工作负载展示了实际开销。结果表明,PTSan 将实用的指针型内存安全纳入仅需重新编译的 sanitizer 部署模型,在不引入兼容性问题的情况下大幅降低了性能开销。

💡 推荐理由: 内存安全漏洞是C/C++最主要的漏洞来源。PTSan在保持强检测能力的同时将开销降至与现有生产级sanitizer相当,有望推动指针型内存安全机制的广泛采纳。

🎯 建议动作: 研究跟进

排序因子: 来自 arXiv 其他板块 (+2) | Community 数据源 (+1) | LLM 评分加成 (+0.5)