卡罗琳·蒂斯(Caroline Tice)、汤姆·罗德(Tom Roeder)和彼得·科林伯恩(Peter Collingbourne),谷歌公司。;斯蒂芬·切考韦(Stephen Checkoway),约翰·霍普金斯大学;乌尔法尔·埃尔林森、路易斯·洛扎诺和杰夫·派克,谷歌公司。
约束动态控制传输是缓解软件漏洞的常用技术。这种防御被广泛而成功地用于保护返回地址和堆栈数据;因此,当前的攻击通常会破坏vtable和函数指针,从而破坏控制流图中的前边缘(间接跳转或调用)。可以使用控制流完整性(CFI)保护前向边缘,但迄今为止,CFI实现一直是基于不切实际的假设或临时启发式技术的研究原型。为了被广泛采用,CFI机制必须集成到生产编译器中,并与软件工程方面(如增量编译和动态库)兼容。
本文介绍了满足上述要求的GCC和LLVM的细粒度、前沿CFI实施和分析的实现。对应用于SPEC CPU2006基准测试和Chromium web浏览器通用基准测试的这些机制的安全性、性能和资源消耗的分析和评估表明了我们方法的实用性:这些细粒度CFI机制的开销明显低于最近的学术CFI原型。在工业编译器框架中实现CFI也导致了对设计权衡和实际挑战的深入了解,例如动态加载。
USENIX致力于开放访问我们活动上展示的研究。活动开始后,所有人都可以免费获得论文和会议记录。活动结束后发布的任何视频、音频和/或幻灯片也免费向所有人开放。支持USENIX以及我们对开放存取的承诺。
下载音频