Electron 是一个由node.js,V8和Chromium构成的开源框架,该框架已被广泛用于流程的桌面应用程序,包括Github桌面,WordPress等;研究员发现通过错误配置,将允许恶意应用程序访问Node.js API和模块并滥用更多操作系统功能。
安全专家发现了Electron 软件框架中的一个漏洞,该漏洞 已被用于构建大量流行的桌面应用程序。 流行的桌面应用程序(包括Skype,Slack,GitHub桌面,Twitch,WordPress.com等)可能受到影响。
Electron框架 是由node.js,V8和Chromium构成的开源框架
Electron是一个node.js,V8和Chromium开源框架,允许开发人员使用JavaScript,HTML和CSS等Web技术来构建桌面应用程序。 在构建基于Electron框架的应用程序时,开发人员可以选择Electron API或Node.js API及其模块。 Node.js API和内置模块为开发人员提供了与操作系统更广泛的集成,并允许访问更多的操作系统功能。
为了防止滥用操作系统功能,Electron团队创建了一种机制,可以防止基于其框架的应用程序受到攻击。
“电子应用程序本质上就是网络应用程序,这意味着它们很容易受到跨站点脚本攻击,因为未能正确清理用户提供的输入。默认的Electron应用程序不仅包括访问其自己的API,还包括访问所有Node.js的 内置 模块。“读取 Trustwave发布 的分析。“这使得XSS特别危险,因为攻击者的有效载荷可以允许 执行 一些令人讨厌的事情,比如在child_process 模块中需要并在客户端执行系统命令。”
Election框架 设置 webviewTag:false”选项 可造成XSS漏洞
在桌面上运行HTML和JS代码的应用默认情况下启用了“nodeIntegration:false”选项,这意味着默认情况下禁用对Node.js API和模块的访问。
该网页视图标签 功能允许开发嵌入内容,如网页,为电子应用程序并运行它作为一个单独的进程。
通过分析:
使用WebView标签时,您还可以传入许多属性,包括 nodeIntegration 。 WebView容器默认情况下没有启用nodeIntegration。
当webPreferences配置文件中的webviewTag设置为false时,nodeIngration也设置为false,但是,如果开发人员不声明webviewTag,那么Electron应用程序会将nodeIntegration设置为false。
研究员Brendan Scarvell发现可以将nodeIntegration选项设置为“true”,将允许恶意应用程序访问Node.js API和模块并滥用更多操作系统功能。
Scarvell解释说,如果基于Electron的应用程序的开发人员没有在webPreferences配置文件中专门设置“webviewTag:false”选项,则攻击者可以利用应用程序内部的跨站点脚本(XSS)漏洞创建新的WebView组件窗口来更改设置并将nodeIngration标志设置为“true”。
XSS(跨站脚本攻击)漏洞解决办法
该专家发布了POC,攻击者可以利用这些代码来利用任何XSS漏洞并访问底层操作系统。
“如果发现 禁用 了 nodeIntegration 选项 的Electron应用程序,并且该应用程序 通过对用户输入进行糟糕的清理或应用程序的其他依赖项存在漏洞而包含XSS漏洞,则上述概念验证可以允许远程执行代码该应用程序正在使用易受攻击的Electron版本(版本<1.7.13,<1.8.4或<2.0.0-beta.3),并且尚未 手动 选择以下选项之一:
●webviewTag: false 在 其 webPreferences中 声明 。
●在其 webPreferences中 启用nativeWindowOption选项 。
●拦截新窗口事件和覆盖事件。 newGuest 没有使用提供的选项标签。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。