补丁不给力,Windows漏洞 (CVE-2020-0986) 沦为新0day,或于2021年修复
当时,卡巴斯基实验室的研究人员发现,攻击者可结合利用尚为 0day 的CVE-2020-0986和 IE 浏览器中的0day,实现提升权限,进而远程执行代码。如今,谷歌 Project Zero 团队的安全研究员 Maddie Stone 发现,攻击者仍可通过发送一个偏移量而非指针的方式,触发CVE-2020-0986,提升至内核权限。
Stone 指出,CVE-2020-0986 是一个任意指针解引用漏洞,可导致攻击者控制 memcpy 函数的 “src” 和 “dest” 指针。微软给出的补丁不正确的原因在于,它将指针修改为偏移量,因此该函数的参数仍可被控制。
Stone 在博客文章中指出,“完整性较低的进程可以将 LPC 信息发送给 splwow64.exe(中等完整性)并在 splwow64 内存空间中获得 write-what-where 原语。攻击者控制该目标、复制的内容以及通过memcpy 调用复制的字节数。目标指针计算的偏移量仅限制为:
Offset <= 0x7FFFFFFF
Offset + perceived size of structure <= 0x7FFFFFFF
Splwow64 将 LPC 信息传递给 GdiPrinterThunk。该易受攻击的 memcpy 位于信息 0x6D 中。
CVE-2020-0986 和 CVE-2020-17008 的唯一不同之处在于,对于前者而言,攻击者发送了一个指针,而对于后者而言,攻击者发送的是一个偏移量。
为证明微软发布补丁后,利用仍然可能实现,Stone 发布了改自卡巴斯基实验室的 PoC 代码,同时还给出了如何正确运行 PoC 代码的指令。Stone 指出,PoC 所需要做的是两次触发该漏洞:“首先泄露存储信息并用于生成指针而添加的偏移量所在的堆地址,然后获得 write-what-where 原语。“
完整 PoC 文件可见谷歌博客文章(见原文链接)。
微软于9月24日收到谷歌提交的漏洞报告并在一天之后确认问题存在,分配编号 CVE-2020-17008。微软本计划于2020年11月发布补丁,但由于在测试阶段出现问题,因此将推迟到2020年1月12日补丁星期二发布。
谷歌Project Zero 团队规定的漏洞披露期限为90天,且宽限期为14天。由于微软在1月6日之前无法提供补丁,因此这两个最后期限均不满足。
另外,如 Stone 所言,攻击者过去已利用且非常熟悉该漏洞,因此如果修复方案不正确,会再次利用它。
我偶然发现一个严重 0day,影响 Win7 和 Server 2008 R2,微软未发补丁(详情)
https://www.bleepingcomputer.com/news/security/windows-zero-day-with-bad-patch-gets-new-public-exploit-code
https://bugs.chromium.org/p/project-zero/issues/detail?id=2096
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。