BinChicken-AppSec/Agentic-SAST

GitHub: BinChicken-AppSec/Agentic-SAST

一款基于 Rust 和 LLM 的 Agentic 静态应用安全测试扫描器,通过智能体驱动的多阶段 pipeline 自动发现、验证漏洞并生成修复建议。

Stars: 0 | Forks: 0

# BC Agentic SAST Harness 一个用 Rust 编写的 Agentic SAST(静态应用程序安全测试)扫描器。 它将 LLM 指向代码仓库(或 PR diff),让其映射代码库、构建威胁模型、 搜寻漏洞、对抗性地验证自身的发现、评估严重程度,并可选择性地提出和对修复进行评分。 随后,它会输出 Markdown 报告、SARIF 文件,以及(可选) 带有原生建议修复 diff 的 GitHub PR 审查评论。 最初受 Visa 的 Apache-2.0 Python Agentic SAST 工具 `vvaharness`(版权所有 2026 Visa, Inc.) 启发并从中移植而来——此处仅将其作为创意和 pipeline 设计的来源进行说明; 有关 Apache-2.0 要求的归属声明,请参阅 `NOTICE`。这是一个独立的 Rust 实现,而非 fork:虽然 pipeline 阶段、提示词和评分逻辑是逐行为进行移植的, 但具体的实现、crate 边界以及若干设计选择均为本项目自主决定 (例如:使用通过网关中介的 `LlmClient` trait 代替直接的 provider SDK, 使用受限的 `ToolExecutor` 代替原始文件系统访问,以及采用约 40 个 单一职责的 crate 组成 workspace,而非单体结构)。 ## 状态 在最初架构计划的所有三个阶段(扫描 pipeline、修复和验证)均已实现功能。 ``` flowchart LR subgraph Scan["Phase 1 · Scan (S1-S8)"] direction LR S1[Preprocess] --> S2[Threat model] S2 --> S3[Decompose] S3 --> S4[Deep-dive] S4 --> S5[Prefilter] S5 --> S6[Verify] S6 --> S7[Dedup] S7 --> S8[Chain analysis] end S8 --> Report[Markdown + SARIF report] Report -.optional.-> S10["Phase 2 · Remediate (S10)
policy-gated patch + diff capture/revert"] S10 -.optional.-> S11["Phase 3 · Validate (S11)
two-persona LLM panel grades the fix"] S11 --> PR[GitHub PR comments / suggested-fix diffs] ``` 修复是带有 diff 捕获/还原功能的、受策略限制的补丁生成; 验证则是一个双人设 LLM 评审组,负责对修复是否真正解决了发现的问题进行评分。该工具已在三个层面上进行了验证: - **单元/集成测试**。整个 workspace 的行/函数覆盖率达到 100%/100% (存在两处极小的、已记录的工具例外情况;请参阅 `docs/parity-harness.md` 及下文的覆盖率门禁命令)。 - **一致性测试套件**(`bc-parity-tests`,`parity/`)。针对真实的 `vvaharness` Python 源码进行交叉验证,涵盖 CVSS 评分、脱敏处理、 配置合并/环境变量展开,以及 S11 修复验证评分。在输入空间足够小的情况下会进行穷举测试 (所有 2592 个有效的 CVSS 向量,所有 625 种门禁状态组合),且是针对真实的 Python 代码进行检查, 而非手动推导的参考值。 - **真实的端到端运行**。在一个植入漏洞的小型测试仓库上,针对在线的 OpenAI 后端进行。它成功发现了植入的 SQL 注入和 命令注入漏洞,构建了威胁模型,运行了对抗性验证, 并生成了正确的报告和 SARIF 文件。 有关此工具自身的安全状况,请参阅 `docs/compliance/CONTROL_MAPPING.md`(OWASP ASVS、NIST SSDF、PCI-DSS、 PCI 安全软件标准)和 `docs/compliance/AI_AGENT_SECURITY_REVIEW.md` (OWASP LLM Top 10、MITRE ATLAS、AARM),其中包括一些已发现但尚未解决的问题。在将任何配置视为 生产环境加固之前,请务必阅读这些文档。 **尚未完成**:尚未运行真实的 `docker build` 和真实的 GitHub Actions 触发器, 因为当前开发环境均不具备这些条件。容器/CI/Action 的正确性仅基于文档审查, 而非实际运行结果。 ## 构建 ``` cargo build --release -p bc-cli ``` 生成 `bc-sast` 二进制文件。要求网络能够访问您配置的任何 LLM 网关/端点;没有内置模型,也不支持离线模式。 ## 运行 ``` bc-sast --repo \ --gateway-base-url https://api.openai.com/v1 \ --gateway-api-key \ --dialect openai \ --model ``` 默认写入 `/security-scan/report.md` 和 `report.sarif` (可通过 `--out-md`/`--out-sarif` 覆盖)。`--dialect anthropic` 会使用 Anthropic Messages API 的数据结构;这两种方言都可以指向 直接的 provider 端点,或兼容 OpenAI/Anthropic 的 AI 网关(Bifrost、 Portkey 等)。有关完整的参数列表,请参阅 `bc-sast --help`,包括 `--remediate`、`--config`、`--github-token`/`--pr-number`(发布 PR 评论)和 `-i`/`--interactive`(用于修复的终端选择器)。 ## Workspace 布局 `crates/` 下约有 40 个 crate,按依赖层级组织:纯逻辑、 I/O 边界、pipeline 阶段、编排,然后是 CLI。Pipeline 的每个阶段 (从 `bc-stage-s1` 到 `bc-stage-s11`)都是独立的 crate; 共享的关注点(脱敏、路径限制、CVSS 评分、SARIF 生成、 配置加载)被提取到各自单一用途的 crate 中, 而不是直接穿插在各个阶段中。 ## 验证 ``` cargo test --workspace cargo clippy --workspace --all-targets -- -D warnings cargo fmt --all --check cargo deny check advisories bans licenses sources ``` 覆盖率(排除了 `bc-cli` 自身已知的 `[lib]`+`[[bin]]` cargo-llvm-cov 归因差异,以及需要 Python venv 的 `bc-parity-tests`;参见 `docs/parity-harness.md`): ``` cargo llvm-cov --workspace --exclude bc-cli --exclude bc-parity-tests \ --fail-under-lines 100 --fail-under-functions 100 cargo llvm-cov -p bc-cli --fail-under-lines 99.5 --fail-under-functions 100 ``` ## 文档 完整索引请参阅 [`docs/README.md`](docs/README.md)。重点内容: - `docs/solution-design.md`:高层设计,包含 Mermaid 图表 以及可编辑的 `docs/diagrams/solution-design.drawio` 副本。 - `docs/USER_GUIDE.md`:CLI 参考(模式、参数、方言、输出)。 - `docs/architecture.md`:crate 层级图和 pipeline 数据流。 - `docs/configuration.md`:可选的 `--config` YAML 文件。 - `docs/remediation.md` / `docs/validation.md`:阶段 S10 和 S11。 - `docs/compliance/`:控制映射、AI Agent 安全审查,以及 专门的 MITRE ATLAS 威胁模型。 - `SECURITY.md`:漏洞报告。 ## 许可证 Apache-2.0。请参阅 `LICENSE` 和 `NOTICE`。
标签:C2, DLL 劫持, Petitpotam, Rust, SAST, 可视化界面, 大语言模型, 盲注攻击, 网络流量审计, 自动化漏洞挖掘, 通知系统, 错误基检测, 静态代码分析