今天在 GitHub Trending 上看到一个有意思的项目:Visa Vulnerability Agentic Harness(VVAH),这是Visa开源的一个基于前沿AI模型的自主漏洞发现、修复和验证框架,核心亮点是四阶段十一级流水线设计,实现从代码摄取到验证修复的全流程自动化。
一、项目概述
VVAH(Visa Vulnerability Agentic Harness)是Visa公司开源的AI驱动安全漏洞发现框架,基于Anthropic的Project Glasswing项目经验构建。它通过自主AI代理实现漏洞发现、修复和验证的完整闭环,核心设计理念是将漏洞发现到生产环境修复的时间(MTTA:Mean Time to Adapt)压缩到最短。
核心特性
- 四阶段十一级流水线:从攻击面映射到验证修复的完整自动化流程
- 多模型支持:支持Anthropic Claude、OpenAI兼容模型,通过统一抽象层实现厂商中立
- 结构化输出:生成Markdown报告和SARIF 2.1.0标准格式
- 对抗性验证:修复方案经过对抗性面板验证后才被采纳
- 确定性投票机制:多代理投票减少误报,提升发现质量
项目定位
VVAH针对的核心痛点是:AI辅助漏洞管理的瓶颈不在发现,而在分诊速度。传统工具能发现大量潜在漏洞,但筛选、验证、修复的周期过长。VVAH通过以下三个设计选择突破这个瓶颈:
- 威胁建模先行:在分析前先进行威胁建模,聚焦攻击面
- 多代理确定性投票:减少误报,提升发现可信度
- 结构化分诊产物:从AI发现的弱点到可操作的修复建议,全流程可追溯
二、技术原理
架构设计
VVAH采用流水线架构,将漏洞发现流程分为四个阶段、十一个阶段(Stage):
| 阶段 | 包含Stage | 核心任务 |
|---|---|---|
| Phase 1: Discovery & Modeling | S1-S3 | 攻击面映射、威胁建模、狩猎计划 |
| Phase 2: Deep Dive & Verification | S4-S6 | 多视角分析、策略门控、对抗验证 |
| Phase 3: Synthesis & Reporting | S7-S9 | 去重、攻击链构建、SARIF输出 |
| Phase 4: Remediation & Validation | S10-S11 | 修复建议、对抗验证 |
每个LLM驱动的阶段都实现为可组合、可复用的Skill,可独立调优、版本化和替换,无需重构整个流水线。
核心技术栈
# pyproject.toml 核心依赖
dependencies = [
"pydantic>=2.13.4", # 数据验证与序列化
"pydantic-settings>=2.14.1", # 配置管理
"PyYAML>=6.0.3", # 配置文件解析
"anthropic>=0.107.0", # Anthropic SDK
"openai>=2.41.0", # OpenAI兼容后端
"httpx>=0.28.1", # HTTP客户端
"urllib3>=2.7.0", # HTTP库
"python-dotenv>=1.2.2", # 环境变量管理
"claude-agent-sdk>=0.2.87", # Claude Agent SDK
]
项目采用Python 3.10+,基于Pydantic构建配置系统,支持多后端(Anthropic SDK、Claude CLI、OpenAI兼容API)统一抽象。
关键设计模式
1. 多后端抽象层
VVAH通过统一的抽象层支持三种后端:
via: cli:使用Claude Code会话(claudeCLI +/login),默认配置使用此方式via: sdk:使用Anthropic SDK(需设置ANTHROPIC_SDK_API_KEY)via: openai:使用OpenAI兼容API(需设置OPENAI_API_KEY)
这种设计避免了单厂商锁定,用户可根据成本、性能需求灵活切换。
2. Skill化阶段实现
每个阶段作为独立Skill,配置灵活:
| Stage | Skill职责 |
|---|---|
| S1 | 攻击面映射器(代码、CMDB、CVE、控制) |
| S2 | AppSec威胁建模器(STRIDE、OWASP、信任边界) |
| S3 | 漏洞研究策略师(污点分析、API边界、授权控制) |
| S4 | 多视角研究(语言、加密、逻辑漏洞、访问控制、IaC) |
| S6 | 对抗性审查员(漏洞链、信任边界追踪) |
| S7 | 发现去重器(语义折叠重叠发现) |
| S8 | 漏洞策略师(CWE、攻击路径、修复) |
| S10 | 修复代理(CWE-语言-框架三元组修复手册) |
| S11 | 验证面板(安全架构师、渗透测试员、跨仓库分析器) |
S9(SARIF输出)是纯确定性的,S5(预过滤)使用确定性门控加可选语义去重。
3. 对抗性验证机制
修复验证(S11)采用对抗性代理面板:
- security-architect:评估修复对整体安全架构的影响
- penetration-tester:从攻击者视角验证修复是否可绕过
- cross-repo-analyzer(可选):检查跨仓库影响
验证结果输出三种判决:validated(验证通过)、validation_failed(验证失败)、needs_review(需人工审查)。
数据流分析
标准化输入 流水线处理 结构化输出
├─ 批量仓库 S1-S3 ├─ 攻击面映射 ├─ Markdown报告
├─ GitHub Enterprise元数据 → S4-S6 ├─ 威胁建模 → ├─ SARIF 2.1.0
├─ CMDB记录 S7-S9 ├─ 多视角分析 ├─ 修复DTO
├─ CVE/控制流 ├─ 对抗验证 ├─ 验证报告
├─ 去重/链构建
S10-S11
├─ 修复建议
├─ 对抗验证
状态管理通过外部SQLite数据库($VVAHARNESS_STATE_DIR/vvaharness.db)实现流水线断点续传。
三、安装与快速开始
环境要求
- Python ≥ 3.10
- LLM凭证:Claude Code登录(
claudeCLI +/login)或API密钥 - Git(用于修复验证)
安装步骤
macOS / Linux:
# 克隆仓库
git clone https://github.com/visa/visa-vulnerability-agentic-harness.git
cd visa-vulnerability-agentic-harness
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装
pip install .
Windows (PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install .
或使用pipx全局安装:
pipx install .
配置凭证
# 复制配置模板
cp .env.example .env
# 编辑.env添加凭证
# via: cli (默认) → 运行 `claude` 然后 `/login`
# via: sdk → 设置 ANTHROPIC_SDK_API_KEY
# via: openai → 设置 OPENAI_API_KEY
最简运行示例
# 检查环境
vvaharness doctor
# 预估范围和成本(不执行扫描)
vvaharness estimate --repo /path/to/target
# 仅检测(不修改代码)
vvaharness scan --repo /path/to/target --stop-after s9
# 完整扫描(包含修复,⚠️ 会修改源码)
vvaharness scan --repo /path/to/target --application-id 12345
四、使用方法与实战
基础用法
1. 仅检测漏洞(不修改代码)
vvaharness scan --repo /path/to/target --stop-after s9
此命令执行S1-S9阶段,生成报告但不修改目标仓库。
2. 完整扫描(检测+修复)
vvaharness scan --repo /path/to/target --application-id 12345
⚠️ 注意:默认配置会在S10阶段修改源码(fix模式),请确保目标仓库已备份或提交到Git。
3. 批量扫描
vvaharness scan --repo-file repos.csv --workspace ./scans --group-by-app --keep-clones
repos.csv格式:每行一个仓库URL,可选AppId列。
进阶用法
1. 选择配置文件
默认配置文件路径:vvaharness/config/profiles/default.yaml
切换到SDK后端:
# 复制SDK配置
cp vvaharness/config/profiles/sdk.yaml ./config.yaml
# 设置API密钥
export ANTHROPIC_SDK_API_KEY="your-key"
# 运行
vvaharness scan --repo /path/to/target
2. 验证修复
修复后单独验证:
vvaharness validate --repo /path/to/target
验证面板读取<repo>/security-remediation/<NN_slug>/remediate_report.json,输出验证判决。
3. 集成到AI代理
vvaharness setup --install-agents
自动生成:
AGENTS.md:跨工具操作指南.github/copilot-instructions.md:Copilot指令CLAUDE.md+ Claude Skill:Claude Code集成GEMINI.md:Gemini CLI集成
实际项目示例
假设扫描一个Flask API项目:
# 1. 预估
vvaharness estimate --repo ./my-flask-api
# 输出:预计扫描范围、预估成本
# 2. 仅检测
vvaharness scan --repo ./my-flask-api --stop-after s9
# 3. 查看报告
cat ./my-flask-api/security-scan/*_report.md
# 4. 如果确认修复,重新运行完整扫描
vvaharness scan --repo ./my-flask-api
# 5. 验证修复
vvaharness validate --repo ./my-flask-api
输出文件:
<repo>/security-scan/<module>_<ts>_report.md:发现报告<repo>/security-scan/<module>_<ts>_report.sarif:SARIF格式<repo>/security-remediation/*/remediate_report.json:修复记录./run_manifest.json:运行元数据(版本、模型、配置、SHA)
五、常见问题与解决方案
安装问题
Q: claude CLI未找到
A: 默认配置使用Claude CLI后端,需先安装:
# 安装Claude CLI
pip install claude-cli
# 登录
claude
> /login
或切换到SDK后端:
export ANTHROPIC_SDK_API_KEY="your-key"
cp vvaharness/config/profiles/sdk.yaml ./config.yaml
Q: Windows下虚拟环境激活失败
A: 确保执行策略允许脚本:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
运行时错误
Q: API密钥无效
A: 检查.env文件位置,VVAH从工作目录向上搜索.env:
# 验证doctor
vvaharness doctor
# 或手动加载
source .env
Q: Git仓库状态异常
A: 确保目标仓库是干净的Git仓库:
cd /path/to/target
git status
git add .
git commit -m "Save before scan"
Q: Token超限
A: 使用estimate预估成本,通过配置限制单阶段预算:
# config.yaml
step1:
max_budget_usd: 10.0
step4:
max_budget_usd: 50.0
性能问题
Q: 扫描大型仓库过慢
A: 使用--stop-after分阶段运行,或限制文件数:
# 仅S1-S3快速评估
vvaharness scan --repo /large/repo --stop-after s3
Q: 多阶段并发
A: 当前版本为串行流水线,可通过批量扫描并行处理多个仓库:
vvaharness scan --repo-file repos.csv --workspace ./scans
兼容性
Q: 支持哪些语言?
A: S4阶段提供多语言分析器:Python、JavaScript、Java、Go、TypeScript等。IaC分析器支持Terraform、CloudFormation。
Q: OpenAI后端限制?
A: OpenAI后端仅支持检测(S1-S9),修复(S10)和验证(S11)需要Anthropic后端:
- 修复需要
Edit/Write工具,OpenAI后端仅有只读权限 - 验证需要Claude Agent SDK,OpenAI后端不兼容
配置OpenAI检测+Claude修复:
# config.yaml
models:
detect:
via: openai
remediate:
via: cli
validate:
via: cli
六、总结
VVAH代表了AI驱动安全工具的新范式:从漏洞发现工具进化为漏洞修复闭环系统。其核心价值在于:
- 流水线化AI能力:将威胁建模、漏洞发现、修复验证整合为自动化流水线
- 厂商中立设计:多后端抽象避免锁定,用户可根据成本、性能灵活选择
- 对抗性验证:修复方案经过对抗性面板验证,减少"修复引入新漏洞"的风险
- 可观测性:结构化输出(SARIF、Manifest)支持与现有CI/CD、安全平台集成
适用场景:
- 企业安全团队:批量扫描代码资产,提升漏洞分诊效率
- 安全研究员:利用AI加速漏洞挖掘,聚焦高风险目标
- DevSecOps:集成到CI/CD,实现代码提交即扫描
注意事项:
- 输出为AI生成的分诊候选,需人工审查
- 默认配置会修改源码,使用
--stop-after s9进行只读扫描 - Token消耗较大,使用
estimate预估成本
项目开源地址:https://github.com/visa/visa-vulnerability-agentic-harness