美文网首页
Electron XSS漏洞问题解决

Electron XSS漏洞问题解决

作者: charles0427 | 来源:发表于2018-05-15 11:06 被阅读31次

    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模式下测试,脚本无法执行。

    相关文章

      网友评论

          本文标题:Electron XSS漏洞问题解决

          本文链接:https://www.haomeiwen.com/subject/iqredftx.html