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:
- 對映像的文件系統和配置運行了 TruffleHog。
- 偵測到儲存在 Docker 建置歷史(
history[].created_by)中的 GitHub PAT。 - 透過發出
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 配置中持久化權杖 – 即使後來移除了該參數,憑證仍保留在映像中。
建議的修復步驟
- 切勿將機密資訊作為建置參數傳遞。使用 Docker BuildKit 機密掛載(
--secret id=github,src=...)來提供不會出現在映像元數據中的臨時憑證。 - 檢查映像歷史,使用
docker history --no-trunc或下載配置 blob 並檢查history[].created_by中的洩漏值。 - 立即重新生成任何已暴露的權杖,並稽核所有儲存庫以檢查是否有未經授權的更改。
- 應用最小權限原則:僅授予建置權杖對其所需的特定私人依賴項的讀取存取權限,並設置較短的過期時間。
- 將託管內部映像的容器註冊表設為私人;除非刻意打算,否則避免公開暴露它們。
揭露時間線與回應
| 日期與時間 | 行動 |
|---|---|
| 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