54萬組憑證仍有效,暴露時間長達兩年

資安業者Truffle Security近日公布一項令人擔憂的研究結果,顯示GitHub公開儲存庫中仍存在大量未妥善管理的憑證。研究團隊掃描了The Stack v3收錄的約2.25億個GitHub公開儲存庫快照,並在2026年7月進行驗證,確認其中543,699組憑證當時仍可使用。更令人震驚的是,這些憑證的暴露時間中位數高達784天,第90百分位的暴露時間甚至達到6.3年。這意味著許多開發者可能在數年前就將敏感資訊上傳至公開平台,卻長期未察覺或處理,讓潛在攻擊者有充裕的時間擷取並利用這些憑證。

Push Protection效果有限,多數憑證不受保護

GitHub於2024年2月開始為所有免費帳號分批預設啟用Push Protection,旨在程式碼提交至公開儲存庫前,檢查並阻擋可辨識的API金鑰與存取權杖。研究比較2024年3月前後各12個月的數據發現,受Push Protection預設防護的憑證類型,其暴露密度下降了53%,但未受預設防護的類型僅下降7%。值得注意的是,研究找到的仍有效憑證中,高達51.8%不在GitHub預設阻擋範圍內,包括資料庫連線字串、私鑰及Google API金鑰。這顯示Push Protection主要功能是在提交階段阻止新憑證進入,對於已存在的歷史憑證或特定類型憑證,其防護效果相當有限。

不同憑證類型存活率差異大,企業需主動輪替

研究進一步指出,不同類型憑證在暴露後持續有效的比例存在巨大差異。NPM權杖因平台會自動撤銷自家外洩權杖,其仍有效的比例僅約0.001%;GitHub權杖約為0.36%。相較之下,Postgres連線字串因缺乏相同的撤銷機制,暴露後仍有效的比例高達88%,Google Cloud服務帳號憑證則約為54%。這突顯出並非所有服務都會自動處理外洩風險。研究團隊建議,只要憑證曾隨程式碼提交至公開儲存庫,就應立即視為已暴露,企業必須先輪替相關憑證,再清理程式碼歷史,並回頭掃描既有程式碼,優先採用具有有效期限的憑證,以縮小攻擊面。