SafeLLVM:无 ROP 小工具的 LLVM
密码学与安全
2023-11-03 v3 编程语言
摘要
内存安全是安全和健壮软件系统的基石,因为它能防止广泛的漏洞和利用技术。其中,我们关注返回导向编程(Return-Oriented Programming, ROP)。ROP 的工作方式如下:攻击者通过内存破坏攻击控制程序的执行流,然后利用程序中已有的代码片段(称为“小工具”,gadgets)来实现攻击者的预期效果。在本文中,我们介绍 SafeLLVM,一种最小化使用 LLVM 基础设施编译的 x86-64 二进制文件中小工具数量的方法。基于先前工作中概述的技术,我们在 LLVM 编译器的后端中实现了一系列 pass 以最小化存在的小工具数量,从而防止 ROP 攻击。我们通过编译若干真实世界的应用(包括 cJSON、zlib、curl 和 mimalloc)来评估我们的方法。结果表明,我们的解决方案能够防止对使用 SafeLLVM 编译的二进制文件任何形式的 ROP,同时保持与原二进制文件相同的功能。
引用
@article{arxiv.2305.06092,
title = {SafeLLVM: LLVM Without The ROP Gadgets!},
author = {Federico Cassano and Charles Bershatsky and Jacob Ginesin and Sasha Bashenko},
journal= {arXiv preprint arXiv:2305.06092},
year = {2023}
}