用途:find-bugs 用于审查当前分支上的改动,查找缺陷、安全漏洞和代码质量问题,适合在需要审查变更、查找 bug、做安全审查或审计时使用。它只报告发现,不修改代码,由使用者自行决定处理哪些问题。
主要能力与流程:
- 完整收集输入:获取完整 diff,命令为 git diff $(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')...HEAD;若输出被截断,则逐个读取每个改动文件,直到看过每一行改动;在继续前列出本分支修改的全部文件。
- 攻击面映射:对每个改动文件,识别并列出所有用户输入(请求参数、请求头、请求体、URL 组成部分)、数据库查询、认证/授权检查、会话/状态操作、外部调用和加密操作。
- 安全检查清单:对每个文件逐项检查注入(SQL、命令、模板、请求头注入)、XSS(模板输出是否正确转义)、认证(受保护操作是否都有认证检查)、授权/IDOR(是否验证访问控制而非仅认证)、CSRF(状态变更操作是否受保护)、竞态条件(读后写模式中的 TOCTOU)、会话(固定、过期、安全标志)、加密(安全随机、算法正确、日志中无密钥)、信息泄露(错误信息、日志、时序攻击)、DoS(无界操作、缺少限流、资源耗尽)、业务逻辑(边界情况、状态机违规、数值溢出)。
- 验证:对每个潜在问题,检查改动代码中是否已在别处处理、搜索是否有覆盖该场景的现有测试、阅读上下文确认问题真实存在。
- 结论前审计:必须列出审查过的每个文件并确认已完整阅读,列出每个清单项并说明是否发现问题或确认无问题,列出无法完全验证的领域及原因,之后才给出最终发现。
输出格式:优先级为安全漏洞 > 缺陷 > 代码质量;跳过风格/格式问题。每个问题给出文件:行号与简要描述、严重级别(Critical/High/Medium/Low)、问题说明、证据(为何真实存在,如未修复、无现有测试)、具体修复建议,以及适用时的 OWASP、RFC 等标准参考。若未发现重要问题就如实说明,不要编造问题。
限制:该技能只做审查与报告,不进行代码修改;资料未提供安装方式、收费、支持平台等信息。