2526 字
13 分鐘

Zeabur 資安事件:環境變數外洩後的金鑰輪替清單

如果你的專案部署在 Zeabur,現在不要只確認網站能不能打開。這次要處理的是儲存在 Variables 裡的 API 金鑰、Access Token、資料庫密碼與應用程式簽章金鑰。

Zeabur 在 2026 年 8 月 28 日公開的事件頁面指出,一組內部服務憑證遭到未授權使用,攻擊者透過它取回專案環境變數紀錄。官方已撤銷該憑證、阻斷存取路徑,並通知判定受影響的使用者;但已經暴露的第三方憑證不會因此自動失效

先撤銷舊金鑰,不要只建立新金鑰

Zeabur 已觀察到 Anthropic、OpenAI 與 OpenRouter API 憑證遭到盜用。只新增一把金鑰、卻讓舊金鑰繼續有效,無法阻止未授權使用。請先處理撤銷與帳務檢查,再更新部署。

資料狀態:2026 年 8 月 29 日。 調查仍在進行。Zeabur 最新更新另指出,團隊發現 Zeabur AI Hub 使用的 LiteLLM 有可疑活動,正在確認是否與本次事件相關;調查期間已暫停 AI Hub 服務。完整調查報告尚未發布,後續仍要追蹤官方事件頁面。

哪些 Zeabur 環境變數需要處理?#

官方事件頁面列出的範圍不只 AI API 金鑰。只要以下類型曾放進 Zeabur Variables,就應納入盤點:

優先順序憑證類型官方列出的例子先檢查什麼
立即AI 服務金鑰ANTHROPIC_API_KEYOPENAI_API_KEYOPENROUTER_API_KEYGEMINI_API_KEY撤銷舊金鑰、用量、帳單、額度限制
立即雲端與部署權限AWS access key、Cloudflare API token、GitHub token、DigitalOcean/Linode tokenAudit log、資源異動、部署與 DNS 變更
立即付款與第三方服務STRIPE_SECRET_KEYCLIENT_SECRETACCESS_TOKENAPI_SECRETAPI log、webhook、付款與帳號異動
資料庫憑證DATABASE_URLMONGODB_URI、MySQL/PostgreSQL/Redis 密碼登入紀錄、未知 IP、資料與權限異動
應用程式簽章資料JWT_SECRETSECRET_KEYPRIVATE_KEY現有 session、偽造 token 風險、下游驗證服務

事件頁面也說明,若自訂變數名稱的值符合 AWS、GitHub、Anthropic、OpenRouter、OpenAI 或 Stripe 等可辨識的憑證格式,同樣可能落在已確認的暴露範圍。盤點時不能只搜尋固定名稱;MY_PROD_TOKENBACKEND_CREDENTIAL 這類自訂名稱也要逐一確認用途。

官方目前表示,尚未發現 Zeabur 帳號憑證、個人資料、伺服器資料、付款資訊或信用卡資訊遭到存取的證據。這不等於 Variables 裡的第三方金鑰安全,也不代表調查已經結束。

收到通知後,照這個順序處理#

這次不適合先大量重啟服務。重啟只會重新讀取目前的環境變數,不會撤銷已外洩的舊憑證。我會按「阻斷存取 → 更新部署 → 驗證 → 查異常」的順序處理。

1. 先建立不含金鑰值的盤點表#

逐一檢查每個 Project、Service 與 Environment 的 Variables,記錄:

  • 變數名稱與用途。
  • 憑證所屬服務與帳號。
  • 可執行的權限範圍。
  • 哪些服務、CI/CD 或本機工具也使用同一把憑證。
  • 負責輪替與驗證的人。

盤點表只需要記錄名稱、用途與處理狀態,不要把完整金鑰複製到試算表、工單或聊天訊息。若同一把金鑰同時用在正式與測試環境,兩邊都要更新。

2. 優先撤銷 AI API 金鑰並檢查帳單#

Zeabur 已明確表示觀察到 Anthropic、OpenAI 與 OpenRouter 憑證被盜用,因此這三類要排在最前面:

  1. 到供應商後台撤銷或刪除舊金鑰。
  2. 檢查 2026 年 8 月 27 日前後及更早可用期間的 usage、activity 與帳單。
  3. 記錄不認得的模型、請求量、時間、Project 或來源。
  4. 建立新金鑰,套用最小權限與消費上限。
  5. 將新值更新到所有使用位置。

OpenAI 的帳號安全指引建議刪除疑似暴露的 API key,並可依 key 檢查使用量;Anthropic 的憑證外洩指引同樣要求立即撤銷,再建立新 key。OpenRouter 也提供刪除 API key與用量檢查功能。

3. 雲端、GitHub、Cloudflare 與 Stripe 不要只換字串#

這類 token 可能帶有建立資源、修改 DNS、讀寫 repository、觸發部署或操作付款 API 的權限。除了撤銷與重建,還要檢查:

  • AWS IAM、Cloudflare、GitHub 與供應商後台的 audit/security log。
  • 新增或修改的使用者、金鑰、網域、DNS、webhook、部署與運算資源。
  • 權限是否過大,能否改成細粒度 token、短效憑證或特定資源 scope。
  • 舊 token 是否也存在 GitHub Actions、其他部署平台、密碼管理器或團隊成員的本機環境。

Cloudflare 官方提供 API token 的 Roll 功能,產生新 secret 時會讓舊 token 失效。GitHub token 若已暴露,應直接 revoke;若需要處理組織或企業範圍,可再參考站內的 GitHub 憑證事件回應:按 token 類型撤銷

