SuperAPI AI 工具集

scanner-pipeline

安全与审计

查看项目

更新于 10-27 00:15

技能介绍

用途

Scanner Pipeline 是一个安全扫描编排技能,用于在单个仓库或整个仓库群(fleet)中,按技术栈分层选择并运行确定性安全扫描器,统一输出格式,去重后把发现移交给修复代理。它的核心主张是:让代理去运行真实的安全工具,而不是让代理手动“黑”应用。扫描器每次运行结果一致;代理审查则取决于是否恰好检查到。

主要能力

  • 按层选择工具:根据仓库锁文件、Dockerfile、*.tf、supabase/、Gemfile、go.mod、.github/workflows/ 等检测技术栈,为每一层选择一个工具,优先多生态系统工具。
  • 覆盖扫描层:密钥(gitleaks 全历史、trufflehog --only-verified)、代码 SAST(semgrep、Brakeman、gosec、CodeQL)、依赖(osv-scanner、bundle-audit、govulncheck、pip-audit)、基础设施/IaC/容器(trivy fs、checkov)、数据库 Supabase(安全顾问、自定义 semgrep 规则、RLS 查询)、实时应用(ZAP baseline、nuclei,受保护)。
  • 非交互运行并统一输出:每个工具输出到 .security/out/ 下的独立文件(SARIF 或 JSON),再统一转换为仓库 findings 格式并导出 SARIF。
  • 去重与指纹:按指纹(依赖、密钥、代码、IaC、数据库)跨工具合并同一根因的发现,保留所有工具的证据。
  • 抑制管理:.security/suppressions.yml 每条记录包含理由、负责人和最长 90 天的过期时间;过期后重新浮现;代理可提议但需用户逐条批准。
  • 仓库群模式:通过 gh repo list 枚举非复刻、非归档仓库,浅克隆生产分支(密钥层需要完整历史,可用 --filter=blob:none),并行运行流水线,汇总为 roll-up 表。
  • CI 与计划:提供 .github/workflows/security-scan.yml 脚手架,PR 时运行 gitleaks、osv-scanner、semgrep(diff-aware),每周全量扫描,支持 workflow_call 复用,SARIF 上传到 GitHub 代码扫描或作为工件保留;所有 Action 固定到完整 commit SHA,容器镜像固定到 digest。
  • 移交修复:所有 needs_validation 记录先经 finding-triage 分诊;每个修复代理只拿到一条合并记录(指纹、各工具证据、复跑命令、所属层技能);修复后重新运行同一工具确认指纹消失。

使用方式

  1. 确认授权:仓库所有权、仓库群模式需枚举的所有者/组织、实时目标仅限用户明确命名的自有域名、结果去向(本地文件、代码扫描或 issue;密钥发现不得进入公开 issue)。
  2. 检测技术栈并按层选工具,运行非交互命令,输出到 .security/out/(需加入 .gitignore)。
  3. 对 Supabase 数据库,可运行 supabase db advisors --linked 或管理 API 获取安全顾问结果;使用自定义 semgrep 规则检测恒真 RLS 策略(如 csr.collection_id = csr.collection_id),并用 SQL 查询 pg_tables.rowsecurity = false 检查未启用 RLS 的表。
  4. 密钥扫描使用全历史,--redact 或移除 Raw 字段,绝不打印密钥值;已验活的密钥视为 P0,先轮换再清理历史。
  5. 实时扫描遵循被动优先、低速率(如 nuclei -rl 10)、仅限用户命名主机,出现 5xx 激增、限流、账户锁定等伤害迹象时停止并暂停。
  6. 统一输出格式、去重、应用抑制规则,生成 scanner-pipeline.md 报告,包含技术栈、各层工具表、计划、抑制策略、首次运行统计和移交清单。
  7. 分诊后把每条发现交给对应修复代理;修复后复跑同一工具验证。禁止通过修改扫描器配置让发现消失。

适用场景

  • 需要对单个仓库或整个组织仓库群进行标准化安全扫描。
  • 需要把密钥、依赖、代码、IaC/容器、数据库、实时应用等多层扫描结果统一管理。
  • 希望在 CI 中建立 PR 扫描和每周全量扫描流程。
  • 需要将扫描发现自动路由给修复代理并跟踪关闭。

限制

  • 仅负责编排,不进行深度解读;深度解读交给各层技能(secrets-audit、dependency-audit、container-audit、cloud-audit、owasp-audit)。
  • 不进行主动利用;需要验证的发现交给 web-pentest 并遵循其授权步骤。
  • 实时扫描仅限用户拥有并明确命名的主机,被动优先、低速率;不得扫描第三方或共享主机。
  • 绝不打印、提交或发布密钥值。
  • 不得削弱扫描器配置以通过 CI。
  • 技能主要输出文件(scanner-pipeline.md、security-scan.yml、扫描器配置),且仅在目标仓库内写入;实时应用扫描器(nuclei、ZAP)不预批准,每次都会提示。
  • 工具版本差异可能导致标志不同(如 gitleaks 8.19+ 使用 git/dir 子命令,osv-scanner v2 使用 scan source),需运行 --help 确认后调整。
  • GitHub 代码扫描上传仅在公开仓库或启用 GitHub Advanced Security 的私有仓库可用,否则保留 SARIF 工件。
  • 资料中的“2026 年 10 月 45 应用扫描”等案例为原文示例,具体效果依赖实际环境。