今天在 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通过以下三个设计选择突破这个瓶颈:

  1. 威胁建模先行:在分析前先进行威胁建模,聚焦攻击面
  2. 多代理确定性投票:减少误报,提升发现可信度
  3. 结构化分诊产物:从AI发现的弱点到可操作的修复建议,全流程可追溯

二、技术原理

架构设计

VVAH采用流水线架构,将漏洞发现流程分为四个阶段、十一个阶段(Stage):

阶段包含Stage核心任务
Phase 1: Discovery & ModelingS1-S3攻击面映射、威胁建模、狩猎计划
Phase 2: Deep Dive & VerificationS4-S6多视角分析、策略门控、对抗验证
Phase 3: Synthesis & ReportingS7-S9去重、攻击链构建、SARIF输出
Phase 4: Remediation & ValidationS10-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会话(claude CLI + /login),默认配置使用此方式
  • via: sdk:使用Anthropic SDK(需设置ANTHROPIC_SDK_API_KEY)
  • via: openai:使用OpenAI兼容API(需设置OPENAI_API_KEY)

这种设计避免了单厂商锁定,用户可根据成本、性能需求灵活切换。

2. Skill化阶段实现

每个阶段作为独立Skill,配置灵活:

StageSkill职责
S1攻击面映射器(代码、CMDB、CVE、控制)
S2AppSec威胁建模器(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登录(claude CLI + /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驱动安全工具的新范式:从漏洞发现工具进化为漏洞修复闭环系统。其核心价值在于:

  1. 流水线化AI能力:将威胁建模、漏洞发现、修复验证整合为自动化流水线
  2. 厂商中立设计:多后端抽象避免锁定,用户可根据成本、性能灵活选择
  3. 对抗性验证:修复方案经过对抗性面板验证,减少"修复引入新漏洞"的风险
  4. 可观测性:结构化输出(SARIF、Manifest)支持与现有CI/CD、安全平台集成

适用场景:

  • 企业安全团队:批量扫描代码资产,提升漏洞分诊效率
  • 安全研究员:利用AI加速漏洞挖掘,聚焦高风险目标
  • DevSecOps:集成到CI/CD,实现代码提交即扫描

注意事项:

  • 输出为AI生成的分诊候选,需人工审查
  • 默认配置会修改源码,使用--stop-after s9进行只读扫描
  • Token消耗较大,使用estimate预估成本

项目开源地址:https://github.com/visa/visa-vulnerability-agentic-harness