CVE-2020-17008 PoC公開
今年6月,微軟發布了補丁來修復CVE-2020-0986漏洞。CVE-2020-0986漏洞漏洞是Windows操作系統中的漏洞,攻擊者利用該漏洞可以將權限提升到kernel 級別。但微軟發布的補丁卻沒有完全修復該漏洞。研究人員發現黑客5月的PoC 代碼仍然可以使用,并且有其他研究人員還公開了其他的PoC代碼。
新的老漏洞
谷歌Project Zero研究人員Stone發現微軟6月份發布的補丁并沒有修復該漏洞,只要做一些調整仍然可以利用該漏洞。5月的時候,該漏洞主要被用來進行權限提升,并和一個用于遠程代碼執行的IE漏洞組合使用。那時候,這2個漏洞都屬于0 day漏洞。
Stone稱攻擊者可以通過發送偏移量而不是指針來觸發CVE-2020-0986漏洞,將權限提升到kernel級別。
在推特上,研究人員稱該漏洞本來是一個任意指針間接引用漏洞,攻擊者利用該漏洞可以控制指向memcpy函數的src和dest 指針。
微軟發布的補丁將指針修改為偏移量,但是函數的參數仍然是可以被控制的,因此該漏洞仍然可以被利用。

目前該漏洞的新CVE編號為CVE-2020-17008,研究人員在技術報告中介紹了如何觸發該漏洞,詳見https://bugs.chromium.org/p/project-zero/issues/detail?id=2096
簡單來說,低完整性的進程可以發送LPC消息給splwow64.exe(中等完整性),并獲得splwow64 內存空間的write-what-where 原語。攻擊者可以控制目的地址、被復制的內容、通過memcpy 調用復制的字節數。目的指針計算的偏移量受限于:
- Offset <= 0x7FFFFFFF
- Offset + perceived size of structure <= 0x7FFFFFFF
- Splwow64可以將LPC 消息傳遞給GdiPrinterThunk。有漏洞的memcpy就在消息0x6D中。
PoC
為證明微軟發布CVE-2020-0986漏洞補丁后,仍然可以利用,stone根據Kaspersky發布的CVE-2020-0986 漏洞PoC 修改并發布了CVE-2020-17008漏洞的PoC代碼,參見https://bugs.chromium.org/p/project-zero/issues/detail?id=2096
研究人員介紹說該PoC觸發了該漏洞2次,第一次是泄露消息存儲和偏移量加的堆地址來生成指針,然后進行write-what-where 操作。
時間線
微軟在9月24日收到漏洞報告,隨后確認該漏洞,并分配CVE編號CVE-2020-17008。微軟計劃于2020年11月發布該漏洞的補丁,但是在測試階段出現了問題,因此決定推后到1月的微軟補丁日發布,即2021年1月12日。
Project Zero的漏洞公開政策是90天,如果需要更多時間來推送補丁的話可以延長14天。由于微軟不能在1月6日之前發布補丁,且2個deadline都過了,所以研究人員決定公開該漏洞。
此外,Stone稱攻擊者已經開始利用該漏洞了,所以如果此次發布的補丁不是完全有效,攻擊者可能會再次利用該漏洞。
更多技術細節參見:https://bugs.chromium.org/p/project-zero/issues/detail?id=2096
本文翻譯自:https://www.bleepingcomputer.com/news/security/windows-zero-day-with-bad-patch-gets-new-public-exploit-code/如若轉載,請注明原文地址。