4. 資料庫密碼要用可回復的方式輪替#

資料庫憑證不能只在 Zeabur 修改 DATABASE_URL。真正的密碼與使用者存在資料庫端,處理時要同步完成:

  1. 建立新的資料庫使用者或密碼,權限只給應用程式需要的 schema/database。
  2. 更新 Zeabur Variables 與其他使用相同憑證的服務。
  3. 重新啟動或部署服務,確認連線、讀寫與 background job 正常。
  4. 撤銷舊使用者或舊密碼。
  5. 檢查資料庫 audit log、連線來源、管理者帳號與資料異動。

如果已經看到未知連線或資料異動,先保留日誌與時間線,不要為了恢復服務就清掉證據。備份與資料庫復原也應獨立確認;SQLite 類服務可以參考 SQLite + Litestream 的還原演練,但複寫備份不會替你撤銷外洩憑證。

5. JWT_SECRETSECRET_KEY 輪替後要處理既有 session#

簽章金鑰外洩的影響和一般 API key 不同。攻擊者若取得可簽發 token 的 secret,單純更新 Zeabur 變數不一定能讓先前簽發或偽造的 session 立刻失效。

請確認應用程式的驗證方式,並依架構處理:

  • 輪替簽章金鑰與對應的 verification key。
  • 讓既有 session、refresh token 或 cookie 失效。
  • 檢查異常登入、權限提升與管理操作。
  • 若多個服務共用同一把 secret,安排一致的切換時間與回復路徑。

這一步可能讓使用者需要重新登入,但保留一把已暴露的簽章金鑰,風險會繼續存在。

更新 Zeabur Variables 後還要驗證什麼?#

憑證輪替完成,不代表所有程式已經使用新值。逐一確認:

  1. 每個受影響 Service 的 Variables 都已更新,沒有遺漏 staging、worker、cron 或一次性 job。
  2. 服務已重新啟動或重新部署,runtime 確實讀到新值。
  3. 健康檢查與實際 API 請求成功,不只看 deployment 顯示綠色。
  4. 舊金鑰呼叫會失敗,新金鑰可以正常工作。
  5. CI/CD、GitHub Actions、其他主機與本機開發環境已同步更新。
  6. 供應商帳單警示、消費上限與 audit log 已啟用。

如果重啟後服務異常,先查看 Runtime Logs 與資料庫連線錯誤。站內的 Zeabur 服務異常排查清單整理了 Build Logs、Runtime Logs、PORT 與 OOM 的分流方式;但這次仍應先完成憑證阻斷,不能用「服務目前正常」取代輪替。

現在先做防護,不急著決定要不要搬家#

這次事件足以重新檢查 secrets 管理與平台風險,但遷移本身不會讓已外洩的金鑰失效。先撤銷憑證、保存日誌、查異常用量與更新正式環境,再決定是否需要遷移或建立第二套部署路徑。

後續可以把長效高權限憑證拆成每個服務各自的最小權限金鑰,設定到期日與消費上限,並建立可定期演練的輪替清單。若要評估替代方案,再看 Zeabur 與 Coolify 自架部署比較;不要在事件處理途中一邊搬平台、一邊留下仍有效的舊 token。

目前最重要的判斷很簡單:只要敏感值曾存放在 Zeabur Variables,就先確認它是否需要撤銷;不要等完整調查報告發布,才開始處理仍然有效的憑證。

常見問題#

Q: 沒收到 Zeabur 通知信,也需要輪替 API 金鑰嗎?#

A: 建議至少完整盤點一次。Zeabur 的公開說明指出,受影響通知分批且判定條件不同,自訂變數名稱若符合特定憑證格式也可能被辨識。沒收到通知不能取代 Variables 檢查;若金鑰權限高、可產生費用或無法確認是否落在查詢範圍,直接撤銷與重建會比繼續等待安全。

Q: 只把 Zeabur 環境變數改成新金鑰就可以嗎?#

A: 不可以。你必須到金鑰所屬的 OpenAI、Anthropic、OpenRouter、Cloudflare、GitHub、AWS 或其他供應商後台撤銷舊憑證。更新 Zeabur Variables 只會改變應用程式下一次啟動時讀到的值,不會讓舊金鑰自動失效。

Q: 需要立刻更改 Zeabur 帳號密碼嗎?#

A: 官方目前表示,沒有證據顯示 Zeabur 帳號憑證遭到存取。這次的優先事項是 Variables 裡的第三方憑證。你仍可檢查登入紀錄、啟用可用的多因素驗證與清理不需要的 session,但不要因此延後 API key、資料庫密碼與簽章金鑰的撤銷。

Q: Zeabur AI Hub 現在可以正常使用嗎?#

A: 截至 2026 年 8 月 29 日的事件更新,Zeabur 因 LiteLLM 可疑活動而暫停 AI Hub 服務,並調查是否與本次事件相關。服務狀態仍可能變更,請直接查看官方 incident 頁面,不要只用一般 status 首頁的綠燈判斷。

參考資料:

Zeabur Status:Unauthorized Access to Project Environment Variable Data

Zeabur:安全事件說明與憑證輪替指引

OpenAI:How can I keep my OpenAI accounts secure?

Anthropic:What should I do if I suspect my API key has been compromised?

OpenRouter:Delete an API key

Cloudflare:Roll API tokens

GitHub Docs:Token expiration and revocation

Zeabur 資安事件:環境變數外洩後的金鑰輪替清單
https://laplusda.com/posts/zeabur-security-incident-secret-rotation/
作者
Zero
發佈於
2026-08-29
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。