利用 MARDU 实现实用的代码重随机化
密码学与安全
2019-09-23 v1 操作系统
摘要
数据执行保护(DEP)和地址空间布局随机化(ASLR)等防御技术是早期防止原始代码注入和返回导向编程(ROP)攻击的典范。值得注意的是,这些技术以一种优雅且实用的方式做到了这一点,始终将性能和可扩展性放在首位,使其成为少数被广泛采用的防御技术之一。随着代码重用攻击的复杂性从 JIT-ROP 演变到 BROP 和数据攻击,防御技术似乎陷入了不惜一切代价进行防御的隧道视野,在务实的防御设计中迷失了方向。有些技术范围太窄,无法提供全面的覆盖,而另一些则带来了不切实际的开销,让用户宁愿冒险以维持性能预期。我们提出了 Mardu,一种按需的全系统重随机化技术,它改进了重随机化,并重新聚焦于同时拥抱防御技术的三个关键特性:安全性、性能和可扩展性。我们通过实现反应式且可扩展的多样化,而非持续或一次性的多样化,来实现代码共享与多样化;同时,利用硬件支持的可执行内存(XoM)和影子栈防止内存泄露;这种结合与赋能进一步最小化了所需的跟踪、修补成本和内存开销。Mardu 的评估显示,在计算密集型(SPEC 上为 5.5%)和实际应用(NGINX 上为 4.4%)中,其性能和可扩展性均具有较低的平均开销。通过这种设计,Mardu 证明了以实际成本实现强大且可扩展的安全保障是可能的,从而鼓励部署。
引用
@article{arxiv.1909.09294,
title = {Making Code Re-randomization Practical with MARDU},
author = {Christopher Jelesnianski and Jinwoo Yom and Changwoo Min and Yeongjin Jang},
journal= {arXiv preprint arXiv:1909.09294},
year = {2019}
}