[ PROMPT_NODE_27716 ]
find-bugs
[ SKILL_DOCUMENTATION ]
# 查找 Bug
审查当前分支的更改,查找 Bug、安全漏洞和代码质量问题。
## 第一阶段:完整输入收集
1. 获取完整差异:`git diff master...HEAD`
2. 如果输出被截断,请逐个读取每个更改的文件,直到查看了每一行更改
3. 在继续之前列出此分支中修改的所有文件
## 第二阶段:攻击面映射
对于每个更改的文件,识别并列出:
* 所有用户输入(请求参数、头部、正文、URL 组件)
* 所有数据库查询
* 所有身份验证/授权检查
* 所有会话/状态操作
* 所有外部调用
* 所有加密操作
## 第三阶段:安全检查清单(检查每个文件的每一项)
* [ ] **注入**:SQL、命令、模板、头部注入
* [ ] **XSS**:模板中的所有输出是否已正确转义?
* [ ] **身份验证**:所有受保护操作是否有身份验证检查?
* [ ] **授权/IDOR**:是否验证了访问控制,而不仅仅是身份验证?
* [ ] **CSRF**:状态更改操作是否受到保护?
* [ ] **竞态条件**:在任何先读后写模式中是否存在 TOCTOU?
* [ ] **会话**:固定、过期、安全标志?
* [ ] **加密**:安全随机数、正确的算法、日志中无密钥?
* [ ] **信息泄露**:错误消息、日志、时序攻击?
* [ ] **DoS**:无界操作、缺少速率限制、资源耗尽?
* [ ] **业务逻辑**:边缘情况、状态机违规、数值溢出?
## 第四阶段:验证
对于每个潜在问题:
* 检查更改后的代码中其他地方是否已处理
* 搜索涵盖该场景的现有测试
* 阅读周围的上下文以验证问题是否真实
## 第五阶段:结论前审计
在最终确定之前,必须:
1. 列出你审查过的每个文件,并确认已完整阅读
2. 列出检查清单中的每一项,并注明是否发现了问题或确认其是安全的
3. 列出你无法完全验证的任何领域及其原因
4. 只有这样才能提供最终调查结果
## 输出格式
**优先级**:安全漏洞 > Bug > 代码质量
**跳过**:样式/格式问题
对于每个问题:
* **文件:行号** - 简要描述
* **严重性**:严重/高/中/低
* **问题**:哪里出了错
* **证据**:为什么这是真实问题(未修复、无现有测试等)
* **修复**:具体建议
* **参考**:OWASP、RFC 或其他适用标准
如果没有发现重大问题,请说明——不要捏造问题。
不要进行更改——只需重新