百度安全再次亮相国际顶级会议 NDSS'21--软件层防御幽灵攻击

2021-02-22 13:57:451815人阅读

百度安全在系统安全深耕多年,持续发表多项顶级会议论文。近日百度安全又一重磅研究成果收录安全顶级会议 NDSS'21。幽灵(Spectre) 作为开启侧信道攻击的热核时代一类漏洞,它以变种多,影响范围广而受到业界关注。它是利用现代处理器芯片预测执行机制的一类漏洞的总称。利用该类漏洞,黑客可以绕过传统的软件防御壁垒,窃取私人敏感数据,泄露内核地址空间相关信息,更甚至可以绕过虚拟机的隔离防护机制,访问其他用户的内存数据,导致其他云用户的敏感信息泄漏。百度安全联合 UC Riverside 以及 MIT 设计研发了一款基于污点分析捕获幽灵漏洞在软件层利用代码片段的工具 SpecTaint。下来我们将揭秘该工具的神奇之处。

软件层防御幽灵攻击

软件层打补丁是比较受业界追捧的一种防御 Spectre 的手段。在软件层寻找可利用的代码片段是黑客进行幽灵攻击的第一步。它结合现代处理器芯片预测执行机制的 Spectre 漏洞一起来完成攻击。软件层打补丁试图在代码层减少 Spectre 攻击面从而达到防御效果。具体来说,软件补丁是在代码层检测跟 Spectre漏洞相关的,有潜在可以被利用的代码片段,然后对该段代码片段强制序列化,使得攻击者无法利用这些 gadget 进行攻击。强制序列化就是禁用 gadget 部分的代码的预执行功能,这样会降低软件运行的整体性能。现有 gadget 扫描技术的准确性决定了被补丁后软件的运行性能。已有的 gadget 检测技术的误报率和漏报率都很高,它们检测的绝大部分 gadget 都是不具备 Spectre Gadget 的特点的。百度安全提出的基于污点分析的代码利用片段检测工具 SpecTaint 可以准确到捕获二进制代码中可以被攻击者利用的代码片段,实验证明 SpecTaint 的检测准确率高出其他工具平均30个百分点。

图片1.png

图1.幽灵攻击软件防御示意图

SpecTaint的核心技术揭秘

传统动态二进制平台可以提供比较准确的程序行为分析,但是它只支持常规的程序行为,对芯片预执行的这种硬件行为没有模拟。Spectaint 是对二进制动态分析平台做了一个额外的拓展,使其支持芯片的预执行,并且在其基础上提供了 Spectre Gadget 的行为建模和精准检测功能。具体来说,SpecTaint 的流程涉及到两种状态:软件常规行为模拟和预执行模拟。在常规模拟状态,SpecTaint 模拟执行正常程序指令流,监控其执行行为。在预执行模拟状态下,SpecTaint 将模拟预执行操作,执行原本不可能有输入触发的程序路径并监控预执行行为。SpecTaint 模拟正常程序指令流是为了增加代码覆盖率。给定一个输入,SpecTaint先进行正常指令流模拟并执行输入触发的正常路径。在执行的过程过,遇到一个分支指令,SpecTaint 将存档当前的正常执行状态,然后进入预执行模拟状态,执行其他非输入触发的路径。等到预执行指令达到预执行执行的上限,SpecTaint 将回滚之前存档的正常执行状态,然后继续执行正常路径上的指令。

图片2.png

图2.SpecTaint整体构架图

总结和展望

百度安全关注前沿安全研究,持续发表顶级文章。此次论文入选 NDSS'21,再次展现了百度安全在前沿研究的能力和国际水准。近年来百度安全已经有多篇文章发表在包括 IEEE S&P, Usenix Security, ACM CCS, NDSS, DSN, ACSAC, ICSE 等国际顶级会议和期刊。未来,百度安全也将继续深耕系统安全,继续投入车联网,云安全,智能安全等细分领域的前瞻性安全研究,在国际安全舞台上打下优秀的成绩。


详细技术细节请参照:

百度安全再次亮相安全顶级会议NDSS--研究幽灵代码利用片段检测的技术详解

0
现金券
0
兑换券
立即领取
领取成功