Zoom 修复 Whiteboard 中的XSS漏洞
编译:代码卫士
Zoom 修复了位于桌面和web版本 Whiteboard app 中的一个XSS漏洞。
Zoom Whiteboard可使用户通过增加和编辑不同的对象,在共享画布上实时协作。Whiteboard 在浏览器和桌面app上都运行 JavaScript 代码。
Zoom Whiteboard 中的XSS漏洞是由安全研究员 Eugene Lim 发现的。Lim 关注web、移动、桌面和其它平台之间的重叠,随后他开始对Zoom Whiteboard有了兴趣。
Whiteboard 支持多种对象类型,包括文本、形状、富文本、镜像和便利贴。
为了存储和迁移对象,Whiteboard 使用语言和平台中和标记标准Protocol Buffer (protobuf)来清理结构性数据。它使用WebSocket 在所有客户端播报protobuf对象并在whiteboard上提供实时更新。
收到后,客户端将protobuf对象更改到相应的React组件中并将其插入用户接口。React 自动清理包含在whiteboard对象中的所有HTML属性中。然而,一些对象允许一些HTML标签。对于某些对象而言,开发人员使用自定义正则表达式函数清理用户输入并删除不允许的标签。
Lim 发现通过一个构造良好的HTML字符串,他能够绕过清理检查并将任意JavaScript 代码发送到所有其它客户端并发动XSS攻击。
利用该漏洞要求攻击者付出复杂努力。Lim 指出,“WebSocket 信息以protobuf 格式发送。这就导致很容易编写让诊断人员易于复现的PoC,因为诊断人员需要在请求释放前,拦截WebSocket 请求并正确修改protobuf 信息。”为了解决这一问题,他开发了一个端对端PoC 脚本,使用剪贴板创建并交付XSS payload。
Lim 认为,导致难以找到并解决这些漏洞的因素有两个。第一个是支持其它特性的JavaScript web API的宽度和深度。
他指出,“从WebRTC到WebGL,除了弹出警告之外,可以在浏览器中做更多的事情,这就增加了攻击面和绕过潜力。”第二个是web和原生/桌面应用之间不断增多的重合之处。
Lim 表示,“开发人员需要保护多个平台中的应用,由于Safari 上React 中的JavaScript可能和安卓上Hermes 的React Native 工作稍有不同,因此这样增加了复杂度。”
最后,Lim 提醒注意第三方依赖中的缺陷。
他指出,“由于用户输入通过第三方依赖流动,因此代码扫描工具无法找到真正的Zoom漏洞。”一般而言,CI/CD管道中的代码扫描并不会安装第三方依赖且仅在项目源代码上运行。Lim 表示,“必须要非常注意你正在使用的第三方组件以及你使用这些组件的方式。另外,通过正则表达式解决非常不容易,因此最好依赖于DOMPurify等库。”
谷歌详述 Zoom 客户端和MMR 服务器中的两个0day
Zoom 5.1.2及旧版本在 Win7 上的 DLL 劫持漏洞分析
网红视频会议应用 Zoom 被指“像吸血鬼一样靠收割个人数据敛财”
Zoom 视频会议 app 被曝严重漏洞,75万家企业或受影响
https://portswigger.net/daily-swig/zoom-whiteboard-patches-xss-bug
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。