近日,Canthink 络安全攻防实验室发现了Electron software framework(软件架构)中存在的一个安全漏洞,它在过去的五年中被用于构建大量流行的桌面应用程序。
该框架在当今的软件开发 区中非常流行,它允许开发人员轻松移植在HTML、JS和CSS中编码的基于Web的应用程序以在桌面上运行。Electron软件框架是一个封装在Node.js服务器端JavaScript服务器周围的自定义API。
在构建基于Electron的应用程序时,开发人员可以选择使用大部分Electron API的有限环境,但也可以使用Node.js API及其模块。由于Node.js项目是一个更成熟的项目,因此Node的API和内置模块提供了与底层操作系统的更深层次的集成,并允许开发人员和应用程序访问更多的操作系统功能。
Electron团队意识到这个问题,并创建了一种机制,可以防止攻击基于Electron的应用程序攻击这些API以损害底层操作系统。
对于只想在桌面上运行HTML和JS代码的应用程序,默认情况下会打开“nodeIntegration:false”选项,即禁止访问Node.js API和模块。在Electron应用程序中嵌入这些纯粹的基于Web的应用程序,是通过名为WebView的组件完成的。
所有基于Electron的应用程序都可以在webPreferences配置文件中使用。如果在此配置中将webviewTag设置为false,则nodeIngration也会设置为false。如果开发者根本没有声明webviewTag,那么应用程序认为nodeIntegration仍然设置为false。
而这便是问题所在,Canthink研究员发现了一种机制,恶意行为者可以使用这种机制将nodeIntegration选项设置为“true”,并授予他们访问功能更强大的Node.js API和模块的权限。
如果基于Electron的应用程序开发人员没有在应用程序的webPreferences配置文件中专门声明“webviewTag:false”选项,则攻击者可以使用Electron应用程序内部的任何世俗跨站脚本攻击(XSS)漏洞来创建一个新的WebView组件窗口,用于控制设置,并可以将nodeIngration标志设置为“true”。
但应注意,基于电子的应用程序是打包的HTML和JS代码,这意味着找到一个利用这个漏洞的XSS应用程序并不像听起来那么困难,因为大多数Web应用程序都有这种错误。
对此,Canthink研究员发布了概念验证代码,可使攻击者利用任何XSS漏洞并将其访问扩展到底层操作系统,“只要应用程序使用易受攻击的Electron版本(版本<1.7.13,<1.8.4或<2.0.0-beta.3),就可以允许远程执行代码。”
还不清楚有多少Electron应用程序容易受到此漏洞的影响,以及哪些补丁已经集成,目前此漏洞已收到CVE-2018-1000136的CVE标识符。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!