返回
CleanStack: A new dual-stack for defending against stack-based memory corruption attacks
DOI:10.1016/j.cose.2026.105056.png)
摘要
En 中文
栈内存损坏漏洞长期以来被攻击者利用以执行任意代码或执行未经授权的内存操作。已引入多种防御机制以缓解栈内存错误,但它们通常专注于特定攻击类型(如控制流劫持或非控制数据攻击),带来显著性能开销或受限于兼容性。本文提出CleanStack,一种高效、高兼容性且全面的栈保护机制。CleanStack将受外部输入影响的栈对象与其他安全栈对象隔离,从而防止攻击者通过受控栈对象修改返回地址。此外,通过在Unclean Stack中随机化受污染栈对象的位置,CleanStack通过阻止攻击者预测栈布局来缓解非控制数据攻击。CleanStack的关键组件是识别受污染栈对象。我们分析了静态程序分析和启发式方法用于此目的。为最大化兼容性,我们采用启发式方法并在LLVM编译器框架内实现CleanStack,将其应用于SPEC CPU2017基准测试和一个实际应用。我们的安全性评估表明,CleanStack通过提供具有隔离和随机化的双栈系统,显著降低了栈内存错误的可利用性。性能评估结果显示,CleanStack在SPEC CPU2017基准测试中仅引入1.73%的执行开销,内存开销仅为0.04%。与现有栈保护技术相比,CleanStack提供更广泛的保护覆盖范围,同时保持低运行时开销和与现有编译器基础设施的良好兼容性,使其成为实用且有效的栈安全解决方案。
Keyword:
Memory corruption attacks
Stack
Randomization
Non-control-data attacks
期刊
C
IF:
5.4
论文数:
295
被引数:
0
机构
引用论文
暂无论文信息

