WRG-11/devguard-scan

GitHub: WRG-11/devguard-scan

一款零上传、纯浏览器端运行的机密扫描器,将 Python 密钥检测引擎移植为无依赖的前端静态页面,在本地识别代码中泄露的 API 密钥与 token。

Stars: 0 | Forks: 0

# devguard-in-browser 一款 **100% 客户端** 的机密扫描器。粘贴代码或拖入文件;它能标记出泄露的 API 密钥、token 和私钥块,**不会有一个字节离开你的** 浏览器。它是 `wrg_devguard` `scan-secrets` 引擎的一个静态、无依赖移植版本——拥有相同的 10 条规则,相同的包含/排除逻辑, 相同的行/列报告。 ## 状态 概念验证——引擎的“立即试用”功能演示,而非成熟产品。 ## 为什么它很有趣 - **0 字节上传。** 所有扫描均在浏览器的 `scan.js` 中运行。源码中没有任何地方使用 `fetch`、`XMLHttpRequest`、`WebSocket`、`sendBeacon`、分析脚本或外部 CDN。打开 DevTools 的 **Network** 标签页,扫描一个文件, 你会发现在初始页面加载后 **零** 个网络请求。 - **绝不显示机密信息。** 每个匹配项都报告为 `[REDACTED]`;原始的 机密值绝不会出现在结果表格、DOM 或任何 payload 中(与 `secrets.py:107` 保持一致)。 - **检测一致性**,与原生的 Python 工具保持一致,已通过测试工具 (见下文)证明——而不仅仅是视觉上相似。 ## 运行说明 它使用 ES modules,因此请通过 http 提供服务(modules 在 `file://` 下会被阻止): ``` # 从 repo root py -3 -m http.server 8080 # 然后打开 http://localhost:8080/ ``` 任何静态主机(GitHub Pages、Netlify、S3)的工作方式都是一样的——一个在线 实例运行在 。页面 加载完成后,你可以完全断开网络——它依然能正常工作。 ## 检测内容(10 条规则——原样移植) | rule_id | severity | source | |-----------------------------|----------|-------------------------| | `openai_api_key` | ERROR | `secrets.py` SECRET_RULES | | `github_token` | ERROR | " | | `aws_access_key_id` | ERROR | " | | `slack_token` | ERROR | " | | `private_key_block` | ERROR | " | | `generic_secret_assignment` | WARNING | " | | `google_api_key` | ERROR | " | | `stripe_secret_key` | ERROR | " | | `github_fine_grained_pat` | ERROR | " | | `slack_webhook_url` | ERROR | " | ## 一致性与冒烟测试工具 ``` # 从 repo root pwsh -NoProfile -ExecutionPolicy Bypass -File .\scripts\run_parity.ps1 ``` JS 引擎 + UI 冒烟测试通过 `run_parity.ps1` 独立运行。该测试工具: 1. 通过 Node 在 `fixtures/` 上运行 **JS** 引擎(`scan.js`)。 2. 在相同的 `fixtures/` 上运行 **原生 Python** `wrg_devguard.secrets.scan_secrets()`。 3. 比较检测结果集及严重性计数(`rule_id`/`file`/`line`/`column`)—— 出现任何差异均以非零状态退出。 4. 运行无头 UI 路径冒烟测试,证明浏览器粘合代码渲染检测结果时使用了 `[REDACTED]`,且绝不会显示原始值。 **上次运行:** 在 10 条规则的语料库中,9/9 个检测结果逐字节完全一致,摘要 计数完全相同(6 个 ERROR + 3 个 WARNING);UI 冒烟测试通过 (PASS)。 ## Fixtures `fixtures/` 包含 **纯合成** 内容——每个“机密”都是 虚假/无功能的,其存在仅仅是为了测试这 10 条规则以及 包含/排除/无误报路径。没有提交任何真实的凭证。 ## 文件 ``` index.html static SPA (inline CSS, no CDN) app.js UI glue (intake → scan → render); no network APIs scan.js shared engine — runs in browser AND Node (single source of truth) package.json type:module (zero runtime deps) fixtures/ synthetic parity corpus scripts/ js_reference_dump.mjs · py_reference_dump.py · parity_compare.py ui_smoke.mjs · run_parity.ps1 ``` ## 不在范围内 (MVP) git/repo 克隆 · policy-lint / ai_check / 威胁检查 · 账户 / 后端 / 网络 · Pyodide · 发布/托管。单页面,单功能:secret-scan。 ## 第二阶段 (非此 POC) 如果获得关注:将采用基于 Pyodide 的模式,在浏览器中原样运行 `secrets.py`(及其他 零依赖的 WRG 工具)。公开的 GitHub Pages 主机已 上线 ();Pyodide 模式 将暂时搁置,直到在线演示证明了实际需求。 ## License MIT — 见 [LICENSE](LICENSE)。 ## WRG-11 生态系统的一部分 - [mcp-objauthz-lab](https://github.com/WRG-11/mcp-objauthz-lab) — 专为学习 BOLA/IDOR 设计的含漏洞 MCP server - [wrg-sigma-rules](https://github.com/WRG-11/wrg-sigma-rules) — 68 条 sigma 检测规则 + 3 个 MCP 工具 完整索引 → [github.com/WRG-11](https://github.com/WRG-11)
标签:StruQ, 云安全监控, 多模态安全, 敏感信息扫描, 数据可视化, 本地处理, 浏览器端, 自定义脚本, 逆向工具, 静态分析