SKILL.md
唯讀
名稱
find-bugs
描述
在本地分支變更中找出錯誤、安全漏洞及程式碼品質問題。當被要求審查變更、尋找錯誤、進行安全審查或稽核當前分支的程式碼時使用。
尋找錯誤
審查此分支上的變更,找出錯誤、安全漏洞及程式碼品質問題。
第一階段:完整輸入收集
- 取得完整差異:
git diff $(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')...HEAD - 若輸出被截斷,請逐一讀取每個變更的檔案,直到看過每一行變更
- 在繼續之前,列出此分支上所有修改過的檔案
第二階段:攻擊面對映
針對每個變更的檔案,識別並列出:
- 所有使用者輸入(請求參數、標頭、主體、URL 元件)
- 所有資料庫查詢
- 所有身分驗證/授權檢查
- 所有 session/狀態操作
- 所有外部呼叫
- 所有加密操作
第三階段:安全檢查清單(每個檔案檢查每一項)
- [ ] 注入:SQL、命令、模板、標頭注入
- [ ] XSS:模板中的所有輸出是否已正確跳脫?
- [ ] 身分驗證:所有受保護的操作是否都有身分驗證檢查?
- [ ] 授權/IDOR:是否驗證了存取控制,而不只是身分驗證?
- [ ] CSRF:狀態變更操作是否受到保護?
- [ ] 競爭條件:任何讀取後寫入的模式中是否有 TOCTOU?
- [ ] Session:固定、過期、安全旗標?
- [ ] 加密:安全的隨機數、適當的演算法、日誌中無機密?
- [ ] 資訊揭露:錯誤訊息、日誌、計時攻擊?
- [ ] DoS:無限制的操作、缺少速率限制、資源耗盡?
- [ ] 業務邏輯:邊界情況、狀態機違規、數值溢位?
第四階段:驗證
針對每個潛在問題:
- 檢查是否已在變更程式碼的其他地方處理
- 搜尋涵蓋該情境的現有測試
- 閱讀周圍上下文以確認問題確實存在
第五階段:結論前稽核
在最終確定之前,你必須:
- 列出你審查過的每個檔案,並確認已完整閱讀
- 列出檢查清單中的每一項,並註明是否發現問題或確認無問題
- 列出任何你無法完全驗證的區域及其原因
- 然後才提供最終發現
輸出格式
優先順序:安全漏洞 > 錯誤 > 程式碼品質
跳過:風格/格式問題
針對每個問題:
- 檔案:行號 - 簡短描述
- 嚴重性:重大/高/中/低
- 問題:哪裡有問題
- 證據:為什麼這是真實的(尚未修復、無現有測試等)
- 修復:具體建議
- 參考資料:OWASP、RFC 或其他標準(如適用)
若未發現重大問題,請直接說明,不要憑空捏造問題。
不要進行修改,只需回報發現。我會決定如何處理。






