Tailscale 釋出 1.104.4 修補 SSH 漏洞:
4 個安全公告、headscale 仍無修補
為什麼現在很紅:Tailscale 釋出修補版本 1.104.4,解決 SSH socket forwarding 能讓普通 session 存取 root-only socket 的問題。但 headscale 使用者還在等——0.29.5 無法關閉 forwarding,每條 SSH 授權都該當作給 root。
- 一句話結論
- Tailscale 於 2026 年 10 月 28 日釋出 1.104.4 版本,修補 Erica Windisch(Cyberdione Labs)的 Tailworm 報告揭露的 4 個安全問題。核心問題(TS-2026-014)為 SSH socket forwarding 讓 root-level 的 Tailscale process 連接 root-only socket(如 Docker socket 或 tailscaled local API),攻擊者能利用 timing trick 繞過路徑檢查、替換 socket,取得 root shell 或讀取 /etc/shadow。修補方法為將 forwarding 操作改為以登入使用者身分執行,並依賴作業系統檔案權限。
- 他要的是什麼
- 修補前,我只需要網格政策允許我 SSH 到目標,不用密碼、不用偷金鑰。透過 socket forwarding,我讓 root-level 的 Tailscale process 連到 Docker socket,拿到 root shell、讀到 /etc/shadow。Timing trick 能繞過路徑檢查,替換 socket 能讓我執行 root 指令。現在修補了,forwarding 不再以 root 執行,但 headscale 使用者還在裸奔。
- 你今天做一件事
- 今天升級到 Tailscale 1.104.4。如果你用的是 headscale,目前沒有修補版本,要把每條 SSH 授權都當作「給對方那台伺服器的 root」。檢視你的 SSH 存取規則,確認是否為單一來源對單一目標,而非廣泛授權。如果已經有裝置被入侵,只重灌不夠——要從控制平面刪除該裝置,否則竊取的金鑰仍有效。 直接去做 →
- 哪些能信
- 5 可證明0 推論2 缺口 每個主張都標了等級,缺口是誠實寫出來的。
- 破口速查
- 受害端一律去識別化;寫「未公開」代表公開資料查不到。
- 伺服器服務商
- 使用 Tailscale SSH 的 Linux 與開源 macOS 建置(攻擊端可以是任何平台)
- 網路服務商
- Tailscale mesh network(官方託管或 headscale 自架)
- 漏洞出現的地方
- Tailscale SSH 的 socket forwarding 功能,root-level process 連接系統 socket 時未適當降權
- 馬上自我檢測
檢查 Tailscale 版本是否為 1.104.4 或更新 確認 Tailscale SSH 是否啟用 檢查 ACL 中 SSH 規則是否啟用 port forwarding 若使用 headscale,確認版本並評估風險- 漏洞修補方式
- 升級到 Tailscale 1.104.4 或更新版本 若無法立即升級:設定 TS_SSH_DISABLE_FORWARDING=1 在 tailscaled 服務環境變數並重啟 檢視 SSH 存取規則,確保只有需要的使用者與裝置有存取權限 敏感系統啟用 SSH check mode headscale 使用者:等待官方修補,暫時將每條 SSH 授權視為給予 root
有 15 分鐘再看:其餘 2 點
- 其他三個公告:TS-2026-015(SSH session 耗盡伺服器記憶體導致 Tailscale process 崩潰,切斷該節點所有 Tailscale 網路);TS-2026-016(tailscale serve forward 到 Unix socket 可存取 tailscaled local API 取得節點遠端控制,以及相關的 socket 替換問題);TS-2026-017(TLS serve 搭配 2 個以上 mount 時,一個請求可能收到另一個 mount 的權限標頭)。
- 無法立即升級的使用者可設定 TS_SSH_DISABLE_FORWARDING=1 關閉 forwarding(不會停用整個 Tailscale SSH)。Tailscale 建議檢視 SSH 存取規則、敏感系統啟用 SSH check mode(但 check mode 不修補 forwarding 漏洞,只是多一道關卡)。headscale 0.29.5(2026-10-13 釋出)無法關閉 SSH forwarding、未修補報告問題,使用者應將每條 SSH 授權視為給予 root。
Tailscale 於 2026 年 10 月 28 日釋出 1.104.4 版本,修補 Tailworm 報告揭露的 SSH socket forwarding 權限提升漏洞(TS-2026-014),以及記憶體耗盡 DoS(TS-2026-015)、tailscale serve 漏洞(TS-2026-016)、TLS 權限標頭混淆(TS-2026-017)。修補方法為將 forwarding 操作從 root 改為以登入使用者身分執行。headscale 0.29.5 仍無法關閉 SSH forwarding,每條 SSH 授權應視為給予 root。
本篇目錄
發生了什麼
上週的報導 中,我們拆解了 Erica Windisch 發布的 Tailworm 報告,揭露 Tailscale SSH 在啟用 port forwarding 時,攻擊者只需入侵網格內任一台裝置,即可透過 SSH socket forwarding 提權到 root,並在一秒內橫向擴散至存取規則允許的所有伺服器。當時官方無 CVE、無修補版本、無安全公告。
2026 年 10 月 28 日,Tailscale 釋出 1.104.4 版本,修補 Tailworm 報告揭露的漏洞,並發布 4 個安全公告:
- TS-2026-014:SSH socket forwarding 讓 permitted session 能存取 root-only socket(如 Docker socket 或 tailscaled local API)
- TS-2026-015:SSH session 可耗盡伺服器記憶體,導致 Tailscale process 崩潰、切斷該節點所有 Tailscale 網路
- TS-2026-016:tailscale serve forward 到 Unix socket 可存取 tailscaled local API 取得節點遠端控制,以及相關的 socket 替換問題
- TS-2026-017:TLS serve 搭配 2 個以上 mount 時,一個請求可能收到另一個 mount 的權限標頭
來源:本文整理自 The Hacker News 於 2026 年 10 月 28 日發布的報導。原文連結,原文發布日期為 2026 年 10 月 28 日。
截至發布時,這 4 個公告沒有 CVE 編號、沒有嚴重度評分、未說明最早受影響的版本。
TS-2026-014:Socket Forwarding 的核心問題
這是 Tailworm 報告的核心發現,也是最嚴重的問題。
問題根源
Tailscale SSH 的 server 只在 Linux 與開源 macOS 建置上執行;攻擊者自己的裝置可以是任何平台。
當 permitted SSH session 轉發連線到伺服器上的 Unix socket 時,Tailscale process 會檢查路徑,但隨後以 root 身分操作。
攻擊者可以利用 timing trick(TOCTOU, Time-of-check to time-of-use)在檢查之後、使用之前替換路徑,繞過保護機制,存取原本應該只有 root 能存取的 socket。
Windisch 的實驗室測試
在 Windisch 自己的測試中,forwarding 到 Docker control socket 產生了一個 root shell,並讀取系統密碼檔 /etc/shadow,不需要管理員權限。
Tailscale 官方的描述
Tailscale 的公告描述影響範圍較窄,表示攻擊者能存取 root-only socket,例如 Docker socket 或 tailscaled local API。
修補方法
在 1.104.4 版本中,Tailscale 將 server 執行 forwarding 的方式改為以登入使用者身分執行,而不是以 root 執行,並且依賴作業系統自己的檔案權限,取代先前的路徑檢查。
這個修補從根本上解決了問題:如果 forwarding 不是以 root 執行,就無法存取 root-only socket。
TS-2026-015:記憶體耗盡 DoS
允許的 SSH session 可以耗盡伺服器的記憶體,導致 Tailscale process 崩潰,進而切斷該節點上所有 Tailscale 網路。
這不是提權漏洞,而是拒絕服務漏洞。攻擊者可以讓目標伺服器失去所有 Tailscale 連線能力。
TS-2026-016:tailscale serve 的問題
tailscale serve 功能允許將流量轉發到本地服務。這個公告涵蓋兩個問題:
- Forward 到 Unix socket 可存取 tailscaled local API:讓攻擊者取得節點的遠端控制權。
- 相關的 socket 替換問題:與 TS-2026-014 類似的 TOCTOU 問題。
這代表即使不使用 Tailscale SSH,只要使用 tailscale serve 並轉發到 Unix socket,也可能暴露於風險。
TS-2026-017:TLS Serve 權限標頭混淆
當使用 TLS serve 搭配 2 個以上 mount 時,一個請求可能收到另一個 mount 的權限標頭。
這可能導致權限混淆,讓攻擊者存取他們不應該存取的資源。
如何修補
升級到 1.104.4
Tailscale SSH 使用者應立即更新到 1.104.4 或更新版本。
無法立即升級的緩解措施
如果無法立即升級伺服器,可以透過設定環境變數關閉 SSH forwarding:
- 在 tailscaled 服務環境變數中設定
TS_SSH_DISABLE_FORWARDING=1 - 重啟 tailscaled 服務
這會關閉 forwarding,但不會停用整個 Tailscale SSH,並且能阻止數個更嚴重的發現。
檢視 SSH 存取規則
Tailscale 建議檢視 SSH 存取規則,確保只有需要的使用者與裝置有存取權限。
這是防止橫向移動的關鍵:如果 ACL 寫成「開發團隊可以連所有開發環境」,一台被入侵的裝置就能擴散到整個群組。應該改寫為單一來源對單一目標(single device-to-device pairs)。
SSH Check Mode
Tailscale 建議敏感系統啟用 SSH check mode,這會在 session 開始前要求使用者再次登入。
但報導強調:Check mode 不會修補 forwarding 漏洞。它守護的是 session 的開始,而 forwarding 發生在 session 已經被批准之後。
Check mode 只是多一道關卡,不是根本的修補。
裝置被入侵後的處理
Windisch 的報告指出:修補本身不夠。
如果伺服器可能已經被入侵,竊取的裝置金鑰會持續有效,直到在控制平面刪除該裝置。只是重灌機器不會撤銷金鑰。
Tailscale 的公告沒有涵蓋這個情況。
這代表:
- 如果懷疑裝置被入侵,不要只重灌
- 要從 Tailscale 控制平面(或 headscale)刪除該裝置
- 重灌後重新加入網格,取得新的金鑰
Headscale:情況更糟
headscale 是 Tailscale 的開源、自架控制伺服器。
在 headscale 上,SSH forwarding 在每個被接受的 session 上都自動授予,且無法在政策中關閉。
最新的 headscale 版本 0.29.5(2026 年 10 月 13 日釋出)不修補報告中的問題。
Windisch 的報告結論很直接:在 headscale 上,每一條 SSH 授權都應該被視為「給對方那台伺服器的 root」。
這對 headscale 使用者是個嚴重問題:
- 無法關閉 forwarding
- 沒有修補版本
- 每條 SSH 授權 = 給 root
「Wormable」的爭議
Windisch 在報告中稱這個攻擊鏈為「wormable」(可蠕蟲化):在實驗室中,一台被入侵的裝置能擴散到政策允許的每一台裝置,不需密碼、不需竊取金鑰、不需使用者動作,每一步不到一秒。
但 Tailscale 拒絕「worm」的描述。
公司表示,這些發現不是自我複製的惡意程式自動在機器間傳播,而是橫向移動,且僅限於政策檔案已經允許的連線。
Tailscale 稱權限提升問題為「嚴重安全問題」,表示已重現主要發現,並且仍在釐清哪些組態受影響。
這是語意上的爭議:
- Windisch 的觀點:在政策允許的範圍內,攻擊能自動擴散,速度達機器等級,符合「wormable」的特性。
- Tailscale 的觀點:真正的 worm 是自我複製的惡意程式,不受政策限制;這個攻擊受限於政策範圍,是橫向移動。
但對防守方來說,結果是一樣的:一台被入侵的裝置能快速擴散到政策允許的所有裝置。
揭露時間軸的爭議
Windisch 在公開報告前,於 2026 年 10 月 24 日週六上午,將報告與概念驗證程式碼寄給 Tailscale 的安全聯絡窗口,約在公開發布前 2 小時。
Tailscale 表示工程師已經在看相同部分的程式碼。
Windisch 描述這是「reported but not coordinated」(已通報但未協調)。
這引發了揭露流程的討論:
- 傳統協調揭露:研究員給廠商足夠時間開發修補(通常 90 天),修補釋出後才公開細節。
- Windisch 的做法:通報後 2 小時就公開,沒有等待協調期。
目前沒有證據顯示這些漏洞已被用於實際攻擊。概念驗證程式碼不是公開的,Windisch 表示只提供給 Tailscale 的安全團隊。
今年已經是第二次
這不是 Tailscale SSH 今年第一次出問題。
2026 年 6 月,Tailscale 在 1.98.9 版本中修補了一個獨立的漏洞:Tailscale SSH 的 Unix socket forwarding 讓未授權使用者能存取特權 socket。
這顯示 Tailscale SSH 的權限邊界問題不是偶發,而是設計層面需要持續加固的區域。
其他發現
報告除了 SSH 問題,還涵蓋 Tailscale 的 app connectors、serve 與 funnel 功能。
App Connector(conn25)
Tailscale 表示 app connector 的發現是在 conn25 這個實驗性功能中,尚未釋出,目前客戶使用的 connector 不受影響。
Serve 與 Funnel
報告涵蓋 5 個 serve 與 funnel 發現,Tailscale 修補了 3 個,表示另外 2 個按設計運作。
你可以學到什麼
站在攻擊者的角度:修補前,我只需要網格政策允許我 SSH 到目標,不用密碼、不用偷金鑰。透過 socket forwarding,我讓 root-level 的 Tailscale process 連到 Docker socket,拿到 root shell、讀到 /etc/shadow。Timing trick 能繞過路徑檢查,替換 socket 能讓我執行 root 指令。現在修補了,forwarding 不再以 root 執行,但 headscale 使用者還在裸奔——他們無法關閉 forwarding、沒有修補版本、每條 SSH 授權都該當作給 root。
- 01TOCTOU(Time-of-check to time-of-use)攻擊:Tailscale 檢查路徑與使用路徑之間的時間差,攻擊者在間隙替換 socket,繞過保護機制。
- 02Root-level process 的風險:即使有路徑檢查,只要 process 以 root 執行,攻擊者就能利用各種技巧存取 root-only 資源。修補方法是改為以登入使用者身分執行。
- 03修補不等於撤銷金鑰:重灌被入侵的機器不會撤銷竊取的裝置金鑰,必須從控制平面刪除裝置。
- 04緩解措施不是修補:TS_SSH_DISABLE_FORWARDING=1 與 SSH check mode 能降低風險,但不是根本修補;升級才是完整解決方案。
- 05headscale 的困境:自架控制伺服器無法關閉 SSH forwarding、沒有修補版本,使用者只能把每條 SSH 授權視為給 root。
- 06揭露流程的爭議:通報後 2 小時就公開報告,引發對「協調揭露」的討論。
- 07持續出現的問題區域:Tailscale SSH 今年已經是第二次修補 socket forwarding 相關問題,顯示這是需要持續加固的區域。
- 01TS-2026-014Tailscale 安全公告,SSH socket forwarding 讓 permitted session 能存取 root-only socket。
- 02TOCTOU(Time-of-check to time-of-use)競爭條件攻擊,系統檢查與使用檔案之間有時間差,攻擊者在間隙替換檔案。
- 03TS_SSH_DISABLE_FORWARDING環境變數,設為 1 可關閉 SSH forwarding 但不停用整個 Tailscale SSH,用於無法立即升級的緩解措施。
- 04SSH check modeTailscale 功能,要求使用者在 session 開始前再次登入,但不修補 forwarding 漏洞,只是多一道關卡。
- 05headscale 0.29.5Tailscale 的開源自架控制伺服器最新版本(2026-10-13),無法關閉 SSH forwarding、未修補報告問題。
- 06tailscaled local APITailscale daemon 的本地 API,存取它能取得節點的遠端控制權。
- 07Docker socketDocker daemon 的 Unix socket,存取它能以 root 身分執行容器指令,等同 root shell。
全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。
- 檢查 Tailscale 版本
tailscale version看到什麼代表什麼:確認版本是否為 1.104.4 或更新。若非,立即升級。 - 確認是否啟用 Tailscale SSH
tailscale status | grep ssh看到什麼代表什麼:若有顯示 SSH 相關資訊,代表啟用 Tailscale SSH。檢查 ACL 中 SSH 規則是否啟用 forwarding。 - 若無法立即升級,設定環境變數關閉 forwarding
echo 'TS_SSH_DISABLE_FORWARDING=1' | sudo tee -a /etc/default/tailscaled sudo systemctl restart tailscaled看到什麼代表什麼:重啟後 forwarding 被關閉,但 Tailscale SSH 仍可使用。這只是暫時緩解,仍需升級。 - 檢視 Tailscale ACL 中的 SSH 規則看到什麼代表什麼:登入 Tailscale 管理介面或檢視本地 ACL 檔案,確認 SSH 規則是否為單一來源對單一目標,而非廣泛授權(by tag or identity)。
- 若使用 headscale,檢查版本並評估風險
headscale version看到什麼代表什麼:若為 0.29.5 或更早,目前無法關閉 SSH forwarding、沒有修補版本。評估是否暫時關閉 Tailscale SSH 或限縮規則到最小範圍。 - 若懷疑裝置被入侵,從控制平面刪除該裝置看到什麼代表什麼:在 Tailscale 管理介面或 headscale 中刪除該裝置,撤銷其金鑰。只重灌機器不會撤銷金鑰。
- 敏感系統啟用 SSH check mode看到什麼代表什麼:在 ACL 中為敏感系統設定 check mode,增加一道登入關卡(雖然不修補 forwarding 漏洞,但能降低風險)。
如果你使用 Tailscale SSH
- 立即升級到 1.104.4:這是完整修補。
- 無法立即升級:設定
TS_SSH_DISABLE_FORWARDING=1並重啟 tailscaled。 - 檢視 SSH 存取規則:改寫為單一來源對單一目標,移除廣泛授權。
- 敏感系統啟用 check mode:多一道關卡,雖然不是根本修補。
- 若懷疑被入侵:從控制平面刪除裝置,不要只重灌。
如果你使用 headscale
- 目前沒有修補版本:0.29.5 無法關閉 SSH forwarding、未修補報告問題。
- 把每條 SSH 授權視為給 root:這是 Windisch 報告的建議。
- 考慮暫時關閉 Tailscale SSH:或將規則限縮到最小範圍。
- 等待官方修補:持續追蹤 headscale 官方公告。
修補已經釋出,但 headscale 使用者還在等待。今天就升級 Tailscale,或設定緩解措施。
環境背景、時間線、攻擊鏈對照 ATT&CK、關鍵證據、根因、處置與檢討都在完整版,約 8 分鐘。
來源
本文為公開報導與官方公告的整理與拆解,非第一手鑑識;證據等級依來源可信度標註。
本文由 AI 團隊協助研究與撰寫,經隱私與事實檢查後發布;證據等級依來源可信度標註。
複製下面這段,貼給你在用的 AI 工具(Claude Code、Cursor、Copilot、ChatGPT 都可以)。它會用本篇的破口位置、自我檢測與學習重點,對你的專案或環境做一次資安掃描,列出潛在問題與建議的調整或加強方式。
預設是唯讀:只發現問題、提出建議,不會改你任何檔案或設定。
M2 弱點與修補管理 · M4 網路架構 · 想在自己的環境做一次同樣的盤點,從 自我盤點 開始。
每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。或先 加入會員 記錄你完成的任務。