Skip to content

代码安全审核的代码结果 #847

@jglwiz

Description

@jglwiz

High 级别发现

  1. operate eval - 任意 JavaScript 执行
  • 文件: src/cli.ts:498-503
  • 描述: 接受用户输入的任意 JS 并在浏览器页面上下文中执行, 无任何过滤或沙箱. 可窃取 cookies、读取敏感 DOM 内容.
  • 建议: 虽然是设计功能, 但应添加 --allow-eval 安全开关并在文档中明确风险.
  1. Plugin 安装 - 不可信代码执行
  • 文件: src/plugin.ts:570-601
  • 描述: 从 GitHub 克隆插件后立即执行 npm install + 动态加载. 插件的 package.json 可包含 postinstall 脚本实现任意代码执行.
  • 建议: 使用 npm install --ignore-scripts, 并显示安全警告.

Medium 级别发现

3 & 4. operate get text/value/html/attributes 及 operate type - DOM 注入

  • 文件: src/cli.ts:381-402, src/cli.ts:420-429
  • 描述: index 参数直接拼接进 JS 模板字符串, 无转义:
    document.querySelector('[data-opencli-ref="${index}"]')
  • 恶意 index 如 "]') || eval(...)// 可注入执行.
  • 建议: 使用 JSON.stringify() 转义 (同文件中 operate select 在 line 446 已正确使用了此方式).
  1. 网络拦截器 - 敏感数据捕获
  • 文件: src/cli.ts:311, src/interceptor.ts
  • 描述: 拦截所有 fetch/XHR 响应体 (最大 200 条, 每条 50KB), 可能包含 auth tokens、PII、会话密钥.
  • 建议: 默认过滤 auth/login/token 相关端点, 添加敏感数据警告.

Low 级别发现

┌─────┬───────────────────────┬───────────────────────────────┬────────────────────────────────────────────────────────────────┐
│ # │ 问题 │ 文件 │ 说明 │
├─────┼───────────────────────┼───────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 6 │ 命令注入 (有部分防护) │ src/external.ts:100-120 │ shell 操作符正则未覆盖所有情况, 但 execFileSync 提供了额外保护 │
├─────┼───────────────────────┼───────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 7 │ CDP 端口可预测 │ src/launcher.ts:38-45 │ 固定调试端口, 本机恶意进程可抢占或连接 │
├─────┼───────────────────────┼───────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 8 │ 路径遍历 (有部分防护) │ src/download/index.ts:220-227 │ sanitizeFilename() 替换了 /\ 但未显式处理 .. 文件名 │
├─────┼───────────────────────┼───────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 9 │ Cookie 文件权限 │ src/download/index.ts:184-205 │ 导出到 tmpdir 未设置 0o600 权限 │
└─────┴───────────────────────┴───────────────────────────────┴────────────────────────────────────────────────────────────────┘


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions