SuperAPI AI 工具集

symfony-security-auditor

安全与审计

查看项目

更新于 10-15 14:26

技能介绍

用途

symfony-security-auditor 是一款面向 Symfony 应用的 AI 多智能体安全审计工具,旨在发现传统静态应用安全测试(SAST)工具容易遗漏的漏洞。它由 ara.so 的 Security Skills 集合提供。

主要能力

该工具重点检测以下类型的问题:

  • 业务逻辑缺陷:授权绕过、工作流违规
  • 访问控制失效:缺少 #[IsGranted]、缺少 Voter、IDOR
  • 复杂注入链:跨文件 SQL 注入、XSS、反序列化
  • 批量赋值:不安全的 MapRequestPayload、表单处理
  • Symfony 特有问题:防火墙配置错误、不安全的 Twig、Messenger 处理器缺陷

审计采用三阶段流水线:

  1. 摄取(Ingestion):递归扫描 .php、.twig、.yaml、.xml 文件
  2. 映射(Mapping):对 Controllers、Entities、Voters、Forms、Routes 进行分类
  3. 审计(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 项目的支持说明
  • 资料未提供具体版本兼容性矩阵或官方支持渠道