用途
symfony-security-auditor 是一款面向 Symfony 应用的 AI 多智能体安全审计工具,旨在发现传统静态应用安全测试(SAST)工具容易遗漏的漏洞。它由 ara.so 的 Security Skills 集合提供。
主要能力
该工具重点检测以下类型的问题:
- 业务逻辑缺陷:授权绕过、工作流违规
- 访问控制失效:缺少 #[IsGranted]、缺少 Voter、IDOR
- 复杂注入链:跨文件 SQL 注入、XSS、反序列化
- 批量赋值:不安全的 MapRequestPayload、表单处理
- Symfony 特有问题:防火墙配置错误、不安全的 Twig、Messenger 处理器缺陷
审计采用三阶段流水线:
- 摄取(Ingestion):递归扫描 .php、.twig、.yaml、.xml 文件
- 映射(Mapping):对 Controllers、Entities、Voters、Forms、Routes 进行分类
- 审计(Audit):对抗式 Attacker 智能体发现问题,持怀疑态度的 Reviewer 智能体在最多 3 轮迭代中消除误报
输出支持控制台、JSON、SARIF(GitHub Code Scanning / GitLab Security Dashboard)或 HTML。通过 symfony/ai 实现提供商无关,可配合 Claude、GPT、Gemini、Mistral、Llama、DeepSeek、Ollama 使用。
安装方式
使用 Symfony Flex(自动配置):
composer require --dev vinceamstoutz/symfony-security-auditor
Flex 会自动在 config/bundles.php 中为 dev 和 test 环境注册 bundle,并创建 config/packages/symfony_security_auditor.yaml 默认配置。
安装 AI 平台桥接:
# Anthropic Claude(推荐)
composer require symfony/ai-anthropic-platform
# 或 OpenAI GPT
composer require symfony/ai-openai-platform
# 或 Google Gemini
composer require symfony/ai-google-gemini-platform
# 或 Mistral
composer require symfony/ai-mistral-platform
# 或 Ollama(本地)
composer require symfony/ai-ollama-platform
配置 AI 平台,创建或编辑 config/packages/ai.yaml:
# Anthropic Claude
ai:
platform:
anthropic:
api_key: '%env(ANTHROPIC_API_KEY)%'
# 或 OpenAI GPT
ai:
platform:
openai:
api_key: '%env(OPENAI_API_KEY)%'
# 或 Google Gemini
ai:
platform:
google_gemini:
api_key: '%env(GOOGLE_GEMINI_API_KEY)%'
# 或 Ollama(本地,无需 API key)
ai:
platform:
ollama:
base_url: 'http://localhost:11434'
在 .env.local 中设置环境变量:
ANTHROPIC_API_KEY=sk-ant-api03-...
# 或
OPENAI_API_KEY=sk-proj-...
# 或
GOOGLE_GEMINI_API_KEY=...
手动配置(不使用 Flex)时,在 config/bundles.php 中注册 bundle:
return [
// ...
Symfony\AI\AiBundle\AiBundle::class => ['all' => true],
VinceAmstoutz\SymfonySecurityAuditor\SymfonySecurityAuditorBundle::class => ['dev' => true, 'test' => true],
];
创建 config/packages/symfony_security_auditor.yaml:
symfony_security_auditor:
model: 'claude-opus-4-8'
profile: 'balanced' # fast, balanced, 或 thorough
配置
基础配置:
symfony_security_auditor:
model: 'claude-opus-4-8' # 或 'gpt-4o', 'gemini-2.0-flash-exp' 等
profile: 'balanced'
max_review_iterations: 2
enable_attacker_tools: true
enable_reviewer_tools: false
enable_poc_generation: false
enable_concurrent_review: false
enable_escalation: false
chunk_token_limit: 8000
enable_lean_prescan: false
拆分模型配置(成本优化),使用强大模型攻击、廉价模型审查:
symfony_security_auditor:
attacker_model: 'claude-opus-4-8'
reviewer_model: 'claude-haiku-4'
据资料称可降低约 20 倍成本,同时保持较高检测率。
速率限制:
symfony_security_auditor:
rate_limit:
requests_per_minute: 50
tokens_per_minute: 80000
预设配置说明:
- fast:最少迭代、无工具、无 PoC(约 $0.50/项目)
- balanced:2 轮迭代、攻击者工具、选择性 PoC(约 $2-5/项目)
- thorough:3 轮迭代、全部工具、所有高危漏洞生成 PoC(约 $10-20/项目)
关键命令
# 审计当前目录
bin/console audit:run
# 审计指定项目
bin/console audit:run /path/to/project
# 试运行(估算成本,不实际审计)
bin/console audit:run --dry-run
# 输出格式
bin/console audit:run --format console
bin/console audit:run --format json --output report.json
bin/console audit:run --format sarif --output report.sarif
bin/console audit:run --format html --output report.html
# 差异模式(仅审计自某分支以来的变更文件)
bin/console audit:run --since=main
# 基线抑制
bin/console audit:run --generate-baseline
bin/console audit:run --baseline baseline.json
# 详细输出
bin/console audit:run -v
bin/console audit:run -vv
bin/console audit:run -vvv
退出码:0 表示未发现漏洞,1 表示发现漏洞,2 表示审计失败。
适用场景
- 本地或 CI 中对 Symfony 项目进行安全审计
- 集成 GitHub Actions、GitLab CI 流水线,输出 SARIF 上传至代码扫描
- 拉取请求差异审计,仅检查变更文件
- 为现有项目建立基线,仅报告新增问题
- 生成面向利益相关者的 HTML 报告
- 在 PHP 代码中以编程方式调用审计编排器
- 自定义漏洞过滤器与内部漏洞通告源
限制
- 需要配置 AI 平台 API key 或本地 Ollama 服务
- 审计成本随模型与 profile 变化,资料给出了估算区间但实际费用可能不同
- 检测效果依赖所选模型的上下文窗口与能力
- 部分高级功能(如 PoC 生成、并发审查、升级机制)默认关闭,需手动启用
- 资料未提供对非 Symfony 项目的支持说明
- 资料未提供具体版本兼容性矩阵或官方支持渠道