JJsilvera1/Blue-Team
GitHub: JJsilvera1/Blue-Team
BlueTeam 是一款基于多 LLM 协作架构的应用安全源码扫描工具,通过多个独立模型交叉审查来发现、验证和报告代码中的漏洞。
Stars: 0 | Forks: 0
# BlueTeam
BlueTeam 最初基于
[Capital One 的开源 VulnHunter](https://github.com/capitalone/VulnHunter)。
它运行良好,但在与 OpenAI 的 Codex Security 工作流进行对比后,我们
认为它还有进一步发展的空间。
因此我们将其改造成了多模型架构。不同的模型训练方式各异,注意到的
问题不同,盲点也各不相同。BlueTeam 允许最多三个
模型独立进行扫描,然后将它们的发现合并,并让它们相互
质疑和审查彼此的工作。
我们在此基础上不断构建:威胁建模、确定性检查、验证、
攻击路径、可恢复扫描以及可选的 Docker 测试。你现在可以通过
Codex、Claude、OpenRouter、OpenAI、本地模型或混合多种提供商来运行它。
到目前为止,我们只进行了一次直接对比,因此我们还不宣称它击败了
任何现有工具。不过在那次 Quick 模式测试中,BlueTeam 为提供的所有
九项 Codex Security 发现找到了对应的匹配项,报告了其中的八项,并
推迟了一项无法仅从代码库中证实的发现。这是一个充满希望的开始,
我们计划继续公开测试它。
## 它的现状
| 能力 | 作用 |
|---|---|
| 独立模型团队 | 运行一到三个互不干预的通用型“猎手”,随后让它们对合并后的工作进行质疑和审查 |
| 自带提供商 | 支持 Anthropic、OpenAI、OpenRouter、Gemini、Codex CLI OAuth、Ollama 以及兼容 OpenAI 的本地服务器 |
| 威胁建模优先扫描 | 在判定代码库是否安全之前,先梳理出参与者、资产、入口点、信任边界和危险操作 |
| 确定性辅助 | 使用内置规则和可选工具(如 Semgrep、Gitleaks、Trivy 和 ast-grep),确保模型不是孤立工作 |
| 靠证据而非直觉 | 要求在候选问题成为可报告的发现之前,必须具备来源、控制点、汇聚点、可达路径、影响和反证 |
| 更安全的执行 | 默认静态读取源代码;目标代码仅在你明确允许 Docker 验证时才会运行 |
| 跨越失败的检查点 | 保存工作进度、使用量、成本、覆盖范围和未完成的任务,以便长时扫描可以恢复,而不必从头开始 |
## 使用体验
设置向导会将每个已激活的提供商放入同一个模型列表中。在你做出选择之前,
它会显示上下文大小、定价、缓存支持以及免费模型标签。

扫描开始后,你可以看到当前正在运行的阶段、正在工作的模型、
已耗时、当前预估以及截至目前的使用量。长时间的扫描
不应该感觉像是在盯着一个卡住的终端。

## 试用
你需要 Python 3.12+、Git、一个你有权测试的代码库,以及至少
一个模型提供商。除非你希望 BlueTeam 执行测试或
重现某个发现,否则你不需要 Docker。
### 1. 安装
Windows PowerShell:
```
git clone https://github.com/JJsilvera1/Blue-Team.git
cd Blue-Team
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .\blueteam-agent
```
macOS 或 Linux:
```
git clone https://github.com/JJsilvera1/Blue-Team.git
cd Blue-Team
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ./blueteam-agent
```
打开新终端后需再次激活 `.venv`。如果 PowerShell 阻止了
激活,请运行:
```
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1
```
### 2. 配置提供商
OpenRouter 是最简单的远程入门选择:
```
blueteam env-example --write "$HOME\.blueteam\providers.env"
notepad "$HOME\.blueteam\providers.env"
```
macOS 或 Linux:
```
blueteam env-example --write ~/.blueteam/providers.env
nano ~/.blueteam/providers.env
```
添加你使用的提供商:
```
OPENROUTER_API_KEY=your-openrouter-key
# OPENAI_API_KEY=你的-openai-key
# ANTHROPIC_API_KEY=你的-anthropic-key
# GEMINI_API_KEY=你的-gemini-key
```
请勿将提供商密钥放置在目标代码库中或提交到 Git。
BlueTeam 会加载 `~/.blueteam/providers.env`,而不会将密钥复制到其
TOML 模型配置中。
其他选择:
- Codex CLI:运行 `codex login`;BlueTeam 会使用已认证的 CLI,而不会读取或存储其 OAuth token。
- Ollama:在本地启动 Ollama;通常不需要 API key。
- vLLM、llama.cpp、LM Studio 或 LocalAI:配置运行时的兼容 OpenAI 的 endpoint。
### 3. 运行向导
```
blueteam init
```
向导会要求提供:
1. 代码库路径或 Git URL,以及可选的 branch、tag 或 commit。
2. 扫描级别:Quick、Standard、Deep 或 Exhaustive。
3. 从实时的提供商目录中选择一到三个核心模型。
4. 静态分析或显式的 Docker 验证。
5. 最终确认,显示模型的运行位置(本地性)及源码暴露情况。
对于首次运行,请选择 **Quick**、**1 个模型** 和 **静态/只读**。
要在不重建提供商设置的情况下再次扫描:
```
blueteam scan C:\path\to\repository
```
### 4. 确认是否真正完成
BlueTeam 对“安全”一词持有严格的定义。如果提供商失败、
必需的覆盖面未完成,或者预算耗尽导致运行中止,结果即为
未完成——而非安全。
| 状态 | 含义 |
|---|---|
| `COMPLETE_CLEAN` | 必需的覆盖范围已完成,没有可报告的发现 |
| `COMPLETE_FINDINGS` | 必需的覆盖范围已完成,存在可报告的发现 |
| `COMPLETE_CONDITIONAL` | 安全结论仍为条件性或被推迟;非安全状态 |
| `INCOMPLETE_COVERAGE` | 缺少强制性的工作或证据;绝不属于安全状态 |
| `INCOMPLETE_LIMIT` | 成本、token、时长或取消限制导致工作停止 |
| `FAILED` | 提供商或引擎故障 |
交互式未完成扫描会提示从检查点恢复。自动化流程
可以显式恢复:
```
blueteam scan --resume C:\path\to\results
```
## 在其他编程 Agent 中使用
适用于 Codex、Claude Code、OpenCode、Pi 或其他兼容 Agent Skills 的工具:
该技能是向编程 Agent 传授如何安装和运行同一 CLI 的一种轻量级方式。
扫描器不会因为启动它的 Agent 不同而变成另一个产品;shell、CI 和 Agent Skill 集成都会收到相同的 `run_manifest.json`。
## 常用命令
| 命令 | 用途 |
|---|---|
| `blueteam help` | 列出命令和示例 |
| `blueteam init` | 配置提供商并引导完成一次扫描 |
| `blueteam init --setup-only` | 仅配置提供商,不进行扫描 |
| `blueteam models` | 重建已保存的一到三个模型列表 |
| `blueteam doctor` | 检查凭证、提供商、Git、工具和 Docker |
| `blueteam scan .` | 启动交互式扫描 |
| `blueteam scan . --level standard --models 3 --yes` | 非交互式运行 |
| `blueteam scan URL --ref TAG` | 扫描独立的 branch、tag 或 commit |
| `blueteam scan . --team-model codex-cli` | 使用已保存的 Codex CLI 模型 |
| `blueteam scan . --execute` | 允许仅限 Docker 的验证 |
| `blueteam sandbox doctor` | 诊断 Docker 和沙箱镜像 |
| `blueteam sandbox build` | 构建带有版本号的验证镜像 |
| `blueteam instructions codex` | 打印编程工具的操作指南 |
运行 `blueteam help scan` 可查看有关成本、token、时长、worker、专家、
网络、范围、静态工具和恢复的选项。
## 按下开始后会发生什么
```
flowchart TD
A["Immutable repository snapshot"] --> B["Inventory and trust boundaries"]
B --> C["Threat model and mandatory surface ledger"]
C --> D["Native rules and optional scanner seeds (withheld)"]
C --> H1["Blind generalist hunter A"]
C --> H2["Blind generalist hunter B"]
C --> H3["Blind generalist hunter C"]
H1 --> U["Candidate union and semantic reconciliation"]
H2 --> U
H3 --> U
D --> F["Focused seed and coverage follow-ups"]
U --> F
F --> V["Review and source/control/sink validation"]
V --> P["Attack-path and severity analysis"]
P --> L{"Every mandatory surface closed?"}
L -->|"No"| X["INCOMPLETE_COVERAGE"]
L -->|"Yes"| O["Report + manifest v2 + legacy manifest"]
```
核心模型都是通用型的。我们不会指定一个模型只去寻找
注入漏洞,而另一个模型只去寻找授权问题,因为那样做会掩盖
我们原本想从它们身上发现的差异。专家模式只是可选的额外步骤,
不能替代广泛的搜寻工作。
BlueTeam 也不使用多数投票法。如果一个模型发现了真实问题,
而另外两个模型漏掉了它,该候选问题仍然值得验证。协调器
会对同一根本原因的重复描述进行分组,而不会
丢弃相关的文件、代码行、追踪记录或发现者信息。
### 扫描级别
| 级别 | 额外的严谨度 |
|---|---|
| Quick | 威胁建模、原生种子、边界探测、语义协调、验证、攻击路径以及关键面挑战 |
| Standard | 包含 Quick 的所有内容,外加独立团队搜寻、环状审查、根本原因扫描以及完成强制性的覆盖闭合 |
| Deep | 包含 Standard 的所有内容,外加二次威胁模型审查、覆盖盲区工作,并对独特的、严重的、有争议的或条件性的候选问题进行二次审查 |
| Exhaustive | 包含 Deep 的所有内容,外加所有非原始审查、两次扫描、分歧解决,并为每个存活的实例提供 PoC 或明确的证据缺失说明 |
Quick 是最小的工作流,但它绝不是单次提示的扫描。它仍有
多项任务要完成。运行时间会随着代码库的大小和结构、
所选模型的速度以及发现阶段存活的候选问题数量而变化。
深度和模型数量是两个独立的选择。单模型的 Exhaustive 扫描
深度更深,但仍然只具备单一模型的视角。三模型的 Quick 扫描
增加了多样性,但没有后续的所有工作。向右上方移动(深度和数量都增加)会同时
增加审查深度和独立视角,但也会消耗更多的时间和成本。

## 在将代码库发送到任何地方之前
- 确认界面会列出每一个将要接收源代码的远程提供商。
BlueTeam 绝不会悄悄地将本地模型替换为远程模型。
- 如果 OpenRouter 报告了计费的生成成本,以该数字为准。估算
终究只是估算,它是根据代码库大小、代码结构、
模型定价、上下文、推理工作量以及早期任务的使用情况推算出来的。
- 免费的 OpenRouter 模型会被标记出来,并在必要时放慢速度,以避免
猛烈冲击其速率限制。
- Codex CLI 任务以串行方式运行,因为并行的 OAuth 会话已被证明不可靠。
支持并发的 API 和本地服务器可以使用 `--max-workers`。
- 除非你添加 `--execute` 参数,否则所有扫描级别都是静态和只读的。
- 即使使用了 `--execute`,命令也是在 BlueTeam 的 Docker 沙箱中运行——而不是在你的
主机上——源码只读、写入是一次性的、不继承凭证、没有
Docker socket、有资源限制,且默认无网络访问。
## 最终你得到的结果
每个结果目录包含:
- 人类可读的 `README.md`
- `run_manifest.json` schema v2
- 旧版 `scan_manifest.json` v1
- `threat_model.json` 和 `threat_model.md`
- `security_surfaces.jsonl` 和 `coverage_ledger.jsonl`
- `static_seeds.jsonl`
- 候选问题的审查、验证、攻击路径以及可选的沙箱产物
- 提供了 `--log-file` 参数时生成的结构化进度 JSONL
较旧的修复、验证和发布工具只会接收 `REPORTABLE` 发现。
任何条件性的、未解决的、失败的或不完整的发现都会被映射为
失败状态,这样旧有的集成系统就不会意外地将不完整的工作
判定为安全。
## 目前的证据
到目前为止,我们只完成了一次直接对比。这使得这仅是一个起点,
而不是具有统计学意义的基准测试。我们现在发布该结果,
以便未来可以添加新的运行记录,而不是在日后悄悄改变评判标准。
| Codex Security 发现 | BlueTeam 模型与结果 | 深度 | 运行时间 | 模型请求 | Token 使用量 | 代码库 / 运行 |
|---:|---|---|---:|---:|---|---|
| 9 个可报告实例 | `codex-cli/gpt-5.6-sol` (中等推理强度);9/9 匹配,8 个可报告,1 个推迟 | Quick* | 4小时 35分钟 | 211 次成功,1 次失败的任务 | 35.1M 输入(包含 27.4M 缓存);611.9k 输出 | CharismAI,2026 年 7 月,一次开发运行 |
\* **Quick** 是 BlueTeam 深度最低的模式。它仍然会执行威胁建模、
确定性种子、边界搜寻、协调、验证、攻击路径
分析以及关键面挑战。
被推迟的项目是一个 prospect-details RPC 候选问题,因为其部署的 SQL
授权定义在不可变的代码库快照中缺失。因此,
BlueTeam 保留了这一证据缺失,而不是将其作为已确认问题报告,或将其视为安全。
该次运行使用的是较早的分组行为。当前的语义协调器
将其保存的 63 个原始候选问题缩减至 25 个根本原因组,同时保留了
具体的实例。我们仍需进行一次新的计时运行,以了解这会在多大程度上
改变实际耗时和 token 使用量。
该结果尚未经过独立复现。
[`blueteam-agent/benchmarks/`](blueteam-agent/benchmarks/) 下的可复现基准测试工具定义了更严格的
三次运行召回率、精确度、误判为安全、成本以及时长评估标准。
## 获取更多细节
- [独立扫描器指南](blueteam-agent/README.md)
- [基准测试](blueteam-agent/benchmarks/README.md)
- [重构审计](docs/refactor-audit.md)
- [Root Agent Skill](SKILL.md)
- `blueteam instructions generic`
- `blueteam instructions codex`
- `blueteam instructions claude-code`
- `blueteam instructions opencode`
- `blueteam instructions pi`
内置的 Claude Code 搜寻/修复/验证技能以及旧版 Agent 保留是为了
兼容性。新的集成应该使用独立的 `blueteam` CLI。
## 开发
```
cd blueteam-agent
python -m pip install -e ".[dev]"
python -m pytest -q
```
当前的测试套件包括提供商契约、向导行为、方法论、
schema、沙箱安全、兼容性以及基准测试固定数据。
## 必要的安全提示
请仅对你有权测试的系统和代码库运行 BlueTeam。
这是一个源代码安全工具,而不是授权你测试他人系统的许可。
远程提供商的安全防护和可接受使用政策仍然
适用。
执行授权安全工作的 Anthropic 用户应查看其最新的
[网络验证计划](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)。
## 构思与代码来源
BlueTeam 衍生自
[Capital One 的 VulnHunter](https://github.com/capitalone/VulnHunter),该项目
由 Capital One 在 Apache License 2.0 下发布。他们的团队理应为我们最初开始的
基于攻击者视角的源码分析项目,以及搜寻、
修复、验证、Agent 和测试工具基础获得明确的赞誉。BlueTeam 是
一个独立的延续项目;它不是 Capital One 的官方项目,
Capital One 也不对其背书。
较新的工作流来自于公开文档和实际操作对比的结合:
1. OpenAI 对
[Codex Security](https://openai.com/index/codex-security-now-in-research-preview/) 的公开描述,
包括针对代码库的威胁建模、漏洞发现、
沙箱验证、攻击路径推理和修复。
2. 在 BlueTeam 开发期间,对授权的 Codex Security 扫描所产生的报告、威胁模型、验证产物和
可观察行为进行的黑盒研究。
只有基于黑盒意义,将这项工作称为“逆向工程”才是合理的。我们
对比了可观察的输入、输出和产物,弄清楚了方法论中哪些部分
最重要,并编写了独立的、与提供商无关的 pipeline。
我们并没有 OpenAI 的源代码,我们不声称复制了其私有的
内部实现,而且 BlueTeam 并非 OpenAI 的产品,也未受到 OpenAI 的背书。
属于 BlueTeam 独特之处的部分包括:混合提供商的模型团队、
盲测式的跨模型审查、确定性的覆盖范围种子、显式的覆盖
账本、可恢复的任务、预算控制以及对本地模型的支持。
基于 [Apache License 2.0](LICENSE) 授权。有关漏洞报告指南,请参阅 [SECURITY.md](SECURITY.md),
有关贡献说明,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:AI风险缓解, DLL 劫持, DNS 反向解析, 多模型, 大语言模型, 威胁建模, 文档安全, 请求拦截, 逆向工具, 错误基检测, 静态代码分析