Electron XSS漏洞问题解决

Electron最近被公布了一个安全漏洞,xxs可以绕过Electron框架的安全检查,漏洞由由 Trustwave 发布,影响的Electron版本范围覆盖之前的< 1.7.13, < 1.8.4, and < 2.0.0-beta.3

该漏洞主要涉及Electron Api中nodeIntegration属性,以及window.open()方法。具体可查看BrowserWindow

CVE-2018-1000136
详细描述了漏洞发生条件和测试方法,简单来说,即应用禁用了nodeIntegration,且未显示声明webviewTag: false时,攻击着可以通过xxs调用window.open()方法,通过脚本重新启用nodeIntegration,从而获取通过webview调用底层node api的能力。

目前,Electron官方已紧急修复了漏洞,同时提供了解决方案:Webview Vulnerability Fix

  1. Electron版本升级
    若应用当前使用的Electron版本属于1.7.x,1.8.x或2.0.0-beta.x;那可以升级到对应的最新release,这样也不会影响到原生模块的rebuild
  2. 添加配置
app.on('web-contents-created', (event, win) => {
win.on('new-window', (event, newURL, frameName, disposition,
                      options, additionalFeatures) => {
  if (!options.webPreferences) options.webPreferences = {};
  options.webPreferences.nodeIntegration = false;
  options.webPreferences.nodeIntegrationInWorker = false;
  options.webPreferences.webviewTag = false;
  delete options.webPreferences.preload;
})
})

// 应用中未使用到webview
app.on('web-contents-created', (event, win) => {
win.on('will-attach-webview', (event, webPreferences, params) => {
  event.preventDefault();
})
})

其实我们的应用并不满足漏洞执行环境,但在dev环境下,尝试将xxs输入到console中:

var x = window.open('data://yoloswag','','webviewTag=yes,show=no');
x.eval(
  "var webview = new WebView;"+
  "webview.setAttribute('webpreferences', 'webSecurity=no, nodeIntegration=yes');"+
  "webview.src = `data:text/html;base64,PHNjcmlwdD5yZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlYygnbHMgLWxhJywgZnVuY3Rpb24gKGUscikgeyBhbGVydChyKTt9KTs8L3NjcmlwdD4=`;"+
  "document.body.appendChild(webview)"
);
xxs

window.open()确实被执行,且执行了系统命令,读取了当前目录文件读写权限等信息...

目前,使用了第二种解决方案,再次在dev模式下测试,脚本无法执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,692评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,497评论 19 139
  • 备受关注的手机摄影比赛“华为新影像大赛”已经在上周截稿。从9月9日11月20日,两个多月的时间里大赛共收到超过15...
    米拍阅读 1,859评论 0 1
  • 现代社会里,人们的物质生活条件改善了,但心中的幸福感并没有太大的提升! 因为很多现代人拼的是聪明头...
    刘欢_fde9阅读 3,502评论 1 0
  • 每一天的幸福其实很简单,就是做好重要的三件事; 每个月的成就感也不难,那就是在那个月里做好对的三件事; 每一年,当...
    苏老夫子阅读 3,449评论 1 3