Dependabot警示太多?沿著呼叫路徑找到漏洞函式
同一個套件名稱出現在警示中,修復順序卻未必相同。一個服務處理請求時會呼叫漏洞函式,另一個服務可能安裝了套件卻未使用該函式。GitHub於2026年10月28日推出的Dependabot可達性分析公開預覽,讓這項差異變得可見。
從已安裝的套件到呼叫路徑
Dependabot識別有漏洞的相依版本,新分析則尋找儲存庫程式碼到受影響函式的路徑。GitHub管理的Actions工作流程使用CodeQL建立呼叫圖,再與標明漏洞函式的整理後安全公告資料比對。
圖中是我們編寫的虛構程式碼:訂單API透過輔助函式呼叫package.parseUnsafe,另一入口只呼叫package.formatLabel,因此在範例圖中無法到達目標。這不是真實漏洞,也不是GitHub分析器的執行結果,而是說明為何只看套件清單還不夠。

四種判定各有意義
Reachable代表至少找到一條呼叫路徑,不代表已證明攻擊能成功。外部輸入與正式環境的使用情況仍然重要。警示最多顯示五條範例路徑,也不是全部路徑清單。
Potentially reachable表示無法排除呼叫,應與Reachable一起優先處理。Unreachable表示分析完成但未找到路徑;Reachability unavailable表示無法提供判定。兩者不能當成相同的安全訊號。任何判定都不會自動關閉或忽略警示。
程式碼修改後,判定不會立即更新
啟用功能會啟動首次掃描,之後只要還有未關閉的Dependabot警示,就每24小時掃描一次。push不會立即觸發掃描,公開預覽期間也不能隨選手動掃描。
今天刪除漏洞呼叫後,舊Reachable可能仍顯示到下次掃描完成;新增呼叫後,舊Unreachable也可能暫時保留。第二張圖是Python走訪虛構圖的真實輸出。實際修復時,應將掃描完成時間與當時分析的程式碼對照。

哪些儲存庫可以開始使用
公開預覽適用GitHub Enterprise Cloud,包含資料落地環境。需要JavaScript或TypeScript儲存庫、npm、Yarn或pnpm的lockfile,以及啟用的Dependabot alerts。無需GitHub Code Security授權,預覽掃描免費,也不消耗計費Actions分鐘;不支援自架runner。
功能預設關閉,可在Settings > Advanced Security或自訂安全設定中啟用。部分大型monorepo可能碰到三小時或資源限制而無法得出判定。嚴重性、EPSS與正式環境暴露情況仍須一起判斷。新功能的價值,是讓未關閉警示的處理順序有更具體的依據。