通过部分可重编译反编译自动缓解二进制程序中的漏洞
密码学与安全
2023-06-13 v2 软件工程
摘要
漏洞难以定位与修复,尤其在无源代码且需进行二进制补丁时。人工方法耗时、需大量专业知识,且无法适应新漏洞被发现的速度。自动化方法是一种有吸引力的替代方案,我们提出部分可重编译反编译(PRD)。PRD 将可疑二进制函数提升为源代码,便于分析、修订或审查,并利用源代码级与二进制级技术生成补丁二进制。尽管反编译与重编译通常无法作用于整个二进制,我们的方法之所以成功,是因为其仅限于少数函数,例如由我们的二进制故障定位所识别的函数。我们评估了这些假设,发现无任何语法或编译限制时,70%–89% 的单个函数可成功反编译并重编译,且类型恢复充分。相比之下,仅 1.7% 的完整 C 二进制成功。当反编译成功时,PRD 在 92.9% 的情况下生成测试等价二进制。此外,我们在两种情境下评估 PRD:融合源代码级自动程序修复(APR)方法的全自动化流程;人工编辑的源代码级修复。在 DARPA 网络大挑战(CGC)二进制上评估时,我们发现启用 PRD 的 APR 工具仅基于二进制运行,表现与全源代码工具相当,有时更优,共同缓解了 148 个场景中的 85 个,该成功率与这些工具在可访问完整源代码时一致。PRD 取得了与获胜 CGC 作品相似的成功率,有时发现了比顶级 CGC 团队更高质量的缓解措施。为通用性,我们的评估包含两种独立开发的 APR 工具以及 C++、Rode0day 和真实世界二进制。
引用
@article{arxiv.2202.12336,
title = {Automatically Mitigating Vulnerabilities in Binary Programs via Partially Recompilable Decompilation},
author = {Pemma Reiter and Hui Jun Tay and Westley Weimer and Adam Doupé and Ruoyu Wang and Stephanie Forrest},
journal= {arXiv preprint arXiv:2202.12336},
year = {2023}
}