2019 年 4 月 25 日,Docker 發現有人未經授權存取 Docker Hub 的一個資料庫。約 19 萬個帳戶的資料——略低於 Hub 使用者總數的 5%——可能已遭外洩:使用者名稱、bcrypt 密碼雜湊,以及驅動 Docker 自動建置功能的 GitHub 與 Bitbucket 存取權杖。Docker 兩天後透過電子郵件通知與支援部門總監 Kent Lamb 的支援公告揭露此事。

權杖外洩的嚴重性遠高於密碼。ZDNet 指出,Docker Hub 使用者多為大型企業內部員工,他們自動建置容器映像檔並部署到生產環境。任何持有這些權杖的人都能存取私有原始碼儲存庫,更糟的是,還能悄悄修改用來建置生產軟體的 Dockerfile。Docker 本身無法說明入侵者是否下載了任何資料——只表示存取「可能已遭外洩」。

Docker 的回應是唯一安全的做法,而且刻意採取干擾性措施:重設外洩的密碼、撤銷所有受影響的 GitHub 與 Bitbucket 權杖,並解除儲存庫的連結。使用者必須重新連結其儲存庫,並稽核 GitHub 與 Bitbucket 的安全性日誌,以查找遭濫用的跡象。在 Docker 自家論壇上,使用者回報隨著被撤銷的整合機制變動,其 GitHub 儲存庫中出現了非預期的「Docker Cloud Build」部署金鑰,並徒勞地詢問如何判斷自己的帳戶是否真的在這 19 萬個之中。

Docker 從未公開指認入侵者,也未確認任何資料外流。該公司表示官方映像檔未受影響,並推出額外的安全措施以確保其完整性。持久的傷害在於信任:這個被容器生態系視為基礎設施的登錄庫,已證明一旦在此發生外洩,攻擊者拿到的是客戶原始碼的鑰匙,而不只是他們的登入憑證。

所有受影響的密碼皆已重設;每個自動建置的 GitHub/Bitbucket 權杖皆已撤銷,儲存庫連結也已解除——在建置擁有者重新連結之前,建置一直處於中斷狀態

通往 GitHub 與 Bitbucket 的長效 OAuth 權杖存放在同一個營運中的 Hub 資料庫裡,因此單一次入侵就暴露了客戶的程式碼管線,而不只是他們的登入憑證。

Docker Hub 已成為整個容器生態系實質上的公共登錄庫,因此其影響範圍是整個產業的,而非單一廠商的。

Docker 無法判定資料是否已被下載,使得約 19 萬個安全團隊只能做最壞打算,並手動稽核其儲存庫。

外洩的帳戶並非一般使用者,而是企業自動建置操作人員,這使憑證外洩成為實際的供應鏈風險,而非例行的密碼重設。

一個人人視為基礎設施的登錄庫,同時也是上游憑證的存放處。把長效的原始碼控管權杖放在同一個營運資料庫裡,使一次短暫的入侵演變成全產業的稽核。

Docker 重設了受影響的密碼、撤銷自動建置權杖並解除儲存庫連結,同時告知客戶檢查其 GitHub 與 Bitbucket 日誌,以查找非預期的存取。官方映像檔被宣告未受波及,並額外加入了完整性措施。資料外流從未獲得確認,也沒有任何攻擊者被公開指認。此事件成為供應鏈安全建議中的常見引例,用以主張應讓 CI 到原始碼控管的憑證保持短效且範圍狹窄。

追溯依據

參考來源

  1. Docker Hub hack exposed data of 190,000 users ZDNet · zdnet.com ·
  2. Docker Hub Breach Hits 190,000 Accounts SecurityWeek · securityweek.com ·
  3. Docker Hub Security Breach details, signs/hints Docker Community Forums · forums.docker.com ·