查看原文
其他

Electron 框架中存在漏洞 GitHub等知名桌面应用受影响

Catalin Cimpanu 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

翻译:360代码卫士团队


安全研究员在五年来一直用于构建大量流行桌面应用的软件框架 Electron 中发现一个安全缺陷。

构建于 Electron 基础上的应用包括微软公司的 Skype 和 Visual Studio Code、GitHub 的 Atom 代码编辑器、Brave 浏览器以及多款服务的官方桌面 app 如 Signal、Twitch、Discord、Basecamp、Slack、Ghost、WordPress.com 等。

Electron 框架因能让开发人员轻易地将通过 HTML、JS 和 CSS 编写的 web应用移植到桌面上运行,它在当前的软件开发社区中非常受欢迎。该软件框架是用 Node.js 服务器端 JavaScript 服务器封装的自定义 API。

危险的 Node.js API 和模块

当构建基于 Electron 的应用时,开发人员可通过 Electron API 来选择一个限制性环境,同时能够利用 Node.js API 及其模块。

由于 Node.js 项目更为成熟,因此 Node 的 API 和内置模块与底层操作系统的集成更为深入,而且能让开发人员和应用访问更多的操作系统功能。

Electron 团队意识到问题的存在并创建了一种机制,阻止基于 Electron app 的攻击利用这些 API 损害底层操作系统。

对于只想在桌面运行 HTML 和 JS 代码的应用而言,”nodeIntegration:false” 选项是默认开启的,意味着默认禁用访问 Node.js API 及其模块。这些纯粹的 web 应用经由一个名为 WebView 的组件插入 Electron 应用中。

从 XSS 升级到 RCE

所有基于 Electron 的应用都基于 webPreferences 配置文件运行。如果在这个配置文件中将 webviewTag 设为 “false”,那么 nodeIngration 也被设为 “false”。如果开发人员未声明 webviewTag,那么应用将认为 nodeIntegration 仍然被设置为 “false”。

Trustwave 公司的研究员 Brendan Scarvell 指出,这就是问题所在之处。他发现恶意人员能利用某个机制将 nodeIntegration 选项设置为 “true” 并给予他们访问更多强大的 Node.js API 和模块的权限。

Scarvell 表示,如果基于 Electron 的应用的开发人员并未具体声明某个 app 的webPreferences 配置文件中的 “webviewTag: false” 选项,那么攻击者就能利用某个 Electron app 中的任意单个跨站点脚本 (XSS) 漏洞创建一个控制设置的新的 WebView 组件窗口,并将 nodeIntegration 标记设置为 “true”。

值得注意的是,Electron 应用是封装的 HTML 和 JS 代码,也就是说,找到一款 XSS 应用利用这个缺陷并非听起来的那么难,因为多数 web 应用中都充斥着这类问题。

Scarvell 已发布 PoC 代码,可导致攻击者利用任何 XSS 缺陷并将其访问权限扩展到底层操作系统。他表示,“如果应用使用了易受攻击的 Electron (版本低于 1.7.13、低于 1.8.4 或低于 2.0.0-beta.3),那么该缺陷可导致远程代码执行(RCE) 问题。”

Scarvell 已将该问题私下告知 Electron 团队,后者已于3月中旬发布修复方案。尽管如此,目前尚不知晓有多少基于 Electron 的应用易受影响,以及哪些应用已集成这些补丁。该漏洞的 CVE 编号是 CVE-2018-1000136。




关联阅读

Electron JS 框架存在严重的 RCE 漏洞  GitHub 等热门 app 受影响


原文链接

https://www.bleepingcomputer.com/news/security/security-flaw-impacts-electron-based-apps-such-as-skype-github-discord-others/



本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存