find-bugs

find-bugs

熱門

在本地分支變更中找出錯誤、安全漏洞及程式碼品質問題。當被要求審查變更、尋找錯誤、進行安全審查或稽核當前分支的程式碼時使用。

867星標
45分支
更新於 2026/7/15
SKILL.md
唯讀
名稱
find-bugs
描述

在本地分支變更中找出錯誤、安全漏洞及程式碼品質問題。當被要求審查變更、尋找錯誤、進行安全審查或稽核當前分支的程式碼時使用。

尋找錯誤

審查此分支上的變更,找出錯誤、安全漏洞及程式碼品質問題。

第一階段:完整輸入收集

  1. 取得完整差異:git diff $(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')...HEAD
  2. 若輸出被截斷,請逐一讀取每個變更的檔案,直到看過每一行變更
  3. 在繼續之前,列出此分支上所有修改過的檔案

第二階段:攻擊面對映

針對每個變更的檔案,識別並列出:

  • 所有使用者輸入(請求參數、標頭、主體、URL 元件)
  • 所有資料庫查詢
  • 所有身分驗證/授權檢查
  • 所有 session/狀態操作
  • 所有外部呼叫
  • 所有加密操作

第三階段:安全檢查清單(每個檔案檢查每一項)

  • [ ] 注入:SQL、命令、模板、標頭注入
  • [ ] XSS:模板中的所有輸出是否已正確跳脫?
  • [ ] 身分驗證:所有受保護的操作是否都有身分驗證檢查?
  • [ ] 授權/IDOR:是否驗證了存取控制,而不只是身分驗證?
  • [ ] CSRF:狀態變更操作是否受到保護?
  • [ ] 競爭條件:任何讀取後寫入的模式中是否有 TOCTOU?
  • [ ] Session:固定、過期、安全旗標?
  • [ ] 加密:安全的隨機數、適當的演算法、日誌中無機密?
  • [ ] 資訊揭露:錯誤訊息、日誌、計時攻擊?
  • [ ] DoS:無限制的操作、缺少速率限制、資源耗盡?
  • [ ] 業務邏輯:邊界情況、狀態機違規、數值溢位?

第四階段:驗證

針對每個潛在問題:

  • 檢查是否已在變更程式碼的其他地方處理
  • 搜尋涵蓋該情境的現有測試
  • 閱讀周圍上下文以確認問題確實存在

第五階段:結論前稽核

在最終確定之前,你必須:

  1. 列出你審查過的每個檔案,並確認已完整閱讀
  2. 列出檢查清單中的每一項,並註明是否發現問題或確認無問題
  3. 列出任何你無法完全驗證的區域及其原因
  4. 然後才提供最終發現

輸出格式

優先順序:安全漏洞 > 錯誤 > 程式碼品質

跳過:風格/格式問題

針對每個問題:

  • 檔案:行號 - 簡短描述
  • 嚴重性:重大/高/中/低
  • 問題:哪裡有問題
  • 證據:為什麼這是真實的(尚未修復、無現有測試等)
  • 修復:具體建議
  • 參考資料:OWASP、RFC 或其他標準(如適用)

若未發現重大問題,請直接說明,不要憑空捏造問題。

不要進行修改,只需回報發現。我會決定如何處理。