Baseten GitHub PAT 透過公開 Harbor 映像外洩 – Strix 如何在 25 分鐘內發現管理員存取權限

摘要

2026 年 7 月,自主駭客代理程式 Strix 在 Basename 的 Harbor 註冊表中一個可公開存取的 Docker 映像中,發現了一個嵌入的 GitHub 個人存取權杖(PAT)。該權杖建立於 2023 年 3 月,賦予了 Baseten 主要產品儲存庫、GitOps 儲存庫、Homebrew tap 以及多個私人客戶儲存庫的管理員與推送存取權限。此發現已進行揭露,權杖已重新生成,且公開註冊表專案在 24 小時內已轉為私人。


漏洞是如何被發現的

Strix 對 *.baseten.co 網域進行了黑盒偵察,識別出一個公開的 Harbor 註冊表(gcp-us-east4-zlw.registry.baseten.co),並匿名拉取了 baseten/baseten-app 映像。在提取映像清單和圖層後,Strix:

  1. 對映像的文件系統和配置運行了 TruffleHog
  2. 偵測到儲存在 Docker 建置歷史(history[].created_by)中的 GitHub PAT。
  3. 透過發出 GET /user 請求驗證權杖仍然有效,該請求返回了帳戶 basetenbot

"Docker 建置歷史中的權杖,隨後 GitHub 將其識別為 basetenbot。憑證已進行遮蔽處理。" – Strix 部落格文章

洩漏權杖的範圍

GitHub 報告該權杖的 OAuth 範圍為 repo,意味著完整的儲存庫存取權限。Strix 列舉了該權杖可存取的儲存庫,並發現:

儲存庫(已混淆) 授予的存取權限
basetenlabs/b***(產品) admin: true, push: true
basetenlabs/f***(GitOps) admin: true, push: true
basetenlabs/h***(CLI) admin: true, push: true
其他私人儲存庫 讀/寫

這些權限將允許攻擊者:

  • 修改推理平台的原始碼。
  • 更改控制生產叢集的 GitOps 清單。
  • 向 CLI 分發渠道注入惡意二進位檔案。
  • 存取包含潛在敏感資料的客戶專用儲存庫。

根本原因:洩漏建置憑證

該權杖源自 2023 年 3 月 3 日 的一個 Docker 建置步驟,該步驟透過建置參數注入了 GitHub 權杖:

ARG GITHUB_TOKEN
RUN GITHUB_TOKEN=${GITHUB_TOKEN} bash -c '\
  if [[ "${GITHUB_TOKEN}" != "" ]]; then \
    git config --global --add \
      url."https://${GITHUB_TOKEN}@github.com/".insteadOf "git@github.com:"; \
  fi'

Docker 會在映像的建置歷史中記錄確切的命令列,從而無意中持久化了原始權杖。底層問題包括:

  • 將機密資訊作為建置參數使用 – Docker 會將值儲存在元數據中。
  • 在 Git 配置中持久化權杖 – 即使後來移除了該參數,憑證仍保留在映像中。

建議的修復步驟

  1. 切勿將機密資訊作為建置參數傳遞。使用 Docker BuildKit 機密掛載(--secret id=github,src=...)來提供不會出現在映像元數據中的臨時憑證。
  2. 檢查映像歷史,使用 docker history --no-trunc 或下載配置 blob 並檢查 history[].created_by 中的洩漏值。
  3. 立即重新生成任何已暴露的權杖,並稽核所有儲存庫以檢查是否有未經授權的更改。
  4. 應用最小權限原則:僅授予建置權杖對其所需的特定私人依賴項的讀取存取權限,並設置較短的過期時間。
  5. 將託管內部映像的容器註冊表設為私人;除非刻意打算,否則避免公開暴露它們。

揭露時間線與回應

日期與時間 行動
2026 年 7 月 13 日 晚上 11:10 提交 Strix 報告 – 實時的 basetenbot 權杖、公開的 Harbor 專案、儲存庫權限。
7 月 14 日,上午 Baseten 將 Harbor 專案設為私人。
7 月 14 日,下午 4:34 Baseten 安全團隊確認嚴重狀態,重新生成權杖,並要求刪除映像。
7 月 14 日,下午 5:05 報告者確認刪除並添加了兩個較低嚴重程度的發現。
7 月 17 日 剩餘的發現已關閉。
9 月 準備並批准公開揭露。

Baseten 的安全團隊行動迅速,在數小時內重新生成了權杖並將註冊表設為私人,甚至還寄送了感謝禮品。

"我們感謝 Strix 負責任的揭露。我們立即採取措施使洩漏的金鑰失效並移除公開的容器映像。我們的日誌確認該漏洞從未遭到利用,且沒有客戶資料外洩。" – Baseten 安全代表(HN 評論)

社群反應

  • 正面反饋 – 多位評論者讚賞了快速的修復以及自主測試的價值。
  • 倫理顧慮 – 一些用戶質疑安全供應商在沒有明確事先協議的情況下,對潛在供應商運行自主代理程式是否合適,並指出潛在的法律灰色地帶。
  • 技術觀察 – 其他人強調,這個問題本可以用傳統的滲透測試工具發現,但強調了 AI 驅動代理程式的速度和自動化優勢。

給運營者的啟示

  • 將容器映像視為長壽的攻擊面 – 即使是舊映像也可能包含活動的機密資訊。
  • 自動化機密掃描,涵蓋文件系統圖層和建置元數據。
  • 實施短壽命、範圍受限的權杖,用於 CI/CD 流水線和容器建置。
  • 定期對自己的網域運行自主安全代理程式(如 Strix),以在攻擊者之前發現隱藏的暴露。

如果您依賴基於 GitHub 的建置或公開容器註冊表,請今天稽核您現有的映像。洩漏權杖的代價可能比預防它所需的努力高出幾個數量級。

Sources

相關

  • Dispatch
  • Dispatch
  • 專案
  • Dispatch
  • Dispatch