新聞

資安業者Truffle Security近日公布GitHub公開程式碼憑證暴露的研究結果,研究團隊掃描The Stack v3收錄的約2.25億個GitHub公開儲存庫快照,並於2026年7月驗證其中找到的憑證,確認其中543,699組當時仍可使用,暴露時間中位數達784天,第90百分位更達6.3年。

GitHub於2024年2月開始為所有免費帳號分批預設啟用Push Protection,在程式碼提交至公開儲存庫前,檢查並阻擋可辨識的API金鑰、存取權杖等憑證。研究團隊比較2024年3月前後各12個月的憑證暴露情況,發現Push Protection預設防護的憑證類型,其暴露密度下降53%,未受預設防護的類型則僅下降7%。不過,同一時期AWS及Google也在推動有效期限較短的憑證與工作負載身分,研究團隊因此無法排除這些措施也影響憑證暴露情況。

Push Protection預設並未涵蓋所有憑證類型。研究找到的仍有效憑證中,有51.8%不在GitHub預設阻擋範圍,包括資料庫連線字串、私鑰及Google API金鑰。對於預設阻擋的憑證類型,Push Protection主要是在程式碼提交階段阻止新的憑證進入公開程式碼,並不會進一步撤銷先前已經暴露的憑證。

不同類型憑證暴露後,持續有效的比例也有明顯差距。NPM權杖仍有效的比例僅約0.001%,GitHub權杖約為0.36%;相較之下,Postgres連線字串約達88%,Google Cloud服務帳號憑證則約為54%。研究人員指出,GitHub及NPM會撤銷自家外洩的權杖,Postgres連線字串則沒有相同的撤銷機制。

研究團隊建議,只要憑證曾隨程式碼提交至公開儲存庫,就應立即視為已暴露,企業應先輪替相關憑證,再清理程式碼歷史。企業也應回頭掃描既有程式碼歷史,並優先採用具有有效期限的憑證。至於這些仍有效憑證是否已遭攻擊者擷取或實際濫用,研究並未確認。