Discord 桌面应用程序漏洞链引发远程代码执行攻击

Andrew 2020-10-19
专栏 - 事件 发布于 2020-10-19 16:31:12 阅读 65 评论 0

这个消息应用程序的桌面版本存在一个严重的问题,这个问题使得用户容易受到远程代码执行(RCE)攻击。

Bug赏金猎人Masato Kinugawa几个月前开发了一条导致RCE的漏洞利用链,并在周末发布了一篇博客文章,描述了该方法的技术细节,该方法结合了多个漏洞。

在Discon桌面应用程序使用的软件框架Electron中发现了第一个安全问题。虽然桌面应用程序不是开源的,但Electron所使用的JavaScript代码(用于创建能够利用JavaScript,HTML和CSS的跨平台应用程序的开源项目)已保存在本地,可以提取和检查。

Discord的Electron构建中的一项设置“ contextIsolation”被设置为false,这可能允许应用程序外部的JavaScript代码影响内部代码,例如Node.js函数。该功能旨在在网页和JavaScript代码之间引入单独的上下文。

“这种行为是危险的,因为Electron允许web页面外部的JavaScript代码使用node.js功能,而与nodeIntegration选项无关,并且通过干扰Web页面中覆盖的功能来干扰它们,甚至可以实现RCE如果nodeIntegration设置为false,“Kinugawa解释道。

现在,研究人员需要一种在应用程序上执行JavaScript的方法,从而导致在iframe嵌入功能中发现跨站点脚本(XSS)问题,该问题用于在发布URL时在聊天中显示视频,例如YouTube。

这导致Kinugawa转到了3D内容查看器Sketchfab。Sketchfab在Discord的内容安全策略中列入了白名单,并且可以嵌入到iframe中-但是在嵌入页面中发现的基于DOM的XSS可能会被滥用。

但是,这仅允许漏洞赏金猎人在iframe中执行JavaScript,因此在Discord桌面应用程序上仍无法实现完整的RCE。至少直到Kinugawa在Electron的“will-navigation”事件代码中遇到导航限制绕过的情况。

跟踪为 CVE-2020-15174,此处理错误与其他两个漏洞一起,使 Kinugawa 通过规避导航限制并使用iframe XSS错误访问包含RCE有效负载的网页来执行RCE攻击。

Kinugawa通过Discord的Bug赏金计划报告了他的发现。在Discord团队对错误进行分类并确认其有效性之后,开发人员禁用了Sketchfab嵌入,并向iframe添加了沙箱属性。

错误赏金猎人补充说:“过了一会儿,启用了contextIsolation。” “现在,即使我可以在应用程序上执行任意JavaScript,RCE也不会通过覆盖的JavaScript内置方法发生。”

Kinugawa因Discord的报告获得了5,000美元的奖励,而Sketchfab团队因披露XSS缺陷而获得了300美元的奖励,现已修复。Electron的“将要解决”问题也已解决。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!