Windows遠程桌面漏洞Esteemaudit(CVE-2017-9073)補丁簡要分析
在上個月,我們為方程式組織被泄漏的ESTEEMAUDIT漏洞撰寫了一個簡要的分析,並且直到我們發現這一漏洞攻擊只適用於加入Windows域的計算機前,我們都在試圖去重現這個問題,不過相對來說編寫補丁還是相當簡單的。下圖顯示了當檢測到並阻止ESTEEMAUDIT攻擊時顯示的源代碼和「Exploit Attempt Blocked」對話框。
我們的補丁很簡單:我們先去檢查從遠程智能卡收到的數據(由ESTEEMAUDIT模擬)是否大於80h,這是gpkcsp.dll中目標緩衝區的大小。如果接收到的數據較大,並且使用ESTEEMAUDIT,則我們首先警告我們本地運行的0patch代理(彈出警報),然後將接收到的數據的大小減小到80h,以防止緩衝區溢出。通過在原始代碼中引入4個機器指令,可以有效地阻止攻擊而不會中斷那些合法功能。
而在大約一個月後,微軟公布了ESTEEMAUDIT和其它漏洞的官方更新,並且表示會向客戶提供更多的支持。這是非常好的,因為官方的供應商更新是修復漏洞的首選方法,我們的目標是為那些還未修復的問題在修復前提供儘可能的服務,或者在安全更新時間差中為一些客戶組織提供對關鍵漏洞的保護。
當然,我們對微軟如何修復這個漏洞非常感興趣,並將其修復方案與我們的進行了比較。輸入IDA Pro和BinDiff,幾分鐘後,我們就可以並列的去比較兩者了。
在左邊的固定代碼和右邊的易受攻擊的代碼上,微軟的補丁在完全相同的位置也引入了同樣的檢查。我們修復方案的主要區別在於,儘管我們將接收到的數據切割為有效長度,但如果數據太長,則仍然會產生錯誤,並放棄連接。
這是非常有道理的,因為官方補丁就是應該提供故障排除信息,微軟應該盡量用最小的代碼關閉漏洞。
當然我們也發現了非常驚喜的地方——BinDiff展現了了另一個變化。
在代碼中的其他地方,微軟也添加了類似的檢查——檢查接收到的數據長度超過80h,如果是,則返回錯誤。
他們顯然審計了他們的代碼,並注意到在另一個DoSCardTransmit調用之後存在類似的錯誤,並修復它。請注意,這個第二個錯誤並沒有被ESTEEMAUDIT利用,但是很有可能會由第一個bug 進而被發現。微軟和其他類似的軟體供應商經常在他們的代碼中搜索那些類似已發現的漏洞(內部或外部),並主動修復它們。
毫無疑問,這個被發現的第二個問題也給我們帶來了新的問題:還有其他類似的問題嗎?
在gpkcsp.dll中有66次對DoSCardTransmt調用,我們來簡要地看看他們。事實上,我們對接收到的緩衝區將被複制到其他緩衝區的情況很感興趣。實際上還有一個這樣的情況,除了微軟修補的問題,如下圖所示:
同樣,最新的gpkcsp.dll還是位於左側,但顯然這裡沒有添加任何數據長度檢查。該代碼與易受攻擊的代碼存在相似的嫌疑,但它實際上取決於ds上的目標緩衝區的大小:[edx + ebx]。我們沒有時間進一步了解這一點,但是我們希望微軟去進行嘗試並確認它是不可利用的。
最後順便說一下,ESTEEMAUDIT漏洞被分配了代號CVE-2017-9073,但微軟將其修復與CVE-2017-0176進行了相互的關聯。這很容易會引起一些混亂,讓人們想知道兩個CVE是否是重複的。基於對Microsoft的修復的上述分析,似乎可以準確的說一點,CVE-2017-9073其實是CVE-2017-0176的一個子集,前者只是ESTEEMAUDIT漏洞,而後者還包括上文中所述的第二個類似的問題,微軟也進行了修補。
本文翻譯自https://0patch.blogspot.hk/2017/06/a-quick-analysis-of-microsofts.html,如若轉載,請註明原文地址: Windows遠程桌面漏洞Esteemaudit(CVE-2017-9073)補丁簡要分析 - 嘶吼 RoarTalk 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※讓我們一起來消滅CSRF跨站請求偽造(上)
※Adobe ColdFusion 任意命令執行漏洞(CVE–2017–11283, CVE–2017–11284)預警
※MySQL驚爆高危漏洞 入侵伺服器已不在話下