返回资讯中心
外部精选
软件工程
#开发者实时流

crx-gate 发布:可在 2ms 内审计 Chrome 扩展并预测 Chrome 应用商店驳回

来源标题:Crx-gate – Audit Chrome extensions and predict CWS rejections in 2ms

静态安全分析工具 crx-gate 可对 Chrome 扩展进行权限与安全检查,在 3ms 内扫描未打包目录、.zip 或 .crx 文件并给出 0–100 的风险评分,帮助在提交审核前发现可能导致 Chrome 应用商店驳回的问题。该工具支持通过 npx 直接运行,也可用 Cargo 安装,并提供 pre-commit hook 集成。

Hacker News 最新jaw0r3k2026/11/14 · 今天18 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

面向 Chrome 扩展的静态安全分析器和权限检查工具。可在 3ms 内静态检查未打包的扩展目录、.zip 包或 .crx 二进制文件。

浏览器扩展拥有对用户会话 cookie、DOM 状态、浏览历史和网络请求的特权访问。标准 Web SAST 工具(如 ESLint 或 Semgrep)检查通用 JavaScript 语法,但对 Chrome 扩展的攻击面视而不见:

crx-gate 在代码审查或提交落地之前本地运行,生成确定性的影响范围评分(0–100),并在人工审查前拦截会导致提交被拒的问题。

通过 npx(无需安装)

审计扩展目录

npx crx-gate audit ./dist

比较不同版本之间的影响范围

npx crx-gate diff ./v1.0.0 ./v1.1.0

通过 Cargo cargo install crx-gate

Pre-commit 钩子 将 crx-gate 添加到仓库的 .pre-commit-config.yaml: repos:

或直接安装到 .git/hooks/pre-commit: crx-gate hook install --ext-dir ./src

用法 crx-gate [OPTIONS] [PATH] [COMMAND]

Commands: audit 审计扩展目录、.zip 或 .crx 归档 diff 比较两个扩展版本之间的影响范围和安全态势 rules 列出所有内置安全规则和 Chrome Web Store 拒绝启发式规则 init 在当前仓库初始化 crx-gate 配置 hook 安装 git pre-commit 钩子 completions 生成 shell 自动补全脚本(bash、zsh、fish、powershell)

审计扩展

终端表格输出

crx-gate audit ./my-extension

独立的交互式 HTML 报告

crx-gate audit ./my-extension --format html --output report.html

用于 GitHub Code Scanning 的 SARIF 报告

crx-gate audit ./my-extension --format sarif --output crx-gate.sarif

机器可读的 JSON 输出

crx-gate audit ./my-extension --format json

如果发现高危或严重问题,或评分超过 60,则构建失败

crx-gate audit ./my-extension --fail-on high --max-score 60

比较两个版本 在 pull request 中捕获权限蔓延、新的污点流或风险退化: crx-gate diff ./v1.0.0 ./v1.1.0 --fail-on-degradation

Base: v1.0.0 Target: v1.1.0 Score: 10 (Grade: A) -> 94 (Grade: F) | Delta: +84 (DEGRADATION / INCREASED RISK)

Added Permissions:

  • tabs
  • cookies

Expanded Host Scopes:

  • <all_urls>

1 New Data Exfiltration Path Introduced:

  • chrome.cookies.getAll -> fetch

Shell 自动补全 为你的 shell 生成补全脚本:

Bash

crx-gate completions bash > ~/.local/share/bash-completion/completions/crx-gate

Zsh

crx-gate completions zsh > ~/.zfunc/_crx-gate

Fish

crx-gate completions fish > ~/.config/fish/completions/crx-gate.fish

配置(crx-gate.toml) 使用 crx-gate init 初始化配置文件: [audit]

如果发现达到此严重级别的问题则以代码 1 退出:none、low、medium、high、critical

fail_on = "high"

允许的最大影响范围评分(0 - 100)

max_score = 60

对于具有动态运行时绑定的框架,忽略未使用的权限

ignore_dead_permissions = false

ignore_paths = [ "/*.min.js.map", "/node_modules/**"

[rules] disabled_rules = [] custom_exfiltration_endpoints = []

带原因和过期时间的书面例外

[[waivers]] rule_id = "CWS-004" path = "manifest.json" reason = "Enterprise proxy enforcement extension requires <all_urls>" expires = "2027-01-01"

GitHub Actions 在 CI 工作流中运行 crx-gate,并将发现直接上传到 GitHub Security -> Code Scanning 标签页: name: Extension Security Audit on: pull_request: branches: [ "main" ]

jobs: audit: runs-on: ubuntu-latest steps:

  • uses: actions/checkout@v4

  • name: Run crx-gate uses: jaw0r3k/crx-gate@v1 with: path: './dist' fail-on: 'high' max-score: '60' sarif: 'crx-gate.sarif'

  • name: Upload SARIF to GitHub Code Scanning uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: 'crx-gate.sarif'

内置规则 Rule ID Severity Category Description CWS-001 Critical CWS Policy 远程托管代码执行(<script src="https://...">) CWS-002 Critical CWS Policy 动态代码执行(eval()、Function()、字符串 setTimeout) CWS-003 Critical Packaging Manifest 引用了不存在的文件(图标、弹窗、脚本) CWS-004 High Host Scope 过度的通配符主机权限(<all_urls>、:///) CWS-005 Critical Deprecation 使用已弃用的 Manifest V2 CWS-006 High CSP Violation HTML 中的内联脚本或内联事件处理器(onclick) CWS-007 Medium MV3 Lifetime 短暂 service worker 中的内存全局状态 CWS-008 Medium Architecture 声明了侧边面板但未设置打开触发器 CWS-009 High Runtime Bug manifest 中没有 "action" 键却调用了 chrome.action. CWS-010 High Runtime Bug 未声明 "tabs" 权限却访问 tab.url/tab.title CWS-011 Medium CWS Quality Manifest 描述缺失、少于 25 个字符或存在关键词堆砌 CWS-012 Critical CWS Policy 编译或流式传输远程 WebAssembly 字节码 CWS-013 High CWS Scrutiny 声明特权 debugger 权限(Tier-3 人工审查) CWS-014 Medium Frame Isolation 通配符 <all_urls> 上设置 all_frames: true 注入第三方广告 iframe PERM-DEAD Low Least Privilege 声明的权限在任何扩展代码中从未被调用 PERM-UNDECLARED High Runtime Bug 代码中调用了 Chrome API 但 manifest 中没有对应权限 PERM-OVERPRIVILEGED Medium Least Privilege 只读取非敏感的 tab.id 却声明了 tabs SEC-TAINT-LEAK Critical DLP / Security 确认存在从敏感源到网络 sink 的数据流 SEC-DOM-XSS Critical DOM Security 对 .innerHTML / .outerHTML 赋值或调用 document.write SEC-EXTERNAL-MSG-INSECURE Critical Access Control onMessageExternal 监听器缺少 sender.origin 验证 SEC-KEYLOGGER-INPUT Critical Malware / Spyware 全局 keydown 监听器或密码输入字段窥探 SEC-STORAGE-SYNC-CREDENTIALS High Privacy & DLP 明文凭据/token 存储在未加密的 chrome.storage.sync 中 SEC-C2-ENDPOINT Critical Threat Intel

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →