SuperAPI AI 工具集

commit-security-scan

安全与审计

查看项目

更新于 10-15 14:56

技能介绍

用途

commit-security-scan 用于分析代码变更(提交、PR、diff),借助 LLM 推理检测安全漏洞。它直接读取代码,并应用仓库威胁模型中的模式,识别覆盖全部 STRIDE 类别的问题。

适用场景包括:

  • PR 审查:对拉取请求进行自动化安全扫描
  • 提交前检查:在提交前扫描暂存变更
  • 分支对比:审查功能分支变更的安全性
  • 代码审查辅助:帮助审查者发现安全问题

前置条件

该技能需要以下文件:

  • 威胁模型:.factory/threat-model.md 必须存在
  • 安全配置:.factory/security-config.json 用于严重程度阈值

如果这些文件不存在,必须先自动生成它们,再继续安全扫描。生成方式为调用 threat-model-generation 技能创建这两个文件,完成后继续扫描。

输入与扫描范围

技能根据用户请求确定扫描范围:

  • PR:例如“Scan PR #123”
  • 提交区间:例如“Scan commits X..Y”
  • 单个提交:例如“Scan commit X”
  • 暂存变更:例如“Scan staged changes”
  • 未提交变更:例如“Scan uncommitted changes”
  • 分支对比:例如“Scan from X to Y”
  • 最近 N 次提交:例如“Scan last N commits”

如果未指定范围,会提示用户澄清。

使用方式

按以下步骤执行:

  1. 验证前置条件(缺失则自动生成):尝试读取 .factory/threat-model.md 和 .factory/security-config.json。若任一文件缺失或无法读取,告知用户将先生成威胁模型,然后调用 threat-model-generation 技能分析仓库并创建这两个文件,完成后继续。

  2. 获取变更文件:根据用户请求,使用 git 获取变更文件列表及其 diff。PR 使用 gh pr diff;提交/区间使用 git diff 或 git show;暂存变更使用 git diff --cached。同时读取每个变更文件的完整内容以获取上下文。

  3. 加载威胁模型:读取 .factory/threat-model.md 和 .factory/security-config.json,了解系统架构与信任边界、该代码库已知的漏洞模式、发现的严重程度阈值。

  4. 分析漏洞:对每个变更文件,系统检查 STRIDE 威胁:

    • S - 身份伪造:缺失或薄弱的认证检查、会话处理漏洞、代码中的令牌/凭据暴露、不安全的 cookie 设置
    • T - 数据篡改:SQL 注入(SQL 查询中的字符串拼接/插值)、命令注入(shell 命令、eval()、exec() 中的用户输入)、XSS(HTML/模板中未转义的用户输入)、批量赋值(请求到模型的盲目赋值)、路径遍历(未验证的文件路径中的用户输入)
    • R - 抵赖:敏感操作缺少审计日志、错误日志不足、日志注入漏洞
    • I - 信息泄露:IDOR(未验证所有权直接访问对象)、暴露内部信息的详细错误消息、硬编码密钥/API 密钥/凭据、日志或响应中的敏感数据、暴露的调试端点
    • D - 拒绝服务:端点缺少速率限制、无界资源消耗(文件上传、查询)、算法复杂度攻击(正则、排序)、列表端点缺少分页
    • E - 权限提升:端点缺少授权检查、角色/权限绕过机会、通过参数操纵提升权限
  5. 评估每个发现:追踪数据流(输入来源、是否经过验证/净化、最终去向),检查现有缓解措施(代码库其他位置的验证、中间件/装饰器、框架自动保护),确定严重程度(CRITICAL:远程代码执行、认证绕过、数据泄露;HIGH:SQL 注入、XSS、IDOR、权限提升;MEDIUM:信息泄露、缺少安全头;LOW:最佳实践违规、次要问题),评估置信度(HIGH:明确的漏洞模式、直接数据流、无缓解;MEDIUM:可能存在漏洞、上下文有不确定性;LOW:可疑模式、可能有看不到的缓解)。

  6. 生成报告:创建 security-findings.json,结构包含 scan_id、scan_date、scan_type、commit_range、pr_number、threat_model_version、findings 数组(每个发现含 id、severity、stride_category、vulnerability_type、cwe、file、line_range、code_context、analysis、exploit_scenario、threat_model_reference、existing_mitigations、recommended_fix、confidence、reasoning)以及 summary(total_findings、by_severity、by_stride、files_analyzed)。

  7. 报告结果:将发现保存到 security-findings.json,向用户报告摘要(按严重程度的发现数量、触发的阈值),检查 security-config.json 中的严重程度阈值并注明是否触发。

CWE 参考

常见漏洞类型与 CWE 映射:

  • SQL 注入:CWE-89
  • 命令注入:CWE-78
  • XSS(反射型):CWE-79
  • XSS(存储型):CWE-79
  • 路径遍历:CWE-22
  • IDOR:CWE-639
  • 缺少认证:CWE-306
  • 缺少授权:CWE-862
  • 硬编码凭据:CWE-798
  • 敏感数据暴露:CWE-200
  • 批量赋值:CWE-915
  • 开放重定向:CWE-601
  • SSRF:CWE-918
  • XXE:CWE-611
  • 不安全反序列化:CWE-502

示例调用

  • 扫描 PR:Scan PR #123 for security vulnerabilities
  • 提交前扫描暂存变更:Scan my staged changes for security issues
  • 扫描功能分支:Scan changes from main to feature/user-auth for vulnerabilities
  • 扫描最近提交:Scan the last 5 commits for security issues

参考

  • 分析示例:analysis-examples.md(位于该技能目录)
  • 威胁模型:.factory/threat-model.md
  • 安全配置:.factory/security-config.json
  • OWASP Top 10
  • CWE Top 25

限制

资料未提供关于收费、价格、平台支持范围、扫描性能或误报率的具体信息。该技能依赖仓库中已存在或可生成的威胁模型与安全配置文件;若无法生成,扫描可能无法进行。