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`。
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
标签:C2, DLL 劫持, Petitpotam, Rust, SAST, 可视化界面, 大语言模型, 盲注攻击, 网络流量审计, 自动化漏洞挖掘, 通知系统, 错误基检测, 静态代码分析