Zeabur 資安事件後,要換哪些金鑰?清單與順序

Zeabur 8 月與 10 月兩度發生資安事件。這篇列出該換的金鑰、換的順序,以及一個實測發現的坑:用 Zeabur 備份還原資料庫,會把舊密碼一起還原回來。

重點

  • 當作 Zeabur 上所有環境變數都已外流:金流、AI API、雲端帳號、寄信服務的金鑰今天就換。
  • 其他金鑰在搬家時於新平台建立新的,確認正常後再撤銷舊的。
  • 用 Zeabur 備份的 data.sql 還原,資料庫密碼會變回舊的,還原後要改密碼。
  • 全部搬完再移除 GitHub 上的 Zeabur App。
這篇怎麼驗證的?(1 項實測、2 項依官方文件)
實際跑過
  • Zeabur PostgreSQL 備份格式(pg_dumpall 產生的 data.sql)裡含有 ALTER ROLE ... PASSWORD,還原後密碼會變回舊的(Docker 實測)
依官方文件撰寫、未實際操作
  • 兩起資安事件的細節:依媒體報導與 Zeabur 公告,Zeabur 沒有公開完整的影響範圍
  • 各家服務撤銷與重新產生金鑰的按鈕位置會改版,請以各家後台為準
目錄(4 節)
  1. 先假設:所有環境變數都外流了
  2. 順序:先換會燒錢的,其他搬家時一起換
  3. 實測發現的坑:還原備份,會把舊密碼也還原回來
  4. 搬完之後的收尾

先假設:所有環境變數都外流了

Zeabur 在 8/28 公告,部分專案的環境變數遭到未授權存取,內容包含「API 金鑰、資料庫連線字串、雲端服務金鑰」等常見的憑證類型(引自 CodeCat 對該公告的轉述)。Zeabur 9/7 發布了一次安全性升級;10/14 又發生影響更大的資安事件,之後宣布停止營運。

我們無法得知你的資料有沒有受影響,所以最保險的做法是:放在 Zeabur 環境變數裡的每一把金鑰都換掉。

順序:先換會燒錢的,其他搬家時一起換

今天就換:外流後會直接造成金錢損失的金鑰。

類型例子換完要檢查
金流綠界、藍新、Stripe 的 HashKey、Secret Key最近的交易與退款紀錄
AI APIOpenAI、Anthropic、Gemini 的 API key帳單有沒有異常用量,順便設定用量上限
雲端帳號AWS Access Key、GCP 服務帳號 JSON、Cloudflare API Token有沒有你不認識的資源被建立
寄信服務SendGrid、Resend、Mailgun寄送紀錄(可能被拿去寄詐騙信)

搬家時一起換:在新平台設定新的金鑰,確認新服務正常後,再撤銷舊的。這樣只要換一次,服務也不會中斷。

  • 資料庫密碼(新的資料庫本來就是新密碼,但要注意下一節的坑)
  • LINE Channel Secret 與 Channel Access Token;Discord、Telegram 的 Bot Token
  • Google、Facebook 登入的 OAuth Client Secret
  • JWT/Session 的簽章密鑰:換了之後所有使用者會被登出一次,屬於正常現象
  • n8n 裡存放的各家 credentials(見 n8n 篇)

實測發現的坑:還原備份,會把舊密碼也還原回來

Zeabur 的 PostgreSQL 備份是用 pg_dumpall 產生的 data.sql。我們用同樣的格式實測,檔案開頭有這兩行:

CREATE ROLE root;
ALTER ROLE root WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS PASSWORD 'SCRAM-SHA-256$4096:...';

用 psql 還原到新的資料庫後,root 的密碼就變回了 Zeabur 上的舊密碼。如果這組密碼在資安事件中外流了,新資料庫也一樣不安全。

處理方式(二選一):

  • 還原前,先刪掉 data.sql 裡的 CREATE ROLE 和 ALTER ROLE 這兩行
  • 還原後,立刻改密碼:ALTER ROLE root WITH PASSWORD '新的長密碼';

更好的做法是改用 pg_dump 只備份資料庫本身,這樣不會帶到帳號與密碼。完整做法見資料庫篇。

搬完之後的收尾

  • 移除 GitHub 上的 Zeabur App:GitHub → Settings → Applications → Installed GitHub Apps → Zeabur → Uninstall。要等全部搬完再移除,否則 Zeabur 上的服務無法重新部署
  • 專用伺服器的 SSH 金鑰:如果你在 Zeabur 專用伺服器上加過 SSH 公鑰,新機器請改用新的一組金鑰
  • 刪除 Zeabur 上的資料:確認備份都在自己手上後,刪除服務、Volume 和專案。申請退款時,一併要求刪除帳號資料,並保留書面紀錄
  • 留下證據:有異常扣款的帳單截圖存起來,向 Zeabur 申請資安事件賠償時會用到(見總整理的退款段落)