Security Scanner 是一个主动式部署前安全评估技能,用于在代码上线前发现安全问题。它结合 SAST 模式匹配、密钥检测、依赖扫描、OWASP/CWE 映射和合规启发式检查,对代码库进行只读分析,并输出带严重级别、置信度和修复建议的发现项。
用途 该技能专注于部署前安全审计。它明确不适用于代码审查(应使用 review)、授权实时攻击测试(应使用带签署 ROE 的 pentest)、无静态审计上下文的渗透测试、运行时安全监控或供应链深度分析。
主要能力
- SAST 模式扫描:匹配注入缺陷(SQL、命令、路径遍历、模板、LDAP)、认证/会话弱点、敏感数据暴露、XXE、SSRF、反序列化、安全配置错误、XSS、不安全的直接对象引用、缺失访问控制、CSRF 以及使用已知漏洞组件等模式。
- 密钥检测:基于正则表达式检测硬编码凭据、API 密钥、令牌或私钥,并与 .gitignore 交叉引用,区分已跟踪文件(CRITICAL)和未跟踪文件(INFO)。
- 依赖扫描:解析 lockfile(如 package-lock.json、yarn.lock、pnpm-lock.yaml、requirements.txt、uv.lock、Cargo.lock、go.sum、Gemfile.lock、composer.lock),标记过时或无人维护的依赖,需要版本证据。
- CWE/OWASP 映射:将每个发现项映射到 CWE ID 和 OWASP Top 10 类别,并分配严重级别(CRITICAL/HIGH/MEDIUM/LOW/INFO)和置信度(0.0-1.0)。
- 合规启发式评分:针对 SOC2/GDPR/HIPAA 控制项进行轻量级启发式评分,输出 PASS/FAIL/PARTIAL 和总体百分比。
- 报告与 SARIF:生成可视化仪表板,并支持转换为 SARIF v2.1 格式用于 CI 集成。
使用方式 该技能通过 $ARGUMENTS 进行调度,支持以下模式:
- 空参数:显示调度菜单和示例调用,不启动扫描。
- scan [path]:对路径(默认当前工作目录)进行完整安全扫描,包含分诊、SAST、密钥、依赖、CWE/OWASP 映射和修复建议。
- check <file/dir>:对特定文件或目录进行针对性安全检查,无分诊/采样,扫描全部内容。
- deps [path]:依赖 lockfile 分析。
- secrets [path]:仅密钥正则扫描。
- compliance <standard>:SOC2/GDPR/HIPAA 启发式检查清单。
- report:生成发现项的可视化仪表板。
扫描流程(scan 模式)包括:分诊(按安全相关性将文件分为 HIGH/MEDIUM/LOW,100+ 文件时采样:全部 HIGH、50% MEDIUM、10% LOW)、SAST 模式扫描、密钥扫描、依赖检查、CWE/OWASP 映射、修复建议和报告。
脚本与模板
- scripts/secrets-detector.py:密钥扫描,基于正则检测。
- scripts/dependency-checker.py:依赖分析,解析 lockfile。
- scripts/sarif-formatter.py:SARIF 转换,用于 CI 集成输出。
- scripts/compliance-scorer.py:合规评分,启发式检查清单。
- templates/dashboard.html:扫描后注入发现项 JSON 进行渲染。
参考文件 按需加载,一次一个:references/owasp-patterns.md、references/cwe-patterns.md、references/secrets-guide.md、references/dependency-audit.md、references/compliance-checklists.md、references/triage-protocol.md、references/scope-boundary.md。
适用场景 适用于部署前安全审计,例如在发布前对代码库进行安全评估、检查特定文件或目录的安全问题、分析依赖 lockfile、扫描密钥泄露、进行合规启发式检查以及生成安全报告。
限制
- 仅用于部署前审计,不适用于代码审查、授权实时攻击测试、无静态审计上下文的渗透测试、运行时安全监控或供应链深度分析。
- 合规模式仅为启发式,不声称认证。
- 从不修改源文件,只读分析。
- 从不暴露实际密钥值,只显示类型、文件、行号。
- 每个发现项必须映射到至少一个 CWE ID。
- 置信度 < 0.3 丢弃;0.3-0.7 标记为潜在;>= 0.7 报告。
- 100+ 文件必须先分诊再扫描,不能暴力全量扫描。
- 依赖发现需要版本证据。
- 报告前先运行 secrets-detector.py。
- 不报告需要不可能条件的幻影漏洞。
- 展示发现项后再建议修复,始终使用批准门。
- SARIF 输出必须符合 SARIF v2.1 模式。
- 一次加载一个参考文件。