Check Point 安全研究人員在Windows、Linux和Mac系統的遠程桌面協議(RDP)客戶端中發現25個RDP安全漏洞,其中16個為重要漏洞。
RDP常被技術型用戶和IT人員用于連接遠程計算機,是微軟開發的專有協議。
Check Point 測試了主要為Linux和Mac用戶所用的開源RDP協議客戶端,以及微軟自己的客戶端。不幸的是,盡管后者的漏洞發現工作頗為困難,開源RDP客戶端及微軟專有客戶端均存在嚴重漏洞。
Check Point 的 Eyal Itkin 對下列客戶端進行了漏洞測試:
Itkin的團隊查找了利用終端用戶主機提升網絡權限的方法,可以讓攻擊者在目標的基礎設施內更方便地拓展。
Check Point 的測試樣例包括:
1) 攻擊連接到公司網絡內已感染工作站的IT人員,獲取其更高權限,實現對網絡系統更深層次的訪問。
2) 攻擊連接到遠程沙箱虛擬機的惡意軟件研究人員,令沙箱中被測惡意軟件逃逸出沙箱,滲透入企業網絡。”
Check Point 稱,有15個漏洞可致遠程代碼執行攻擊。開源客戶端已發布補丁,微軟卻在接到漏洞報告的8周后回復稱不會修復漏洞,因為盡管漏洞“有效”,卻未達到微軟的服務標準。
因此,路徑遍歷漏洞并未獲得CVE編號,且沒有官方補丁可用。
RDP漏洞:作怪的剪貼板
Check Point 使用IDA逆向工程微軟的RDP客戶端,發現如果客戶端使用復制粘貼功能,惡意RDP服務器可秘密釋放任意文件至客戶端主機的任意文件位置,僅受客戶端權限限制。
比如說,我們可以將惡意腳本釋放到客戶端的‘開始’文件夾。這樣一來,當客戶端主機重啟,惡意腳本就能在這臺機器上執行,我們會獲得該主機的完整控制權。
Check Point 的漏洞利用測試中,他們終結了rdpclip.exe進程,通過往每個復制粘貼操作添加惡意文件,產生出大量自己的進程去執行路徑遍歷攻擊。
簡言之,客戶端和服務器之間通過剪貼板共享數據,但該渠道上的數據流未經恰當清洗,是可以被利用的。
研究團隊用老式的人工代碼審計就在開源客戶端中發現了漏洞,都沒有用到任何模糊測試技術。(模糊測試通過自動向目標輸出大量數據并觀察其反應來查找漏洞。觀察到目標崩潰時,分析其崩潰原因有時候能揭示可被惡意第三方利用的漏洞。)
微軟RDP客戶端的代碼比開源客戶端代碼好上幾個數量級,有多層優化驅動高效網絡視頻流,有健壯的輸入檢查及解壓檢查以保證目標緩沖區不會被溢出。因此,Check Point 不得不用其他更高端的機制來發現其中缺陷。
由于RDP使用廣泛,Check Point 強烈建議用戶修復自身RDP客戶端。
另外,鑒于微軟RDP客戶端存在剪貼板使用上的漏洞,我們建議用戶在連接到遠程主機時禁用剪貼板共享(默認是開啟的)。
Check Point 分析報告:
https://research.checkpoint.com/reverse-rdp-attack-code-execution-on-rdp-clients/