CVE-2020-6110 | ZOOM客戶端遠程代碼執行漏洞通告

發布時間 2020-06-05

0x00 漏洞概述



CVE   ID

CVE-2020-6110

   

2020-06-04

   

RCE

   

高危

遠程利用

影響范圍

Zoom Client 4.6.10、4.6.11


0x01 漏洞詳情




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


CVE-2020-6110是Zoom Client版本4.6.10處理包括共享代碼段在內的消息的方式中存在一個可利用的路徑遍歷漏洞。特制的聊天消息可能會導致植入任意二進制文件,可能會濫用該二進制文件來實現任意代碼執行。攻擊者需要向目標用戶或組發送特制消息,需要目標用戶的交互才能觸發此漏洞。


本質上,此部分代碼是通過生成一個特殊的zip歸檔文件來共享的,該歸檔文件包含幾個支持文件(用于純文本的無標題代碼):


Untitled.html

Untitled.properties

Untitled.rtf

Untitled.tx*


最后一個包含源本身,富文本文件提供語法高亮顯示,而屬性文件描述程序包。


當一個用戶與另一個用戶共享一個代碼片段時,便會創建該zip文件,并通過/zoomfile/upload向的請求將其上傳到Zoom的存儲服務器file.zoom.us。同時Zoom客戶端獲取文件對象ID,然后將XMPP消息發送給收件人。XMPP消息看起來像:


<message from="source_xmpp_username@xmpp.zoom.us/ZoomChat_pc" to="destination_xmpp_username@xmpp.zoom.us" id="{170029-35B3-4748-9CB0-42E42FF20DE5}" type="chat">

   <thread>gloox{THREADID}</thread>

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

   <sns>

       <format>%1$@ sent you a code snippet</format>

       <args>

           <arg>S E</arg>

       </args>

   </sns>

   <zmext expire_t="1650165620000" t="1587093620200">

   <obj k="key" id="__object_id" s="166" nm="Untitled1.zip" f="14" st="0"/>

   <from n="S E" e="emailaddress" res="ZoomChat_pc"/>

   <to/>

   <visible>true</visible>

   <msg_feature>1024</msg_feature>

   </zmext>

   <body>S E has sent you a code snippet</body>

</message>


對象ID屬性唯一地標識包含已刪除描述的文件。當XMPP客戶端收到上述消息時,它將繼續從Zoom的數據存儲中提取指定的文件,并將其以唯一的文件名保存到磁盤。在Windows客戶端上,這些文件存儲在中%APPDATA%\Roaming\Zoom\data\xmpp_user\CodeSnippet\<random uid dir>。通過Zoom定期共享文件的情況也是如此。但是,在共享代碼段的情況下,Zoom將繼續自動解壓縮下載的zip文件,以預覽和顯示該代碼段。此漏洞的核心是Zoom的zip文件提取功能在提取zip文件之前不會對其進行驗證。


這使潛在的攻擊者無需用戶干預即可通過自動提取的zip文件將任意二進制文件植入目標計算機上。此外路徑遍歷問題使特制的zip文件可以在預期的隨機生成目錄之外寫入文件。例如,實際上將zip壓縮文件中的文件路徑為“ .. \ test \ another \ test.exe”的文件提取到文件中,%APPDATA%\Roaming\Zoom\data\xmpp_user\CodeSnippet\test\another\text.exe而不是包含在具有隨機UID的目錄中。本身就可能在利用另一個漏洞時被濫用。


此外,有關Zoom處理共享文件的方式的一個怪癖使此漏洞可通過目標用戶進行進一步處理。與Zoom客戶端共享常規文件后,他們需要在訪問文件之前單擊文件并選擇保存位置。由于Zoom客戶端會跟蹤下載的文件,因此將此事實與上述問題結合在一起可能導致任意文件寫入任意路徑。在這種情況下,攻擊者首先會與目標用戶共享一個惡意的zip文件,并帶有文件名,例如“ interesting_image.jpeg”。目標可能會單擊該文件并將其保存在某個位置(例如,在其桌面上)。用戶將無法直接以zip或jpeg格式打開文件。另一方面,Zoom客戶端會跟蹤此文件并保存在指定路徑中。然后,攻擊者將代碼片段共享消息發送給目標,但在目標服務器中指定相同的文件ID和詳細信息。obj標簽。Zoom Client應用程序將看到該文件已經下載,并且將不考慮.jpeg擴展名將其解壓縮。通過濫用目錄遍歷漏洞,惡意的zip文件可以將文件提取到c\Users\<username>\任何子目錄中。


在這種情況下,攻擊者將一個文件上傳到file.zoom.us名為的服務器interesting_image.jpeg。然后,攻擊者發送如下消息:


<message from="source_xmpp_username@xmpp.zoom.us/ZoomChat_pc" to="destination_xmpp_username@xmpp.zoom.us" id="{170029-35B3-4748-9CB0-42E42FF20DE5}" type="chat">

   <thread>gloox{THREADID}</thread>

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

   <sns>

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

       <args>

           <arg>S E</arg>

       </args>

   </sns>

   <zmext expire_t="1650165620000" t="1587093620200">

   <obj k="key" id="__object_id_of_interesting_image.jpeg" s="166" nm="interesting_image.jpeg" f="5" st="0"/>

   <from n="S E" e="emailaddress" res="ZoomChat_pc"/>

   <to/>

   <visible>true</visible>

   <msg_feature>8</msg_feature>

   </zmext>

   <body>S E has sent you a code snippet</body>

</message>


客戶端保存文件,然后攻擊者發送另一條內容幾乎相同的消息:


<message from="source_xmpp_username@xmpp.zoom.us/ZoomChat_pc" to="destination_xmpp_username@xmpp.zoom.us" id="{170029-35B3-4748-9CB0-42E42FF20DE5}" type="chat">

   <thread>gloox{THREADID}</thread>

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

   <sns>

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

       <args>

           <arg>S E</arg>

       </args>

   </sns>

   <zmext expire_t="1650165620000" t="1587093620200">

   <obj k="key" id="__object_id_of_interesting_image.jpeg" s="166" nm="interesting_image.jpeg" f="14" st="0"/>

   <from n="S E" e="emailaddress" res="ZoomChat_pc"/>

   <to/>

   <visible>true</visible>

   <msg_feature>1024</msg_feature>

   </zmext>

   <body>S E has sent you a code snippet</body>

</message>  


以上消息中的更改位于tag的f屬性中obj。它指定14指示代碼段功能。同樣將msg_feature調整為1024與共享代碼段相同。obj標記內的文件ID和名稱保持不變,導致Zoom客戶端不會將文件重新下載到“ CodeSnippets”目錄中,而是使用先前保存的路徑。


需要注意的是,即使目標用戶在意識到虛假的情況下刪除了已保存的文件,Zoom客戶端也會重新下載該文件,但在收到最終消息時仍會遵循原始的保存路徑。同樣惡意zip文件可以包含帶有目錄遍歷路徑的惡意文件的多個副本,這些目錄可以用于容納目標用戶可能保存文件的任意位置。


總之,可以在上述兩種情況下濫用此漏洞。首先,如果沒有用戶交互,就可以濫用它,即使在可能利用其他漏洞的受限路徑上,在目標系統上植入任意二進制文件。其次,通過用戶交互,將二進制文件植入幾乎任意路徑,并有可能覆蓋重要文件并導致任意代碼執行。


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-1056


0x05 時間線


2020-04-16 研究人員披露

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