[P1/高] BrowserWindowManager evaluate 执行任意 JS 无沙箱隔离 #46

Open
opened 2026-07-21 21:56:11 +08:00 by thzxx · 0 comments
Owner

问题类型

安全漏洞 / 高 / 工具系统

文件位置

electron/harness/tools/built-in/browser-window-manager.ts

问题描述

WebBrowserTool 通过 webContents.executeJavaScript() 在打开的网页上下文中执行任意 JS:

const result = await win.webContents.executeJavaScript(jsCode, true);

jsCode 来自 LLM,无沙箱隔离:

  1. 可访问页面所有 API(localStorage、cookies、DOM)
  2. 可发起 fetch 请求(携带用户 cookie)
  3. 可修改页面(注入表单、窃取数据)
  4. 可调用 Electron API(如果 contextIsolation 失效)

影响

  • 用户登录的网站数据被窃取
  • 会话劫持
  • 钓鱼攻击

建议修复

  1. 限定执行环境:在 iframe 或 Web Worker 中执行
  2. API 白名单:仅允许只读 DOM 操作
const ALLOWED_APIS = ['document.querySelector', 'document.querySelectorAll', 'document.title'];
// 解析 JS AST,仅允许白名单 API
  1. 超时与取消:限制执行时间
  2. 审计日志:记录所有 executeJavaScript 调用
  3. 用户确认:高风险操作(fetch、修改 DOM)需用户确认

完全隔离较难,建议先实现审计 + 超时 + 白名单。

## 问题类型 安全漏洞 / 高 / 工具系统 ## 文件位置 `electron/harness/tools/built-in/browser-window-manager.ts` ## 问题描述 WebBrowserTool 通过 `webContents.executeJavaScript()` 在打开的网页上下文中执行任意 JS: ```ts const result = await win.webContents.executeJavaScript(jsCode, true); ``` `jsCode` 来自 LLM,无沙箱隔离: 1. 可访问页面所有 API(localStorage、cookies、DOM) 2. 可发起 fetch 请求(携带用户 cookie) 3. 可修改页面(注入表单、窃取数据) 4. 可调用 Electron API(如果 contextIsolation 失效) ## 影响 - 用户登录的网站数据被窃取 - 会话劫持 - 钓鱼攻击 ## 建议修复 1. **限定执行环境**:在 iframe 或 Web Worker 中执行 2. **API 白名单**:仅允许只读 DOM 操作 ```ts const ALLOWED_APIS = ['document.querySelector', 'document.querySelectorAll', 'document.title']; // 解析 JS AST,仅允许白名单 API ``` 3. **超时与取消**:限制执行时间 4. **审计日志**:记录所有 executeJavaScript 调用 5. **用户确认**:高风险操作(fetch、修改 DOM)需用户确认 完全隔离较难,建议先实现审计 + 超时 + 白名单。
thzxx added the ??????????? labels 2026-07-21 21:56:11 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MetonaTeam/metona-ai-desktop#46