Mac版本的Zoom客户端中存在漏洞,一旦点击特定的恶意网站,就可在未经你许可的情况下启用你的摄像头。这一漏洞可能会危害世界上75万家使用Zoom进行业务交流的公司。

漏洞

  • DOS漏洞——已在版本4.4.2中被修复

  • 信息披露(网络摄像头)——尚未修复

前言

此漏洞允许恶意网站在未经用户许可的情况下,激活他们的摄像头,强制加入到某个Zoom的会议中。

除此之外,此漏洞还允许任意网页通过不断把用户加入一个无效会议以DoS(拒绝服务)安装了Zoom的Mac机器。

此外,如果你安装了Zoom客户端,然后将其卸载,此时你的计算机上仍然有一个localhostWeb服务器,一旦你访问某个网页,它就会迅速为你重新安装Zoom客户端。这个特殊的功能直到现在依然有效。

此漏洞始于Zoom的一项简单功能,即:当你向任何人发送会议链接时(例如[https://zoom.us/j/492468757](https://zoom.us/j/492468757)),一旦他们在浏览器中打开,他们的Zoom客户端就会自动运行。我很好奇这一惊人的功能是如何实现的,以及它的安全性如何。但我后来发现,这个功能确实有很大的安全问题。我也一时找不到好方法去修复它。

该漏洞最初是在2019年3月26日给Zoom通报的。初始的漏洞报告中包括了一个快速修复建议描述,只要简单地更改代码逻辑即可实现。Zoom花了10天时间来确认漏洞。而关于如何修补漏洞的第一次实际讨论发生在2019年6月11日。在这次会议中,确认了漏洞的细节,并讨论了Zoom的解决方案。然而,我很容易便在他们修复方法中发现了绕过方法。此时,Zoom距离漏洞公开时间(90天)只剩下18天。而在90天之后的6月24日,也就是漏洞公开截止日期前的最后一天,我发现Zoom采用了我最初的“快速修复”方案。

所以,Zoom未能彻底解决、定位这个漏洞,仅仅做出了些临时处理。拥有如此庞大用户群的公司应该在保护客户安全方面更加主动。

时间线

  • 2019年3月8日——通过Twitter联系(无回复)。
  • 2019年3月26日——通过电子邮件联系Zoom,指明漏洞公开时间段为90天,并提供“快速修复”解决方案。
  • 2019年3月27日——收到回复,表示Zoom安全工程师不在办公室,并表示由于政策,即使在漏洞被修补后也不能公开细节,并拒绝提供奖励。
  • 2019年4月1日——要求确认漏洞。
  • 2019年4月5日——Zoom的安全工程师确认了漏洞。CVSS v3评分为5.2/10。
  • 2019年4月10日——向Chromium安全团队披露了漏洞。
  • 2019年4月18日——根据Chromium团队的建议更新了Zoom。
  • 2019年4月19日——向Mozilla FireFox安全团队披露了漏洞。
  • 2019年4月26日——与Mozilla和Zoom安全团队进行了视频通话。
  • 2019年6月11日——与Zoom安全团队进行视频通话。讨论了Zoom的安全更新的缺陷。
  • 2019年6月21日——Zoom报告漏洞得到修复。
  • 2019年6月24日——已过90天,确定使用我的“快速修复”方案。
  • 2019年7月8日——漏洞修复,细节公开。

细节

如果你的Mac安装了Zoom,那么在本地端口19421上就会运行着Web服务器。你可以通过lsof -i :19421命令进行确认。

首先,在本地机器上安装一个未知的Web服务就是很荒谬。其次,我访问的任何网站都可以与运行在我机器上的Web服务器进行交互,就更是不可理喻。相关代码如下:

当我最初得知这个Web服务存在时,立马想到如果这个Web服务的参数处理存在缓冲区溢出,那么别人就能远程控制我的机器。

在我访问其中一个Zoom的会议加入“连接”([https://zoom.us/j/492468757](https://zoom.us/j/492468757))时,查看浏览器的开发人员控制台内容,可发现如下内容:

我还发现,这个页面不是发出常规的Ajax请求,而是从本地运行的Zoom的Web服务中加载图像。图像的不同维度代表服务器的错误/状态代码。你可从下面代码看到详细情况,其中前面的两个数字代表返回的图像像素尺寸:

可怕的是,这个Web服务可以做的远不止启动一个Zoom会议。我发现即使用户卸载了Zoom,这个Web服务也可以“帮助”用户重新安装,稍后会详细介绍。

为什么这个Web服务返回的数据要以图像文件进行表示?很明显,这样做是为了绕过CORS(跨域资源共享)。

Chrome不支持本地主机的CORS请求。
https://stackoverflow.com/questions/10883211/deadly-cors-when-http-localhost-is-the-origin

不管怎样,Zoom这一举措也很不安全。

会议加入漏洞

我用另一个帐户创建了一个个人会议,并用Postman开始抓包和改包,尝试启动Zoom会议所需的最简短GET请求。

经过一系列摸索,发现以下两个最重要的参数。

  • action=join

  • confno=[无论会议号码是什么]

访问如下请求,我成功进入另一个帐户创建的Zoom会议。

http://localhost:19421/launch?action=join&confno=[some confrence number]

一旦有了这个突破口,我就开始寻找可以用这个链接所进行的其他动作。我甚至翻阅了各种公共文档,但还是没任何收获。由于这个Web服务完全没有官方文档记录,所以也算预料之中。

所以,我现在可以强迫任何用户加入我的会议,但音频/视频有另外的设置,不一定能启用。

直到现在,你仍然可以使用该“链接”来强迫他人加入某个会议。

不久后,我了解到Tenable Remote Code Execution in Zoom Security漏洞,该漏洞是在6个月前被修复。如果将这个Tenable漏洞与此漏洞结合在一起,则可针对安装了Zoom的Mac机器实行远程代码攻击。

因此,将来如果发现类似的漏洞,也可和我这个漏洞进行结合,对任何访问了恶意网站的用户实行远程代码攻击。在此,我建议任何仍在使用ZOOM 4.1.33259.0925或更低版本的用户迅速升级软件。

到目前为止,我只是强制让他人加入会议,并没有直接的安全威胁。我开始想如何才能激活他人的摄像头。不久后,我发现了如下设置,您可以选择在参与者加入会议时启用其摄像头

只要启用这个设置,任何加入会议的人都会自动发送视频。

经过实验后,发现这个设置对所有参与者有效。

PoC

本地的Web服务是自动作为后台进程运行,因此,只要用户点击了恶意网页,不管运不运行Zoom,攻击都能生效。

<img src="http://localhost:19421/launch?action=join&confno=492468757"/><iframe src="https://zoom.us/j/492468757"/>

任何一个网站只要有以上代码,就瞬间变成恶意网站!只要有人访问即会中招。这也可以用于传播广告和网络钓鱼。如果我要深入研究,可能还是会瞄准这个web服务。

在这里我也提供一个演示PoC:https://jlleitschuh.org/zoom_vulnerability_poc/

还有一个可激活摄像头的PoC:https://jlleitschuh.org/zoom_vulnerability_poc/zoompwn_iframe.html

快速修复

为了修复摄像头自启缺陷,最快速的方法就是Zoom把那个功能完全禁止或是直接删除。此外,如果还有麦克风自启功能,建议一样处理。

而Zoom方面一开始对我发现的这个缺陷的回复为:正在评估,后续会通知你。

ZOOM最终还是修复了摄像头自启动的缺陷,但对强制加入会议这一问题并没有处理。

拒绝服务(DOS)漏洞

另一方面,这个漏洞也可让攻击者对任何用户的机器进行DoS攻击。只要不停发送包含错误数字的GET请求,Zoom就会不断地被请求激活。攻击演示的PoC如下:

<body>
<script>
// It's actually better if this number isn't a valid zoom number.
var attackNumber = "694138052"
setInterval(function(){var image = document.createElement("img");// Use a date to bust the browser's cachevar date = new Date();image.src = "http://localhost:19421/launch?action=join&confno=" + attackNumber + "&" + date.getTime();image.on load = function() {
// Be tidy, clean up the DOM afterwardsimage.parentNode.removeChild(image);};document.body.appendChild(image);
}, 1);
</script>
</body>

在版本4.4.2中该DOS漏洞已被修复。

安装漏洞

如果你在计算机上安装了Zoom,则会自动安装Web服务。而当你卸载Zoom时,它还会继续运行。

这个web服务除了加入会议,还能安装和更新Zoom软件。我对这个Web服务进行了一些额外的分析,想查看还有啥功能。

通过Hopper Disassembler反汇编这个web服务,我发现了以下代码,和更新以及重装软件有关:

该方法和以下逻辑有关:

你可以通过以下操作来确认此功能确实存在:

  1. 安装Zoom。

  2. 打开Zoom,然后关闭它。

  3. Applications/zoom.us.app文件扔到垃圾桶,从计算机中卸载zoom客户端。

  4. 打开任何Zoom链接,Zoom客户端又会再次启动。

我还研究了一下用于安装Zoom软件的相关网址。例如,以下是访问[https://zipow.com/upgrade?os=mac](https://zipow.com/upgrade?os=mac)的结果:

在上述列表中我还发现一些快到期的域名,例如zoomgov.com在2019年5月1日到期,一旦被攻击者接管,造成的损失不可估量。目前该域名已重新续期。

基本的安全漏洞

由于这个漏洞涉及到浏览器,我也与Chromium和Mozilla Firefox的安全团队讨论了这个漏洞。他们都表示对此无能为力。Chromium团队向我推荐了CORS-RFC1918,它要求站点对本地资源(如localhost和192.168.1.*)发出请求前,先进行权限验证。

Zoom的修复方案

Zoom的安全团队提出了数字签名和IP验证两种方法,但我都对此提出了绕过方法。此时,距离90天的期限只剩下18天。于是,即使还有缺陷,新解决方案还是上架了。

结论

截至2015年,Zoom拥有超过4000万用户。鉴于Mac电脑占PC市场的10%,我们可以假设至少有400万的Zoom用户使用Mac电脑。Zoom和Google Meet或Skype一样,是流行的商业工具。

在我与Zoom安全团队的交谈过程中,他们多次认为此漏洞的严重性是有限的,因为它需要“用户交互”来进行攻击。我对此的回应是:“我强烈建议不要使用‘用户交互’这个词,因为这个‘用户交互’只是点击一个链接或访问一个网页。”

我觉得为了完全保护用户,最好的方法是完全抛弃这个web服务。

如果你想自己修复此漏洞,可以在设置中禁止在加入会议时开启摄像头。或者通过如下命令:

# For just your local account
defaults write ~/Library/Preferences/us.zoom.config.plist ZDisableVideo 1
# For all users on the machine
sudo defaults write /Library/Preferences/us.zoom.config.plist ZDisableVideo 1

此外,你还可以用kill -9 [process number]彻底关闭web服务进程。然后删除~/.zoomus目录,以彻底删除Web服务的相关文件。

鉴于Zoom还是存在大量不安全的设计,相信其他安全人员还会有另外发现。

我的PoC代码可以在我的Github上找到。

感谢你的阅读!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2761.html
来源:https://medium.com/@jonathan.leitschuh/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5

Zoom会议系统曝出高危漏洞,或影响400万电脑摄像头相关推荐

  1. SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇(转自:http://blog.csdn.net/lyq8479/article/details/40709175)...

    SSL 3.0曝出高危漏洞 2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,该漏洞可被黑客用于截取浏览器与服务器之间进行传输的加密数据,如网银账号.邮箱账号. ...

  2. 二十余款Linksys路由器曝出安全漏洞,或可被远程控制

    本文讲的是 二十余款Linksys路由器曝出安全漏洞,或可被远程控制, 近日,有研究人员透露,Linksys路由器中存在未修补的安全漏洞,这些漏洞将使数以千计的设备受到攻击. 周三,IOActive高 ...

  3. Java 轻量级框架Spring曝出0day漏洞

    首语 3月29日,Spring框架曝出RCE 0day漏洞.已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使 ...

  4. [054] SSL 3.0曝出Poodle漏洞的解决方案-----网民篇

    SSL 3.0曝出高危险漏洞 2014年10月15日,Google研究人员公布SSL 3.0协议存在一个非常严重的漏洞,更让人不安的是几乎所有的浏览器都支持SSL 3.0协议.SSL 3.0的漏洞可被 ...

  5. 戴尔BIOS 爆多个高危漏洞,影响Inspiron 等数百万系统

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 戴尔BIOS 中存在多个高危漏洞,如遭成功利用可导致在易受攻击系统上执行代码,类似于近期存在于Insyde 软件 InsydeH2O中的固件漏洞 ...

  6. 移动互联网新协议 GTP 中被曝多个高危漏洞,影响4G和5G 用户

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Positive Technologies 公司上周发布报告<2020年 LTE 和5G 网络中的漏洞>指出,移动网络运营 ...

  7. 驱动人生被曝利用高危漏洞传播病毒,半天感染数万台电脑

    12月15日消息 据火绒安全官网消息,12月14日,火绒安全团队发现"驱动人生"旗下多款软件携带后门病毒DTStealer,仅半天时间感染了数万台电脑.该病毒进入电脑后,继续通过& ...

  8. 博览安全圈:360曝Office高危漏洞 微软及时修复

    为了响应国家号召,加强全民网络安全意识,我们会经常性的为大家奉上最具代表性的安全事件. 1.360曝光Office高危漏洞 微软及时发布安全更新 近日,360称发现了Office的高危漏洞(CVE-2 ...

  9. 惠普OMEN游戏本驱动曝内核级漏洞,影响数百万Windows 计算机

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全研究员详述了惠普OMEN游戏本驱动软件中的一个高危漏洞(CVE-2021-3437),使全球数百万台游戏计算机易受攻击. 该漏洞的CVS ...

最新文章

  1. 【新星计划】Matlab实现数据导出
  2. boost::gil::detail::is_channel_integral用法的测试程序
  3. mysql数据剪切到新表_6、MySQL核心DDL语句
  4. Linux 关闭网络管理服务
  5. UIImage 剪裁的方法
  6. net.sf.json.JSONException: #39;object#39; is an array. Use JSONArray instead
  7. 熬夜伤身,建议通宵!
  8. 关于CUDA与CUDNN适配版本,以及安装中出现Bug的分析
  9. Hotspot 偏向锁BiasedLocking 源码解析
  10. 前端开发工具Axure——Axure原型图查看
  11. Android仿自如客APP裸眼3D效果
  12. python渲染光线_Python光线追踪
  13. 服务器被DDoS攻击,怎么破?
  14. VSS配置及使用说明
  15. ESL第七章 模型评估及选择 【期望】测试误差、模型偏差估计偏差、【平均】乐观、AIC、参数有效数、BIC、最小描述长度、VC/结构风险最小化、一标准误差准则/广义交叉验证、【留一】自助/.632估计
  16. Tomcat Connector的BIO与NIO模式的比较及区别
  17. 选择手机群控系统有哪些需要注意的地方?
  18. 全国职业院校技能大赛改革试点赛云计算赛项
  19. 2017 年前端开发工作总结
  20. Python+花生壳搭建一个外网访问本地文件的服务器

热门文章

  1. Advancedinstaller安装包自定义操作打开文件
  2. linux运行雷神之锤,Ubuntu下多人射击类游戏 Quake Live 雷神之锤
  3. linux中的ubiq命令用途,学习Linux命令(一)
  4. 新时代高校辅导员工作素养的新要求及提升路径(非原创)
  5. 抽屉实现评论数据结构及评论内容显示示例
  6. SpringBoot 速记
  7. opc服务器的数据文件,opc服务器与数据库间数据交换工具
  8. html display
  9. C++学习课件(三)
  10. 单片机应用系统设计技术——单片机电梯控制器