研究人員發現GitHub公開儲存庫暴露逾54萬組仍有效憑證
研究人員發現 GitHub 公開儲存庫暴露逾 54 萬組仍有效憑證
資安公司 Truffle Security 最近針對 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 同期推動短期憑證與工作負載身分,可能亦對下降幅度產生影響。
即便如此,仍有 51.8% 的仍有效憑證不在 GitHub 預設阻擋範圍,包含 資料庫連線字串(如 Postgres)、私鑰 以及 Google API 金鑰。不同憑證的持續有效比例差異顯著:
- NPM 權杖(Node Package Manager)僅 0.001% 仍有效
- GitHub 權杖 約 0.36%
- Postgres 連線字串 高達 88%
- Google Cloud 服務帳號憑證 約 54%
研究指出,GitHub 與 NPM 會主動撤銷自家外洩的權杖,然而資料庫連線字串等資訊缺乏類似撤銷機制,使攻擊者有較長的利用窗口。
未來展望與建議
-
視為已暴露:任何曾隨程式碼提交至公開儲存庫的憑證,都應立即視為已外洩,務必先行輪替。
-
清理程式碼歷史:企業應回溯掃描既有儲存庫的全部歷史版本,移除或重新加密敏感資訊。
-
採用短效憑證:優先使用具有效期限的憑證或工作負載身分(Workload Identity),降低長期被盜風險。
-
加強防護層:除了 Push Protection,亦可導入 CI/CD 階段的憑證掃描、密鑰管理服務(KMS)以及最小權限原則(Least‑Privilege)等多層防禦。
雖然本次研究未能證實這些仍有效憑證是否已被攻擊者濫用,但其龐大數量與長時間曝光本身已構成嚴重資安威脅。企業與開發者若能在憑證管理上採取主動、系統化的措施,將大幅降低因程式碼外洩而引發的資安事故。