[P1/高] Sandbox scanCode 漏掉 require('fs') 和动态 import,可绕过沙箱 #13

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

问题类型

安全漏洞 / 高 / 工具系统

文件位置

electron/harness/sandbox/sandbox.ts

问题描述

scanCode 用于检测代码字符串中的危险操作,但当前模式集遗漏:

  1. require('fs') / require('child_process') 等同步 require 形式
  2. import('fs') 动态 import
  3. process.binding('fs') 底层绑定
  4. Reflect.get(globalThis, 'req' + 'uire') 字符串拼接绕过
  5. new Function('return process')() 函数构造

project_memory.md 要求:

sandbox scanCode must include 28 patterns with 'i' flag and base64/$() detection to prevent encoding bypass

但实际模式数可能不足或未覆盖上述场景。

影响

  • LLM 生成的代码可通过 require/import 访问 fs / child_process
  • 沙箱被完全绕过

建议修复

  1. 补全模式列表
const DANGEROUS_PATTERNS = [
  /\brequire\s*\(\s*['"]fs['"]\s*\)/i,
  /\brequire\s*\(\s*['"]child_process['"]\s*\)/i,
  /\bimport\s*\(\s*['"]fs['"]\s*\)/i,
  /\bprocess\.binding\s*\(/i,
  /\bnew\s+Function\s*\(/i,
  /\bReflect\.get\s*\(/i,
  /\beval\s*\(/i,
  /\bFunction\s*\(\s*['"]return process['"]\s*\)/i,
  // ... 28+ patterns
];
  1. 使用 AST 解析替代正则(更准确但成本高)
## 问题类型 安全漏洞 / 高 / 工具系统 ## 文件位置 `electron/harness/sandbox/sandbox.ts` ## 问题描述 scanCode 用于检测代码字符串中的危险操作,但当前模式集遗漏: 1. `require('fs')` / `require('child_process')` 等同步 require 形式 2. `import('fs')` 动态 import 3. `process.binding('fs')` 底层绑定 4. `Reflect.get(globalThis, 'req' + 'uire')` 字符串拼接绕过 5. `new Function('return process')()` 函数构造 project_memory.md 要求: > sandbox scanCode must include 28 patterns with 'i' flag and base64/$() detection to prevent encoding bypass 但实际模式数可能不足或未覆盖上述场景。 ## 影响 - LLM 生成的代码可通过 require/import 访问 fs / child_process - 沙箱被完全绕过 ## 建议修复 1. **补全模式列表**: ```ts const DANGEROUS_PATTERNS = [ /\brequire\s*\(\s*['"]fs['"]\s*\)/i, /\brequire\s*\(\s*['"]child_process['"]\s*\)/i, /\bimport\s*\(\s*['"]fs['"]\s*\)/i, /\bprocess\.binding\s*\(/i, /\bnew\s+Function\s*\(/i, /\bReflect\.get\s*\(/i, /\beval\s*\(/i, /\bFunction\s*\(\s*['"]return process['"]\s*\)/i, // ... 28+ patterns ]; ``` 2. 使用 AST 解析替代正则(更准确但成本高)
thzxx added the ??????????? labels 2026-07-21 21:55:43 +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#13