Find Bugs 是一个代码审查技能,用于审查当前分支上的变更,查找缺陷、安全漏洞和代码质量问题。它适用于被要求审查变更、查找 bug、进行安全审查或审计的场景。
用途 该技能面向本地分支变更的审查工作,目标是在代码合并或提交前发现潜在的安全漏洞、缺陷和代码质量问题。它只报告发现,不直接修改代码,由使用者自行决定处理哪些问题。
主要能力 该技能按五个阶段组织审查流程:
第一阶段:完整收集输入。获取完整 diff(git diff master...HEAD);如果输出被截断,则逐个读取每个变更文件,直到看过每一行变更;在继续之前列出该分支中修改的所有文件。
第二阶段:攻击面映射。对每个变更文件,识别并列出所有用户输入(请求参数、请求头、请求体、URL 组件)、所有数据库查询、所有认证/授权检查、所有会话/状态操作、所有外部调用、所有加密操作。
第三阶段:安全清单。对每个文件的每一项进行检查,包括:注入(SQL、命令、模板、请求头注入);XSS(模板中所有输出是否正确转义);认证(所有受保护操作是否都有认证检查);授权/IDOR(是否验证了访问控制,而不仅仅是认证);CSRF(状态变更操作是否受保护);竞态条件(任何先读后写模式中的 TOCTOU);会话(固定、过期、安全标志);加密(安全随机、正确算法、日志中无密钥);信息泄露(错误消息、日志、时序攻击);DoS(无界操作、缺少速率限制、资源耗尽);业务逻辑(边界情况、状态机违规、数值溢出)。
第四阶段:验证。对每个潜在问题,检查它是否已在变更代码的其他地方处理;搜索覆盖该场景的现有测试;阅读周围上下文以确认问题真实存在。
第五阶段:结论前审计。在最终确定之前,必须列出审查过的每个文件并确认已完整阅读;列出每个清单项并注明是否发现问题或确认无问题;列出无法完全验证的区域及原因;然后才提供最终发现。
使用方式 该技能以提示/指令形式使用,引导审查者按上述阶段逐步执行。它要求先获取完整 diff,再逐文件分析攻击面,然后逐项核对安全清单,接着验证每个潜在问题,最后进行结论前审计。输出格式要求:优先级为安全漏洞 > 缺陷 > 代码质量;跳过风格/格式问题;每个问题包含文件:行号与简要描述、严重程度(Critical/High/Medium/Low)、问题说明、证据(为何真实存在,例如尚未修复、无现有测试等)、修复建议、以及适用时的参考标准(OWASP、RFC 等)。如果未发现显著问题,应如实说明,不要编造问题。不要进行修改,只报告发现。
适用场景 适用于本地分支变更的代码审查、安全审查、缺陷查找和审计工作,尤其适合在合并前对变更进行系统性的安全与质量检查。
限制 该技能只报告发现,不修改代码。它依赖审查者完整阅读 diff 和变更文件,若输出被截断需逐个读取文件。对于无法完全验证的区域,需明确说明原因。若未发现显著问题,应如实说明而非编造。关于收费、价格、平台支持等具体信息,资料中暂未提供。