Tailscale SSH 未修補漏洞:
一台被入侵的裝置能橫向取得整個網格的 root
為什麼現在很紅:Tailscale 標榜零信任網格,但研究員證明:啟用 SSH port forwarding 時,一台被打穿的裝置能在不到一秒內拿下整個網格的 root 權限,不需密碼、不需竊取金鑰。
- 一句話結論
- Cyberdione Labs 研究員 Erica Windisch 於 2026 年 10 月 25 日發布 Tailworm 報告,揭露 Tailscale SSH(測試版本 1.104.2)與 headscale(0.29.5)在啟用 port forwarding 時存在權限提升與橫向移動風險。攻擊者只需先入侵網格內一台裝置,即可透過標準 SSH port forwarding 讓 root-level 的 Tailscale process 連接本應只有 root 能存取的系統 socket,進而提權並橫向擴散。
- 他要的是什麼
- 他只需要第一個立足點:一台能跑 Tailscale SSH 的裝置,不管是透過釣魚、弱密碼還是軟體套件投毒拿下。接下來不用密碼、不用偷金鑰,存取規則允許連線的每一台伺服器,他都能在一秒內拿下 root。
- 你今天做一件事
- 今天檢視你的 Tailscale ACL:SSH 規則是否啟用 port forwarding、是否寫成廣泛授權(by identity or tag)。若無法關閉 forwarding,就把每條 SSH 規則改成「這一台只能連那一台」,這是報告中唯一能阻止橫向擴散的控制。 直接去做 →
- 哪些能信
- 5 可證明3 推論4 缺口 每個主張都標了等級,缺口是誠實寫出來的。
- 破口速查
- 受害端一律去識別化;寫「未公開」代表公開資料查不到。
- 伺服器服務商
- 使用 Tailscale SSH 並啟用 port forwarding 的所有裝置
- 網路服務商
- Tailscale mesh network(官方託管或 headscale 自架)
- 漏洞出現的地方
- Tailscale SSH 的 port forwarding 功能,root-level process 連接系統 socket 時未檢查權限邊界
- 馬上自我檢測
檢視 Tailscale ACL 中 SSH 規則是否啟用 port forwarding 確認存取規則是否為單一來源對單一目標(source-to-destination pairs) 檢查裝置金鑰是否綁定 TPM 或 Secure Enclave- 漏洞修補方式
- 目前官方無修補版本,只能調整組態: 1. 關閉 SSH port forwarding(官方託管服務可在每條規則設定;headscale 0.29.5 無法關閉) 2. 將 SSH 規則改寫為單一來源對單一目標,移除廣泛授權 3. 移除不需要 app connector 的裝置權限 4. 移除指向 Unix socket 的 tailscale serve forward 5. 啟用裝置金鑰過期機制
有 15 分鐘再看:其餘 2 點
- 報告證明三種攻擊路徑:(1) 利用 root process 連接特權 socket 直接讀取系統密碼檔;(2) 替換 root 擁有的 socket 為攻擊者的 socket,執行 root 指令;(3) 透過 TOCTOU(Time-of-check to time-of-use)競爭繞過路徑檢查,竊取裝置註冊金鑰並加入攻擊者自己的裝置。實驗室中從一台裝置擴散至整個網格不到一秒。
- 目前官方無 CVE、無修補版本、無安全公告。Tailscale 工程副總裁 Mike Shaver 在 Reddit 回應已收到報告、正與外部專家調查,但不建議所有人關閉 Tailscale SSH。可用的緩解措施包括將 SSH 規則改寫為單一來源對單一目標、關閉 port forwarding(headscale 0.29.5 無法關閉)、啟用裝置金鑰過期。
研究員 Erica Windisch 發布 Tailworm 報告,顯示 Tailscale SSH 在啟用 port forwarding 時,攻擊者只需入侵網格內任一台裝置,即可透過 SSH socket forwarding 提權到 root,並在一秒內橫向擴散至存取規則允許的所有伺服器。目前官方無 CVE、無修補版本,只能調整組態降低風險。
本篇目錄
發生了什麼
後續更新(2026-10-28):Tailscale 已釋出 1.104.4 版本修補這些漏洞,包含 4 個安全公告(TS-2026-014 至 TS-2026-017)。修補方法為將 forwarding 操作改為以登入使用者身分執行,而非 root。headscale 0.29.5 仍無修補版本。
想像一個企業網路標榜零信任:每台裝置都驗證身分、每個連線都檢查規則、不再依賴傳統 VPN 的邊界防禦。管理員在 Tailscale 設定了 SSH 存取規則,讓工程師能直接 SSH 到各台伺服器,不需管理每台機器的密碼或金鑰。規則寫得很寬鬆:「開發團隊可以連到所有開發環境伺服器」。
2026 年 10 月 25 日,安全研究員 Erica Windisch 發布 Tailworm 報告,證明這個設定的後果:攻擊者只需入侵網格內任何一台裝置(例如工程師的筆電),就能透過 Tailscale SSH 的 port forwarding 功能,在不到一秒內橫向取得存取規則允許的所有伺服器的 root 權限,不需要密碼、不需要竊取 SSH 金鑰。
報告測試了 Tailscale 1.104.2 與自架的 headscale 0.29.5,在實驗室中重現三種攻擊路徑。截至報導發布,Tailscale 官方未發布 CVE、未釋出修補版本、未發布安全公告。唯一的防禦是調整組態:關閉 port forwarding(headscale 0.29.5 無法關閉)、將 SSH 規則改寫為單一來源對單一目標。
來源:本文整理自 The Hacker News 於 2026 年 10 月 25 日發布的報導,原始研究為 Erica Windisch(Cyberdione Labs)的 Tailworm 報告。原文連結
Tailscale SSH 與傳統 SSH 的差異
傳統 SSH 驗證的是「人」:輸入密碼或提供 SSH 金鑰,伺服器確認你是誰。Tailscale SSH 驗證的是「裝置」:它辨識連線來自哪台裝置,存取控制規則(ACL)決定「這台裝置能不能 SSH 到那台伺服器」。
這個設計的好處是簡化管理:不用在每台伺服器上分發金鑰、不用管理使用者帳號,一切都在 Tailscale 的控制平面統一設定。但這也代表:只要攻擊者控制了網格內一台裝置,他就繼承了那台裝置的所有 SSH 權限。
報告強調:Tailscale 本身不會製造「第一個立足點」,攻擊者仍需透過傳統方式入侵第一台裝置(釣魚、弱密碼、軟體供應鏈攻擊、未修補漏洞)。但一旦拿下第一台,Tailscale SSH 的 port forwarding 功能就成為橫向移動的加速器。
三種攻擊路徑
Windisch 在實驗室證明三種從「普通使用者」提權到「root」的路徑,全部利用 Tailscale SSH 的 port forwarding 功能。
路徑一:root process 連接特權 socket
使用標準 SSH port forwarding,建立一個普通 SSH session。因為 Tailscale SSH 是由 root-level 的 Tailscale process 處理連線,這個 process 連接了「只有 root 能存取」的系統 socket。
報告寫道:實驗室中,這個動作「幾乎立即」讓測試取得 root 並讀取系統密碼檔,不需要管理員權限。
路徑二:替換 root 擁有的 socket
攻擊者將一個 root 擁有的 socket 替換為自己的 socket,讓 Tailscale process 連接到攻擊者控制的 socket。這允許「直接以 root 執行指令」針對特定服務。
路徑三:TOCTOU 競爭繞過路徑檢查,竊取裝置金鑰
第三種方法針對 Tailscale 的「檔案路徑檢查」做競爭攻擊(TOCTOU, Time-of-check to time-of-use):系統檢查檔案路徑是否安全,與實際使用該路徑之間有時間差,攻擊者在這個間隙替換檔案。
報告證明這條路徑能走得更遠:竊取用來註冊新裝置的金鑰,然後用這把金鑰將攻擊者自己的機器加入網格,成為「可信任的伺服器」。
但這一步有限制:只在未啟用 Tailnet Lock 功能的網格上完整成功。啟用 Tailnet Lock 時,雖然金鑰在傳輸中被攔截,但最後一步無法完成。
「蠕蟲式」橫向移動
Windisch 將整體結果描述為「wormable」(可蠕蟲化):在實驗室中,一台被入侵的裝置能擴散到存取規則允許的每一台裝置,不需密碼、不需竊取金鑰、不需使用者動作,每一步不到一秒。
報告的原文:「網格將一個普通立足點轉換為整個機群的特權存取,速度達到機器等級(machine speed)。」
但報告也指出兩件事能阻止擴散:
- 單一來源對單一目標的存取規則(single source-to-destination pairs):不寫「開發團隊可以連所有開發環境」,而是寫「這台筆電只能連那台伺服器」。報告稱這是實驗室中唯一能自行阻止擴散的控制。
- 裝置金鑰綁定硬體:例如綁定 TPM 或 Secure Enclave,讓金鑰無法被複製離開裝置。
官方回應與揭露爭議
截至 The Hacker News 報導發布,Tailscale 官方未發布安全公告、未分配 CVE、未釋出修補版本。
Tailscale 工程副總裁 Mike Shaver 在 Reddit 回應:公司已收到報告、此前就在與外部安全專家調查相同領域、已發現一些問題並正在修復。他表示公司仍在釐清哪些組態受影響,並強調「不建議所有人關閉 Tailscale SSH」。
揭露流程也引發爭議。Windisch 在 Hacker News 留言表示這是「reported but not coordinated」(已通報但未協調),有評論者認為在未先通報 Tailscale 的情況下公開是不負責任的。
但 Windisch 向 The Hacker News 澄清:她在公開發布前一個週六就已將報告與概念驗證程式碼寄給 Tailscale 的安全聯絡窗口,也曾更早向公司執行長提出對架構的擔憂,並在公開前發布檔案雜湊並建議使用者關閉 Tailscale SSH。
不只 SSH:報告的其他 11 項發現
SSH 權限提升只是 Tailworm 報告中 11 項發現之一。報告還涵蓋 Tailscale 的 app connectors、serve 功能、裝置間的 DERP relay,以及自架的 headscale。
Windisch 向 The Hacker News 表示,SSH 權限提升「令人擔憂」,但 app connector 發現「對某些組織可能更有衝擊性」。
App connector 的發現針對一個實驗性功能 conn25:允許獲得權限的使用者發送流量到「資安團隊從未核准的目的地」,包括雲端供應商的 metadata service(可能洩漏伺服器憑證)。
這不是 Tailscale SSH 第一次出問題
報告是 Tailscale 在 2026 年「同一區域的一系列問題中最新一起」。
今年稍早,Tailscale 在 1.98.9 版本修補了數個 Tailscale SSH 與 server socket 處理的漏洞,其中一個就是「SSH Unix socket forwarding 可連接特權 socket」。
這顯示 Tailscale SSH 的權限邊界問題不是偶發,而是設計層面需要持續加固的區域。
如何避免
因為目前沒有修補版本,唯一的防禦是調整 Tailscale SSH 與相關功能的組態。報告與 Tailscale 官方的建議大部分重疊。
今天能做的緩解措施
-
檢視 Tailscale SSH 存取規則,改寫為單一來源對單一目標
不要寫「開發團隊可以連所有開發環境伺服器」(by identity or tag),而要寫成「這台裝置只能連那台伺服器」。報告稱這是測試中唯一能阻止橫向擴散的控制。
-
關閉 SSH port forwarding(如果你的平台允許)
- 在 Tailscale 官方託管服務:這是每條規則的設定,可以關閉。
- 在 headscale 0.29.5:無法關閉。報告建議:在 headscale 上,每一條 SSH 授權都要當作「給對方 root」。
-
移除不需要 app connector 的裝置權限
避免實驗性功能 conn25 被用來繞過核准的目的地清單。
-
移除任何指向 Unix socket 的
tailscale serve forward這類設定可能讓攻擊者連接特權 socket。
-
啟用裝置金鑰過期機制(node-key expiry)
讓竊取的裝置金鑰不會永久有效。
-
若裝置被入侵,從控制平面刪除該裝置
只是重灌機器不會撤銷金鑰,攻擊者可能已經將金鑰複製走。
Tailscale 另外建議的措施
- 啟用 SSH check mode:在 session 開始前增加登入步驟。報告指出這不會修補權限提升,只是在前面多一道關卡。
- 啟用自動更新:確保未來修補釋出時能快速套用。
headscale 使用者的處境更嚴峻
headscale 是 Tailscale 的開源、自架版本,讓企業能自行運行控制平面而非使用 Tailscale 官方託管服務。
報告測試的 headscale 0.29.5 版本無法關閉 SSH port forwarding。這代表在 headscale 上,目前沒有辦法從組態層面阻止這個攻擊路徑。
報告的建議很直接:在 headscale 上,每一條 SSH 授權都要當作「給對方那台伺服器的 root」。
你可以學到什麼
站在攻擊者的角度:Tailscale 網格給了一個很好的橫向移動平台。只要先拿下一台裝置(工程師筆電、CI/CD runner、任何在網格內的機器),存取規則允許的每一台伺服器都能在一秒內拿下 root。而且因為 Tailscale SSH 驗證的是裝置不是人,攻擊者不需要密碼、不需要偷 SSH 金鑰,只需要控制那台裝置。
- 01零信任網格不代表零橫向移動:Tailscale 的設計是驗證裝置身分、集中管理存取規則,但一旦攻擊者控制一台裝置,他就繼承了那台裝置的所有權限。
- 02存取規則的粒度決定爆炸半徑:廣泛授權(by tag, by identity)讓一台被入侵的裝置能橫向擴散到整個群組;單一來源對單一目標的規則是報告中唯一能自行阻止擴散的控制。
- 03啟用 port forwarding 等於信任 root process 的權限邊界:Tailscale SSH 的 root process 連接系統 socket 時未充分檢查權限,讓攻擊者能利用這個通道提權。
- 04裝置金鑰綁定硬體能降低金鑰竊取風險:綁定 TPM 或 Secure Enclave 讓金鑰無法被複製離開裝置,但這需要硬體支援與額外設定。
- 05自架版本(headscale)的控制更少:headscale 0.29.5 無法關閉 SSH port forwarding,讓管理員只能把每條 SSH 授權都當作給 root。
- 06修補前的唯一防禦是組態:目前沒有 CVE、沒有修補版本,只能調整 ACL、關閉 forwarding、啟用金鑰過期。
- 07「報告但未協調」的揭露爭議:研究員提前通知廠商但未等待協調期結束就公開,引發對揭露流程的討論。
- 01Tailscale SSHTailscale 的 SSH 功能,驗證裝置身分而非使用者身分,簡化金鑰管理但也改變了攻擊面。
- 02port forwardingSSH 的標準功能,讓連線轉發到其他位址。本報告中,攻擊者利用它讓 root process 連接特權 socket。
- 03privilege escalation(權限提升)從普通使用者提權到 root,報告證明透過 Tailscale SSH 的 root process 可達成。
- 04wormable(可蠕蟲化)攻擊能自動橫向擴散,不需使用者動作。報告描述在實驗室中一台裝置能在一秒內擴散到整個網格。
- 05TOCTOU(Time-of-check to time-of-use)競爭條件攻擊:系統檢查與使用檔案之間有時間差,攻擊者在間隙替換檔案。
- 06Tailnet LockTailscale 的安全功能,報告顯示能阻止裝置金鑰竊取的最後一步,但金鑰仍在傳輸中被攔截。
- 07headscaleTailscale 的開源自架版本,報告測試的 0.29.5 版本無法關閉 SSH port forwarding。
- 08single source-to-destination pairs單一來源對單一目標的存取規則,報告中唯一能自行阻止橫向擴散的控制。
- 09app connector (conn25)Tailscale 的實驗性功能,報告發現可繞過批准的目的地清單,包括雲端 metadata service。
- 10裝置金鑰綁定硬體(TPM, Secure Enclave)讓裝置金鑰無法被複製離開裝置,報告指出能降低金鑰竊取風險。
全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。
- 檢視你的 Tailscale ACL 中 SSH 規則的授權範圍看到什麼代表什麼:若看到 by tag(例如 tag:developer)或 by identity 的廣泛授權,代表一台被入侵的裝置能橫向到整個群組。記下有多少台伺服器在這些規則的範圍內。
- 確認 SSH 規則是否啟用 port forwarding看到什麼代表什麼:在 Tailscale 官方託管服務,這是每條規則的設定;在 headscale 0.29.5,無法關閉。若啟用且使用 headscale,要把每條 SSH 授權當作「給對方 root」。
- 列出所有使用 Tailscale SSH 的裝置與目標伺服器
在 Tailscale 管理介面檢視 Machines 與 ACL,或在命令列用 tailscale status看到什麼代表什麼:製作一份清單:哪些裝置能 SSH 到哪些伺服器。這份清單就是「如果攻擊者拿下左邊任一台,他能在一秒內橫向到右邊所有台」的地圖。 - 檢查裝置金鑰是否啟用過期機制看到什麼代表什麼:在 Tailscale 管理介面或 ACL 中確認 node-key expiry 設定。若未啟用,竊取的金鑰會永久有效。
- 確認是否有裝置金鑰綁定 TPM 或 Secure Enclave看到什麼代表什麼:檢視裝置清單中是否有註記硬體金鑰綁定。若無,被入侵的裝置上的金鑰可以被複製走。
- 檢查是否有 tailscale serve forward 指向 Unix socket
tailscale serve status看到什麼代表什麼:若有 forward 到 unix:// 開頭的 socket,記下來並評估是否需要移除。報告指出這可能讓攻擊者連接特權 socket。
如果你使用 Tailscale SSH
- 今天就把存取規則改寫為單一來源對單一目標:不要用 tag 或 identity 做廣泛授權。
- 如果你用官方託管服務,關閉 SSH port forwarding。
- 如果你用 headscale 0.29.5,把每條 SSH 授權都當作給 root,並考慮暫時關閉 Tailscale SSH 或限縮規則到最小範圍。
- 啟用裝置金鑰過期,考慮綁定硬體金鑰。
- 持續追蹤 Tailscale 官方是否發布修補與安全公告。
目前沒有修補版本,組態是唯一的防線。
環境背景、時間線、攻擊鏈對照 ATT&CK、關鍵證據、根因、處置與檢討都在完整版,約 9 分鐘。
來源
本文為公開報導與官方公告的整理與拆解,非第一手鑑識;證據等級依來源可信度標註。
本文由 AI 團隊協助研究與撰寫,經隱私與事實檢查後發布;證據等級依來源可信度標註。
複製下面這段,貼給你在用的 AI 工具(Claude Code、Cursor、Copilot、ChatGPT 都可以)。它會用本篇的破口位置、自我檢測與學習重點,對你的專案或環境做一次資安掃描,列出潛在問題與建議的調整或加強方式。
預設是唯讀:只發現問題、提出建議,不會改你任何檔案或設定。
M3 身分與存取管理 · M4 網路架構 · 想在自己的環境做一次同樣的盤點,從 自我盤點 開始。
每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。或先 加入會員 記錄你完成的任務。