2020-03-16 14:25:40
來源:深信服科技
漏洞名稱:微軟SMBv3 Client/Server遠程代碼執行漏洞CVE-2020-0796
漏洞類型:遠程代碼執行
威脅等級:高危
影響范圍:Windows 10 1903,1909;Windows Server 1903,1909
利用難度:容易
漏洞描述
Microsoft服務器消息塊(SMB)協議是Microsoft Windows中使用的一項Microsoft網絡文件共享協議。在大部分windows系統中都是默認開啟的,用于在計算機間共享文件、打印機等。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3沒有正確處理壓縮的數據包,在解壓數據包的時候使用客戶端傳過來的長度進行解壓時,并沒有檢查長度是否合法,最終導致整數溢出。
利用該漏洞,黑客可直接遠程攻擊SMB服務端遠程執行任意惡意代碼,亦可通過構建惡意SMB服務端誘導客戶端連接從而大規模攻擊客戶端。
由于此漏洞危害大,且漏洞信息已快速傳播,信服君建議用戶盡快安裝安全更新補丁,并做好防御措施。
影響范圍
目前受影響的Microsoft版本分別為:
• Windows 10 Version 1903 for 32-bit Systems
• Windows 10 Version 1903 for ARM64-based Systems
• Windows 10 Version 1903 for x64-based Systems
• Windows 10 Version 1909 for 32-bit Systems
• Windows 10 Version 1909 for ARM64-based Systems
• Windows 10 Version 1909 for x64-based Systems
• Windows Server, version 1903 (Server Core installation)
• Windows Server, version 1909 (Server Core installation)
三
漏洞詳細分析
1、首先,SMB調用srv2!Srv2ReceiveHandler函數接收數據包,并根據ProtocolId設置對應的處理函數:
▲Srv2ReceiveHandler函數
如果判斷數據包中為壓縮的數據(ProtocolID = 0xfc4d5342),則調用Srv2DecompressMessageAsync函數。
2、srv2!Srv2DecompressMessageAsync函數會繼續調用 Srv2DecompressData函數:
▲Srv2DecompressMessageAsync函數
▲Srv2DecompressData函數
在Srv2DecompressData函數中,使用SrvNetAllocateBuffer進行內存分配時,未對OriginalCompressedSegmentSize和Offset/Length的長度進行任何檢查,對二者的和也未進行安全檢查。
3、srv2!Srv2DecompressData函數調用
SmbCompressionDecompress函數,進而調用
nt!RtlDecompressBufferXpressLz函數進行實際的數據解壓過程。
4、在nt!RtlDecompressBufferXpressLz函數進行數據解壓縮時,首先進行smb compress協議數據包的解析,獲取需要解壓縮數據的大小,并和之前通過SrvNetAllocateBuffer分配的buffer的OriginalCompressedSegmentSize值進行比較,確認其大小不大于OriginalCompressedSegmentSize,然后進行內存拷貝:
▲nt!RtlDecompressBufferXpressLz函數
5、若v21大于
OriginalCompressedSegmentSize,則返回0xC0000242錯誤。因為在步驟2中進行內存分配時沒有做長度檢查,所以如果傳入一個很大的OriginalCompressedSegmentSize值觸發整數溢出,此時v21就可以設置一個極大值,但可以通過對decompress size的判斷,最終調用qmemcpy拷貝一個極大的size導致緩沖區溢出。
而在微軟的補丁包中,添加了對兩個長度的檢查,以此來確保不會發生溢出。
利用此漏洞,遠程未經身份驗證的攻擊者通過使用SMBv3連接到易受攻擊的Windows計算機,或通過使易受攻擊的Windows系統啟動與SMBv3服務器的客戶端連接,就可以在易受攻擊的系統上以SYSTEM特權執行任意代碼。
四
解決方案
1.漏洞檢測
建議用戶通過漏洞檢測工具對網絡中的漏洞威脅進行排查。
深信服云眼已完成檢測更新,可對用戶線上服務器進行探測,保障用戶業務安全。如需檢測互聯網業務是否存在漏洞的用戶,可注冊信服云眼賬號,獲取30天免費體驗。注冊地址為:https://saas.sangfor.com.cn
深信服云鏡同樣在漏洞披露的第一時間即完成檢測能力的發布,部署云鏡的用戶可以通過升級來快速檢測網絡中是否受該高危風險影響。離線使用云鏡的用戶需下載離線更新包來獲得漏洞檢測能力。
2.漏洞修復
微軟目前已發布針對此漏洞的安全更新補丁,深信服建議廣大用戶及時確認所用Windows版本,并下載對應版本安全補丁進行更新:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
深信服終端安全檢測響應平臺EDR,已完成漏洞規則庫的緊急更新,支持該漏洞的檢測及補丁分發。EDR3.2.10及以上版本需要升級相應的SP包,更新漏洞補丁規則庫版本到202031317395,即可檢測漏洞并分發補丁進行漏洞修復。聯網用戶可直接在線更新, 離線升級包及漏洞補丁規則庫已上傳至深信服社區,有需要的用戶請到深信服社區下載。
3.漏洞防御
建議用戶更新安全設備相關防護策略,防范相關漏洞攻擊。
深信服下一代防火墻AF已經更新漏洞規則庫,相關用戶更新至最新的安全防護規則,即可輕松抵御此高危風險。
深信服安全感知平臺SIP同樣可以檢測利用該漏洞的攻擊,并實時告警,同時可聯動深信服下一代防火墻、深信服EDR等產品實現對攻擊者IP的封堵。
深信服安全運營服務,通過以“人機共智”的服務模式幫助用戶快速擴展安全能力。針對該漏洞,安全運營服務提供漏洞檢查、安全設備策略檢查等服務,確保第一時間檢測風險以及更新策略,防范此類威脅。
此外,個人用戶也可通過手動修改注冊表,防止被黑客遠程攻擊:運行regedit.exe,打開注冊表編輯器,在
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一個名為DisableCompression的DWORD,值為1,禁止SMB的壓縮功能。