allsmog/vuln-scout

GitHub: allsmog/vuln-scout

AI 驱动的白盒渗透测试插件,为 Claude Code 赋能,覆盖多语言代码的自动审计与威胁建模。

Stars: 14 | Forks: 1

VulnScout

VulnScout

AI 驱动的白盒渗透测试,适用于 Claude Code

一条命令。完整审计。任何代码库。 ``` /whitebox-pentest:full-audit /path/to/code ``` VulnScout 是一个 Claude Code 插件,能够将 Claude 转变为自主安全审查员。它将经过实战考验的渗透测试方法论(HTB 学院、OffSec AWAE/OSWE)带入终端,支持 STRIDE 威胁建模、以证据为导向的发现结果,并兼容包括 Solidity 智能合约在内的 9 种语言。 **已在 OWASP Juice Shop v17.1.1 上完成端到端测试** — 涵盖 SQL 注入、XSS、路径遍历、SSTI、SSRF、硬编码密钥等,发现 62 个问题。 ## 为何选择 VulnScout? 传统的 SAST 工具只识别模式,而 VulnScout **理解你的应用程序**。 - **自动化扫描流水线** — 单条命令集成 Semgrep + Joern CPG + 密钥扫描,输出 SARIF 与 Markdown - **先威胁建模,再进行探测** — STRIDE 分析优先识别关键问题 - **追踪数据流,而非仅匹配模式** — 跨文件与服务跟踪用户输入从源头到汇点 - **15 个 CPG 验证脚本** — 通过代码属性图(CPG)分析验证可利用性,而非仅做模式匹配 - **CVSS 3.1 自动评分** — 每个发现项附带 CVSS 向量与数值评分 - **支持超大规模代码库** — 语言感知压缩(Go 减少 97%,Python 减少 90%),可审计百万级 Token 的单体仓库 - **漏洞链关联** — 发现 SSRF 到 SSTI 到 RCE 的攻击链,绕过单模式扫描器的局限 - **多语言原生支持** — 同时审计 Go、Python、TypeScript 微服务,作为一个互联系统 ## 快速开始 ### 作为 Claude Code 插件 ``` # 选项 1:将符号链接指向项目的插件目录 mkdir -p .claude/plugins ln -s /path/to/vuln-scout/whitebox-pentest .claude/plugins/whitebox-pentest # 选项 2:复制到您的项目 cp -r /path/to/vuln-scout/whitebox-pentest .claude/plugins/whitebox-pentest # 运行完整审计 /whitebox-pentest:full-audit . # 或从威胁建模开始 /whitebox-pentest:threats ``` ### 作为 Kuzushi 任务 VulnScout 可作为 [Kuzushi](https://github.com/allsmog/Kuzushi) 中的原生任务使用。安装后,Kuzushi 会将 vuln-scout 插件加载到其任务 DAG 中, alongside Semgrep、CodeQL 以及其他 15+ 检测任务。 ``` # 在 Kuzushi 扫描中运行 vuln-scout npx kuzushi /path/to/repo --tasks vuln-scout # 与其他任务结合 npx kuzushi /path/to/repo --tasks semgrep,vuln-scout,threat-hunt # 为 vuln-scout 使用特定模型 npx kuzushi /path/to/repo --tasks vuln-scout --task-model vuln-scout=anthropic:claude-opus-4-6 # 通过 .kuzushi/config.json 配置 # { "tasks": ["semgrep", "vuln-scout"], "taskConfig": { "vuln-scout": { "model": "anthropic:claude-opus-4-6", "maxFindings": 30 } } } ``` Kuzushi 在 vuln-scout 之上提供分类、验证、PoC 生成与报告功能。 ## 独立扫描流水线 VulnScout 包含可独立于 Claude Code 运行的 Python 脚本: ``` # 使用 Semgrep 和秘密扫描进行扫描 python3 scripts/scan_orchestrator.py /path/to/code --tools semgrep --secrets --format sarif # 创建 Joern CPG(按内容哈希缓存) python3 scripts/create_cpg.py /path/to/code # 使用 Joern CPG 分析批量验证发现结果 python3 scripts/batch_verify.py --findings .claude/findings.json --cpg .joern/*.cpg # 从现有的发现工件渲染 HTML 或 Markdown python3 scripts/report.py .claude/findings.json --format html --output security-report.html # CI 网关:发现高严重性问题时失败 python3 scripts/scan_orchestrator.py . --tools semgrep --fail-on high --format sarif --output findings.sarif # 验证并运行提示/技能评估套件 python3 whitebox-pentest/scripts/validate_evals.py python3 whitebox-pentest/scripts/run_prompt_evals.py ``` ## 你得到什么 ### 13 条命令 | 命令 | 功能 | |------|------| | `/whitebox-pentest:full-audit` | **一条命令完成全部** — 范围界定、威胁建模、审计、报告 | | `/whitebox-pentest:threats` | 带有数据流图的 STRIDE 威胁建模 | | `/whitebox-pentest:sinks` | 在 9 种语言中查找危险函数 | | `/whitebox-pentest:trace` | 跟踪数据从源头到汇点 | | `/whitebox-pentest:scan` | 运行 Semgrep、CodeQL 与 Joern,合并为一个发现工件 | | `/whitebox-pentest:scope` | 通过智能压缩处理大型代码库 | | `/whitebox-pentest:propagate` | 发现一个漏洞后,查找所有同类模式实例 | | `/whitebox-pentest:verify` | 基于 CPG 的误报消除 | | `/whitebox-pentest:report` | 从共享发现工件渲染 Markdown、JSON、SARIF 或 HTML | | `/whitebox-pentest:diff` | 比较 git 引用之间的安全姿态并高亮回归 | | `/whitebox-pentest:auto-fix` | 对已验证的发现项自动生成补丁并修复 | | `/whitebox-pentest:create-rule` | 从确认的攻击模式生成自定义 Semgrep 规则 | | `/whitebox-pentest:mutate` | 对安全控制进行变异测试以发现检测盲区 | ### 8 个自主代理 代理独立运行并返回详细分析: - **app-mapper** — 映射架构与信任边界 - **threat-modeler** — STRIDE 分析与数据流图(依赖 app-mapper 输出) - **code-reviewer** — 主动识别漏洞 - **local-tester** — 动态测试指导(交由 poc-developer) - **poc-developer** — 构建 PoC 验证 - **patch-advisor** — 提供具体修复与代码补丁 - **false-positive-verifier** — 证据驱动验证,支持 NEEDS_REVIEW 路径 - **attack-researcher** — 探索超越模式匹配的自主攻击向量 ### 15 个 Joern CPG 验证脚本 每个脚本通过代码属性图数据流分析来证明或否定漏洞: | 脚本 | 验证内容 | |------|----------| | verify-sqli | SQL 注入(参数化、绑定 API) | | verify-cmdi | 命令注入(shell 与数组执行) | | verify-xss | 跨站脚本(编码、Content-Type) | | verify-path | 路径遍历(强标准化与弱标准化) | | verify-ssrf | 服务器端请求伪造(URL 校验、允许列表) | | verify-xxe | XML 外部实体注入(实体禁用) | | verify-ssti | 服务器端模板注入(文件系统与用户模板) | | verify-deser | 不安全的反序列化(SafeLoader、ObjectInputFilter) | | verify-ldap | LDAP 注入(过滤转义) | | verify-randomness | 不安全的随机性(加密替代方案) | | verify-reentrancy | Solidity 重入攻击(CEI 模式) | | verify-overflow | Solidity 整数溢出(SafeMath、Solidity >=0.8) | | verify-access-control | Solidity 缺失访问控制(onlyOwner、tx.origin) | | verify-delegatecall | Solidity 委托调用风险(代理模式、EIP-1967) | | verify-generic | 为没有专用脚本的类型提供回退检测 | ### 27 个自动激活技能 技能在相关场景下自动激活,无需配置: **核心分析**:dangerous-functions、vuln-patterns、data-flow-tracing、cpg-analysis、exploit-techniques **OWASP 映射**:security-misconfiguration、cryptographic-failures、logging-failures、exception-handling、sensitive-data-leakage、business-logic **高级功能**:threat-modeling、vulnerability-chains、cross-component、cache-poisoning、postmessage-xss、sandbox-escapes、framework-patterns、nextjs-react **基础设施**:workspace-discovery、mixed-language-monorepos、owasp-2025、secret-scanning **扩展覆盖**:ai-ml-attacks、owasp-api-top10、cloud-native、compliance-mapping ### 框架安全模式 针对以下框架提供专用检测模式: - **Django** — ORM 绕过、模板注入、CSRF 豁免、设置泄露 - **Rails** — 批量赋值、SQL 插值、ERB 注入、Marshal.load - **Spring Security** — SpEL 注入、CORS/CSRF 误配置、actuator 暴露 - **GraphQL** — 内省、深度/复杂度限制、批处理、嵌套认证绕过 - **Next.js/React** — Server Actions SSRF、中间件绕过、Server Component 数据泄露 - **Flask/Twig/Blade** — SSTI、过滤器回调、沙箱逃逸 ## 支持的语言 | 语言 | Token 压缩率 | 静态分析 | CPG 验证 | |------|--------------|----------|----------| | Go | 95-97% 更少 Token | Semgrep、Joern | 是 | | TypeScript/JS | ~80% 更少 Token | Semgrep、CodeQL | 是 | | Python | 85-90% 更少 Token | Semgrep、Joern | 是 | | Java | 80-85% 更少 Token | Semgrep、CodeQL | 是 | | PHP | 80-85% 更少 Token | Semgrep | 是 | | Ruby | 85-90% 更少 Token | Semgrep | | | Rust | 85-90% 更少 Token | Semgrep | — | | C#/.NET | 80-85% 更少 Token | Semgrep、CodeQL | — | | Solidity | 70-80% 更少 Token | Semgrep、Slither | 是(4 个脚本) | ## OWASP Top 10 映射 | # | OWASP Top 10 | 覆盖范围 | 主要技能 | |---|---------------|----------|----------| | A01 | 失效的访问控制 | 已覆盖 | `business-logic`、`owasp-api-top10` | | A02 | 加密缺陷 | 已覆盖 | `cryptographic-failures` | | A03 | 注入 | 已覆盖 | `vuln-patterns`、`dangerous-functions` | | A04 | 不安全的设计 | 已覆盖 | `business-logic`、`threat-modeling` | | A05 | 安全配置错误 | 已覆盖 | `security-misconfiguration`、`cloud-native` | | A06 | 易受攻击或过时的组件 | 暂不覆盖 | — | | A07 | 身份识别与认证失败 | 已覆盖 | `vuln-patterns` | | A08 | 软件与数据完整性缺陷 | 已覆盖 | `vuln-patterns`、`ai-ml-attacks` | | A09 | 安全日志与监控失败 | 已覆盖 | `logging-failures`、`sensitive-data-leakage` | | A10 | 服务器端请求伪造 | 已覆盖 | `vuln-patterns`、`framework-patterns`、`cloud-native` | **覆盖 9/10 类。A06 故意不覆盖 — VulnScout 专注于源代码审查与可利用性,而非依赖项清单。** ## 扫描结果工件与 CI 工作流 `/scan`、`/verify` 与 `/full-audit` 共享同一约定:`.claude/findings.json`。 - `schema_version` 标识工件版本 - `kind` 区分可报告的 `finding` 与审计枢纽 `hotspot` - `stable_key` 为每项提供免抑制标识符 - `source_tool` 与 `evidence` 为必填字段 - `cvss_vector` 与 `cvss_score` 提供 CVSS 3.1 评分 - 仅统计 `kind == "finding"` 且未抑制的条目作为严重性汇总 提示优先编排会生成两个持久化伴随工件: - `.claude/audit-plan.md` — 记录模块优先级、攻击面与验证策略 - `.claude/review-ledger.json` — 记录审计计划、威胁模型与发现验证的对抗评审轮次 CI 相关标志: ``` --since-commit # Scope to recent changes --suppressions # Apply .vuln-scout-ignore suppressions --fail-on # Exit code 2 when blocking findings remain --format sarif|json|md # Machine-readable or human-readable output --secrets # Enable gitleaks/trufflehog secret scanning ``` ## 工作原理 ``` /full-audit automatically: 1. Measures codebase --> Too big? Compresses with language-aware strategy 2. Detects frameworks --> Next.js, Flask, Spring, Rails, Django, Solidity... 3. Threat models --> STRIDE analysis, DFDs, trust boundaries 4. Plans the audit --> Writes `.claude/audit-plan.md` before deep dives 5. Adversarial review --> Writes `.claude/review-ledger.json` for threat/finding review loops 6. Scans (Semgrep) --> Pattern matching + taint analysis 7. Verifies (Joern) --> CPG data flow proof per finding 8. Chains findings --> Connects SSRF + SSTI + RCE across services 9. Reports --> Markdown, JSON, or SARIF with CVSS scores ``` ### 多语言单体仓库 拥有 Go 网关、Python ML 服务与 TypeScript 前端?VulnScout 可统一处理: ``` /whitebox-pentest:full-audit ~/code/platform Polyglot detected: Go (450 files) + Python (380) + TypeScript (420) Findings by Service: auth-service (Go): 2 CRITICAL, 1 HIGH api-gateway (Go): 1 HIGH, 2 MEDIUM ml-pipeline (Python): 1 CRITICAL, 2 HIGH web-frontend (TypeScript): 3 MEDIUM Cross-Service Findings: Auth token not validated in ml-pipeline (CRITICAL) Error messages leak from Python to Gateway (MEDIUM) ``` ## 漏洞覆盖范围 - **注入**:SQL、命令、LDAP、模板(SSTI)、XXE - **认证**:绕过、会话攻击、JWT 缺陷 - **访问控制**:IDOR、权限提升、BOLA(API) - **业务逻辑**:流程绕过、状态操控、信任边界违规 - **密码学**:弱算法、硬编码密钥、不安全随机性 - **反序列化**:Java、PHP、Python、.NET、ML 流水线(joblib/torch.load) - **API 安全**:GraphQL 深度攻击、批量赋值、gRPC 反射 - **云原生**:IMDS 端点、S3 误配置、K8s RBAC、Serverless 环境泄露 - **竞态条件**:TOCTOU、双重支付攻击 - **数据泄露**:日志中的凭证、错误暴露、密钥扫描(Git 历史) - **智能合约**:重入、整数溢出、访问控制、委托调用、闪电贷 - **合规性**:PCI-DSS、HIPAA、SOC 2、NIST CSF 映射 ## 先决条件 **必需:** ``` npm install -g repomix # Codebase compression for large repos ``` **建议(增强扫描能力):** ``` pip install semgrep # Pattern matching + taint analysis ``` **可选(深化分析):** ``` # Joern CPG 分析(数据流验证) curl -L "https://github.com/joernio/joern/releases/latest/download/joern-install.sh" | bash # 秘密扫描(Git 历史记录) brew install gitleaks # or: pip install trufflehog # Solidity 分析 pip install slither-analyzer ``` ## 方法论 VulnScout 实现了以下方法论: - **HTB 学院** — 白盒渗透测试流程(4 阶段) - **OffSec AWAE** — 高级 Web 攻击与利用(WEB-300) - **NahamSec** — 深入应用理解与业务逻辑聚焦 该插件支持两种互补方法: 1. **Sink-First** — 查找危险函数并反向追踪数据流 2. **Understanding-First** — 映射应用后再结合上下文进行探测 两者协同工作。理解能力可发现 Sink 扫描遗漏的业务逻辑漏洞。 ## 差异感知扫描 对最近变更或 PR 差异进行范围限定,以获得快速的 CI 反馈: ``` # 仅扫描自已知基准以来更改的文件 /whitebox-pentest:full-audit . --since-commit origin/main # 优先处理最近更改的模块 /whitebox-pentest:full-audit . --recent 7 # 无头 PR 网关:差异扫描、JSON 输出、无提示 /whitebox-pentest:full-audit . --since-commit origin/main --quick --json --no-interactive # 对更改文件进行增量 Semgrep 扫描 /whitebox-pentest:scan . --since-commit origin/main --format sarif --fail-on high ``` `--diff-base` 仍作为向后兼容的别名保留。 ## 动态验证 可选地执行生成的 PoC 脚本来确认可利用性: ``` # 使用动态 PoC 验证进行审计(每个 PoC 需要明确批准) /whitebox-pentest:full-audit . --verify-dynamic ``` 安全优先:PoC 默认在 `--dry-run` 模式下运行,需用户确认,超时 30 秒,并必须包含清理函数。 ## 项目结构 ``` whitebox-pentest/ .claude-plugin/plugin.json # Plugin manifest agents/ # 8 autonomous security analysts commands/ # 13 slash commands hooks/ # 4 background automation hooks skills/ # 27 auto-activated knowledge modules evals/ # Prompt/skill trigger and workflow eval definitions scripts/ scan_orchestrator.py # Main scan pipeline run_semgrep.py # Semgrep wrapper + normalizer run_secrets.py # Secret scanner (gitleaks/trufflehog) create_cpg.py # Joern CPG creation + caching batch_verify.py # Batch CPG verification bundle_joern.py # Script bundler for Joern compatibility markdown_report.py # Report generator artifact_utils.py # Findings schema, SARIF, CVSS, dedup prompt_artifacts.py # Audit plan, review ledger, and state validators validate_evals.py # Prompt eval definition validator run_prompt_evals.py # Prompt/skill benchmark runner tool_runners/ # Modular tool runner package joern/ # 15 CPG verification scripts ``` ## 许可证 [MIT](LICENSE)
标签:AI安全测试, Claude插件, Code Property Graph, CVSS 3.1评分, Go, IPv6支持, Markdown报告, OWASP 2025, Python, Ruby工具, SARIF输出, SAST, Solidity智能合约, SSRF, SSTI, STRIDE威胁建模, TypeScript, XSS, 单体仓库, 多语言支持, 安全审查, 安全插件, 安全测试框架, 数据流追踪, 无后门, 日志审计, 漏洞情报, 漏洞链分析, 白盒渗透测试, 百万Token审计, 盲注攻击, 硬编码密钥, 自动化渗透, 自动扫描管道, 语言压缩, 路径遍历, 逆向工具