从二进制中选择模式类似于 CVE-1337-Days 的漏洞
摘要
静态代码审查是发现漏洞变体和利用原语的有效方法,但静态分析最具挑战性的两个任务在于:从海量不同类型的漏洞中高效提取代码模式,以及从大量不同模块中高效搜索代码模式,尤其是对于像 Windows 这样的闭源软件。
本次演讲将讨论我们针对这两个挑战的实践与经验,主要涵盖我们如何针对不同的漏洞类型和利用原语提取四种独特的代码模式,以及如何借助我们的新型二进制代码模式搜索工具 Leviathan,在 Windows 上自动发现漏洞和利用原语。
在本次演讲中,我们重点介绍四种独特的模式,用于发现经典的文件劫持漏洞、重解析点(reparse point)内存破坏漏洞、ACL 覆盖逻辑漏洞,以及针对 Windows 上 RDP 利用的池喷射(pool spray)原语。具体来说,在 ACL 覆盖模式部分,我们展示了如何在 Hyper-V 中发现一个有趣的 0-day 逻辑漏洞,该漏洞源自我们在 Pwn2Own 2021 中使用的漏洞;它最初被 Microsoft 拒绝,但最终在我们提交了新的攻击向量后,被认为属于补丁修复范围,甚至有资格获得漏洞奖励计划。我们将揭晓其背后的完整故事。另外值得一提的是,在池喷射原语模式部分,我们展示了如何为 RDP 利用找到三个独特且通用的池喷射原语。它们可用于众所周知的 RDP 漏洞 BlueKeep(CVE-2019-0708),并且与所有其他公开的利用技术都不同。每个案例中的全部细节,包括漏洞模型定义、漏洞模式提取、代码查询构建、结果审查以及 PoC 制作,都会涵盖。
此外,我们还将介绍一个新的代码查询语言工具,旨在通过二进制中的代码模式自动发现漏洞和利用原语。该工具基于 IDA Pro 的 Hexray ctree API 以及我们在此基础上构建的核心代码模式搜索原语,不仅具备污点跟踪和跨二进制代码路径追踪等功能,还提供 SQL 查询接口以简化整个流程。随心所欲地从二进制中选取你想要的漏洞和利用原语吧!