10.19363/j.cnki.cn10-1380/tn.2016.02.006
二进制代码块:面向二进制程序的细粒度控制流完整性校验方法
控制流完整性(CFI)是一种在程序中通过保护间接转移有效减少代码注入和代码重用攻击等威胁的技术。由于二进制程序缺少源代码级别的语义, CFI策略的设定需要很谨慎。现有的面向二进制的 CFI解决方案,如BinCFI和CCFIR,虽然能够提供对二进制程序的防护能力,但它们应用的策略过于宽松,依然会受到复杂的代码重用攻击。本文提出一种新的面向二进制的CFI保护方案,称为BinCC。它可以通过静态二进制重写为x86下的二进制程序提供细粒度保护。通过代码复制和静态分析,我们把二进制代码分成几个互斥代码块。再进一步将代码中的每个间接转移块归类为块间转移或块内转移,并分别应用严格CFI策略来限制这些转移。为了评估 BinCC,我们引入新的指标来评估每种间接转移中合法目标的平均数量,以及利用 call-preceded gadgets产生ROP漏洞利用的难度。实验结果表明与BinCFI比较, BinCC显著地将合法转移目标降低了81.34%,并显著增加了攻击者绕过CFI限制实施复杂的ROP攻击的难度。另外,与BinCC可以降低大约14%的空间开销,而只提升了4%的运行开销。
控制流完整性
1
TP309.7(计算技术、计算机技术)
国家科学基金会资助#1054605,美国空军研究实验室资助# FA8750-15-2-0106,中国的国家基础研究发展计划资助#2012 CB315804,中国的国家自然科学基金资助#91418206,以及中国国家留学基金委CSC等机构出资支持。
2016-07-25(万方平台首次上网日期,不代表论文的发表时间)
共12页
61-72