Windows 10 中存在一個(gè)漏洞,如遭利用則可繞過 Windows 鎖定策略并導(dǎo)致任意代碼執(zhí)行。微軟在收到報(bào)告后的90天內(nèi)仍未修復(fù)漏洞。
谷歌 Project Zero 團(tuán)隊(duì)的安全研究員 James Forshaw 指出,在啟用用戶模式完整性 (UMCI) 的系統(tǒng)上,攻擊者可利用一個(gè) .NET 漏洞繞過針對(duì) COM Class 初始化的 Windows 鎖定策略檢查。
該問題已在 Windows 10S 上復(fù)現(xiàn),但據(jù)稱影響所有啟用 UMCI 的 Windows 10 版本。
漏洞 POC 已發(fā)布
安全研究人員解釋稱,這個(gè)漏洞存在于當(dāng)實(shí)例化 .NET COM 對(duì)象時(shí),WLDP COM Class鎖定策略的行為方式。
該策略中包含8到50個(gè) COM 對(duì)象的硬編碼列表,這些對(duì)象可以讓開發(fā)腳本引擎實(shí)例化。因此,即使有人能夠在一個(gè)受允許的 COM CLSID 下注冊(cè)一個(gè)現(xiàn)有的 DLL,好的實(shí)現(xiàn)應(yīng)該檢查傳遞給 DllGetObject 的 CLSID 是否符合以上提及的內(nèi)部列表并阻止攻擊。
研究人員發(fā)現(xiàn),當(dāng) .NET COM 對(duì)象被實(shí)例化時(shí),傳遞到 DllGetClassObject 的 CLSID 也僅用于在 HKCR 中查找注冊(cè)信息,CLSID 被拋棄而 .NET 對(duì)象得以創(chuàng)建。
因此,攻擊者可添加注冊(cè)表項(xiàng)(包括 HKCU 的注冊(cè)表項(xiàng)),在受允許的 CLSID 下加載一個(gè)任意的 COM 可見類。
研究人員指出,“它會(huì)直接影響類策略,因?yàn)樗试S攻擊者添加注冊(cè)表項(xiàng)(包括 HKCU 的注冊(cè)表項(xiàng)),而后者在受允許的 CLSID 下加載一個(gè)任意的 COM 可見類。由于 .NET 并不在意 .NET 類型是否具有特定的 GUID,因此可利用此引導(dǎo)任意代碼執(zhí)行。”
攻擊者可使用工具如 Forshaw 創(chuàng)建的DotNetToJScript 工具實(shí)施利用。該工具是一款免費(fèi)工具,可供用戶生成引導(dǎo)任意 .NET程序集和類的 JScript。
Forshaw 還發(fā)布了兩個(gè)文件作為 POC:建立注冊(cè)表的一個(gè) .INF 文件和一個(gè) .SCT 文件。后者是使用 DotNetToJScript 將不受信任的 .NET 程序集加載到內(nèi)存中顯示消息框的示例,不過它還可用于其它多種用途。
漏洞雖未修復(fù)但并不嚴(yán)重
1月19日,微軟收到該漏洞報(bào)告并證實(shí)漏洞存在。按照 Project Zero 的規(guī)定,供應(yīng)商可以在漏洞公開前的90天內(nèi)修復(fù)漏洞,而微軟并未按期修復(fù)。
不過這個(gè)漏洞也并不嚴(yán)重,這也是它的詳情被公開發(fā)布的一個(gè)主要原因。
研究人員解釋稱,漏洞并未在4月的補(bǔ)丁星期二中予以修復(fù),因此超過規(guī)定期限。該問題僅影響啟用 Device Guard 的系統(tǒng)(如 Windows 10 系統(tǒng)),并且僅可被用于獲得機(jī)器的持續(xù)性代碼執(zhí)行能力。它不可遭遠(yuǎn)程利用,也非權(quán)限提升問題。
攻擊者要利用這個(gè)缺陷,需要在受影響計(jì)算機(jī)上立足以安裝所需注冊(cè)表項(xiàng)。而操作系統(tǒng)中如存在遠(yuǎn)程執(zhí)行漏洞則可被用于此目的。
鑒于 .NET 框架中存在已知的 Device Guard 繞過問題且未被修復(fù)仍可遭利用,因此如果所有已知的繞過漏洞被修復(fù)的話,這個(gè)問題本不至于如此嚴(yán)重。