維絡曲線
SECSEC-02  ·  資安← 回到案例總表

外洩金鑰若未作廢將永久有效:數百套自動化系統遭看光

重點

資安研究人員在公開的程式碼中,發現大量未被撤銷的 n8n 自動化系統金鑰。經實際測試 896 套仍在線上的系統後,確認高達 321 套系統至今仍能被這些早已外洩的金鑰成功登入,讓有心人士得以輕易操控系統。

事件經過

背景與動機: n8n 是一款許多企業架設在內部伺服器上的自動化工具。它會集中儲存所有串接系統的帳號密碼(如 email、資料庫等),而每套 n8n 內部都有一把「主金鑰」能解開這些密碼。資安公司 GitGuardian 想測試:憑藉一把外洩的金鑰,到底能對企業造成多大威脅?

驚人的測試結果: 團隊在 GitHub 的歷史紀錄中找到了 4,576 把金鑰,牽涉 1,255 套系統。他們將這些金鑰蒐集起來逐一測試。在 896 套能連線的系統中,有 321 套(約佔能連線者的 36%)能被外洩金鑰成功登入;另外 575 套則因金鑰已失效而拒絕登入。

主金鑰不設防: 團隊進一步掃描全網,發現超過 3 萬套 n8n 系統。其中有 4,398 套在不需要登入的情況下,就會對外洩漏一組「由主金鑰推算出來的識別值」。研究人員將這組數值與公開程式碼中常見的「弱金鑰」進行比對,成功對應出 129 套系統。這意味著,這 129 套系統的最核心主金鑰,等同於已經對外公開。

後續修補: 研究團隊也證實了能透過 n8n 內建功能,用一般高權限金鑰進一步竊取所有加密密碼。通報後,n8n 確認了這些問題,並釋出更新修補了相關漏洞,防止識別值繼續外洩。目前尚不清楚是否有真實企業的密碼因此遭到駭客解密。

主要來源——S1:https://blog.gitguardian.com/n8n-security-encryption-key-compromise存檔快照

損失成因

  • 舊紀錄裡的秘密永遠有效寫在程式碼裡的金鑰,即使後來從現行檔案中刪除,仍會永久留在公開平台的歷史紀錄中。由於這類金鑰沒有到期日,只要管理者沒有在系統中手動將其「作廢」,它從公開的那一刻起就永遠可以使用。技術名稱:版本歷史中的長效密鑰(long-lived secret in version history)
  • 金鑰權限過大這類金鑰通常由系統建立者產生,因此往往帶有最高權限。這導致外洩的金鑰能做的事,遠超過它原本要執行的單一任務。拿到金鑰的人不僅能讀取所有自動化流程,還能看光所有儲存的帳號密碼,甚至在伺服器上植入新流程。技術名稱:權限過寬的憑證(overscoped credential)
  • 不需登入就洩漏核心資訊系統會將由「主金鑰」算出的數值直接交給任何連線者。雖然無法直接從該數值反推主金鑰,但有心人士可以直接拿網路上流傳的外洩金鑰來運算比對。若比對成功,駭客就能在不留下任何連線痕跡的情況下,確認該系統使用的是哪一把主金鑰。技術名稱:未經身分驗證的存取(unauthenticated access)

預防方式

徹底作廢金鑰,而不只是刪除文字

只要金鑰曾被公開過,就必須假設它已經外洩。單純把金鑰從檔案或訊息中刪掉是沒用的,你必須進入 n8n 系統後台將該金鑰徹底「作廢」。建議為系統發出的每把金鑰建立書面清單,記下用途與使用者,以便日後核對與清理。

每個任務使用獨立且低權限的金鑰

要求每一個自動化流程都只能使用專屬的、權限最低的金鑰;絕對不要交出擁有最高權限的管理者帳號來串接工具。在委託他人設定時,務必確認對方使用的是什麼等級的帳號與權限。

避免系統直接暴露在公開網路上

請架設系統的人員確認,系統是否會在未登入的狀態下向陌生人回應資訊。將好記的名稱換成複雜的隨機亂碼作為主金鑰。在確認安全之前,最好將系統藏在私有網路後方,或設定嚴格的連線白名單,將能連線的系統數量降到最低。

核心觀念: 一把金鑰唯有在系統內被徹底作廢後,它的外洩風險才會真正降到最低。