查找 Bug
审查当前分支的变更,查找 bug、安全漏洞和代码质量问题。
何时使用
- 需要专注于 bug、安全问题或有风险代码变更的审查。
- 任务涉及审计当前分支差异,而非实现新行为。
- 需要针对变更文件进行清单驱动的结构化审查流程。
阶段 1:完成输入收集
- 获取完整差异:
git diff $(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')...HEAD - 如果输出被截断,逐个读取每个变更文件,直到查看完每一行变更
- 在继续之前列出此分支中修改的所有文件
阶段 2:攻击面映射
对于每个变更文件,识别并列出:
- 所有用户输入(请求参数、头部、正文、URL 组件)
- 所有数据库查询
- 所有认证/授权检查
- 所有会话/状态操作
- 所有外部调用
- 所有加密操作
阶段 3:安全检查清单(对每个文件的每项都要检查)
- 注入:SQL、命令、模板、头部注入
- XSS:模板中的所有输出都正确转义了吗?
- 认证:所有受保护操作都有认证检查吗?
- 授权/IDOR:访问控制已验证,不只是认证?
- CSRF:状态变更操作有保护吗?
- 竞态条件:读后写模式中存在 TOCTOU 吗?
- 会话:固定攻击、过期、安全标志?
- 加密:安全随机数、正确算法、日志中无密钥?
- 信息泄露:错误消息、日志、时序攻击?
- DoS:无界操作、缺少速率限制、资源耗尽?
- 业务逻辑:边界情况、状态机违规、数值溢出?
阶段 4:验证
对于每个潜在问题:
- 检查变更代码的其他位置是否已处理
- 搜索覆盖该场景的现有测试
- 阅读周围上下文以验证问题是否真实存在
阶段 5:结论前审计
在最终确定之前,必须:
- 列出审查的每个文件并确认已完整阅读
- 列出每个检查清单项,注明是否发现问题或确认干净
- 列出任何无法完全验证的区域及原因
- 然后才提供最终发现
输出格式
优先级:安全漏洞 > bug > 代码质量
跳过:风格/格式问题
对于每个问题:
- 文件:行号 - 简要描述
- 严重程度:严重/高/中/低
- 问题:哪里错了
- 证据:为什么这是真实的(未修复、无现有测试等)
- 修复:具体建议
- 参考:OWASP、RFC 或其他适用标准
如果没有发现重要问题,直接说明——不要编造问题。
不要进行修改——只报告发现。我会决定处理什么。
局限性
- 仅当任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,停下来请求澄清。