修補公告

Tailscale 釋出 1.104.4 修補 SSH 漏洞:4 個安全公告、headscale 仍無修補

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。

30 秒看懂
  • 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 操作改為以登入使用者身分執行,並依賴作業系統檔案權限。
  • 其他三個公告: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。

發生了什麼

上週的報導 中,我們拆解了 Erica Windisch 發布的 Tailworm 報告,揭露 Tailscale SSH 在啟用 port forwarding 時,攻擊者只需入侵網格內任一台裝置,即可透過 SSH socket forwarding 提權到 root,並在一秒內橫向擴散至存取規則允許的所有伺服器。當時官方無 CVE、無修補版本、無安全公告。

2026 年 10 月 28 日,Tailscale 釋出 1.104.4 版本,修補 Tailworm 報告揭露的漏洞,並發布 4 個安全公告:

  1. TS-2026-014:SSH socket forwarding 讓 permitted session 能存取 root-only socket(如 Docker socket 或 tailscaled local API)
  2. TS-2026-015:SSH session 可耗盡伺服器記憶體,導致 Tailscale process 崩潰、切斷該節點所有 Tailscale 網路
  3. TS-2026-016:tailscale serve forward 到 Unix socket 可存取 tailscaled local API 取得節點遠端控制,以及相關的 socket 替換問題
  4. 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 功能允許將流量轉發到本地服務。這個公告涵蓋兩個問題:

  1. Forward 到 Unix socket 可存取 tailscaled local API:讓攻擊者取得節點的遠端控制權。
  2. 相關的 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:

  1. 在 tailscaled 服務環境變數中設定 TS_SSH_DISABLE_FORWARDING=1
  2. 重啟 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 的公告沒有涵蓋這個情況。

這代表:

  1. 如果懷疑裝置被入侵,不要只重灌
  2. 要從 Tailscale 控制平面(或 headscale)刪除該裝置
  3. 重灌後重新加入網格,取得新的金鑰

Headscale:情況更糟

headscale 是 Tailscale 的開源、自架控制伺服器。

在 headscale 上,SSH forwarding 在每個被接受的 session 上都自動授予,且無法在政策中關閉。

最新的 headscale 版本 0.29.5(2026 年 10 月 13 日釋出)不修補報告中的問題。

Windisch 的報告結論很直接:在 headscale 上,每一條 SSH 授權都應該被視為「給對方那台伺服器的 root」。

這對 headscale 使用者是個嚴重問題:

  1. 無法關閉 forwarding
  2. 沒有修補版本
  3. 每條 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。

lessons本案的 7 個教訓
  1. 01
    TOCTOU(Time-of-check to time-of-use)攻擊:Tailscale 檢查路徑與使用路徑之間的時間差,攻擊者在間隙替換 socket,繞過保護機制。
  2. 02
    Root-level process 的風險:即使有路徑檢查,只要 process 以 root 執行,攻擊者就能利用各種技巧存取 root-only 資源。修補方法是改為以登入使用者身分執行。
  3. 03
    修補不等於撤銷金鑰:重灌被入侵的機器不會撤銷竊取的裝置金鑰,必須從控制平面刪除裝置。
  4. 04
    緩解措施不是修補:TS_SSH_DISABLE_FORWARDING=1 與 SSH check mode 能降低風險,但不是根本修補;升級才是完整解決方案。
  5. 05
    headscale 的困境:自架控制伺服器無法關閉 SSH forwarding、沒有修補版本,使用者只能把每條 SSH 授權視為給 root。
  6. 06
    揭露流程的爭議:通報後 2 小時就公開報告,引發對「協調揭露」的討論。
  7. 07
    持續出現的問題區域:Tailscale SSH 今年已經是第二次修補 socket forwarding 相關問題,顯示這是需要持續加固的區域。
keywords重點學習:最需要學習的 10 個關鍵字7 個
  1. 01
    TS-2026-014
    Tailscale 安全公告,SSH socket forwarding 讓 permitted session 能存取 root-only socket。
  2. 02
    TOCTOU(Time-of-check to time-of-use)
    競爭條件攻擊,系統檢查與使用檔案之間有時間差,攻擊者在間隙替換檔案。
  3. 03
    TS_SSH_DISABLE_FORWARDING
    環境變數,設為 1 可關閉 SSH forwarding 但不停用整個 Tailscale SSH,用於無法立即升級的緩解措施。
  4. 04
    SSH check mode
    Tailscale 功能,要求使用者在 session 開始前再次登入,但不修補 forwarding 漏洞,只是多一道關卡。
  5. 05
    headscale 0.29.5
    Tailscale 的開源自架控制伺服器最新版本(2026-10-13),無法關閉 SSH forwarding、未修補報告問題。
  6. 06
    tailscaled local API
    Tailscale daemon 的本地 API,存取它能取得節點的遠端控制權。
  7. 07
    Docker socket
    Docker daemon 的 Unix socket,存取它能以 root 身分執行容器指令,等同 root shell。
try today今天就可以來試試約 15 分鐘

全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。

  1. 檢查 Tailscale 版本
    tailscale version
    看到什麼代表什麼:確認版本是否為 1.104.4 或更新。若非,立即升級。
  2. 確認是否啟用 Tailscale SSH
    tailscale status | grep ssh
    看到什麼代表什麼:若有顯示 SSH 相關資訊,代表啟用 Tailscale SSH。檢查 ACL 中 SSH 規則是否啟用 forwarding。
  3. 若無法立即升級,設定環境變數關閉 forwarding
    echo 'TS_SSH_DISABLE_FORWARDING=1' | sudo tee -a /etc/default/tailscaled
    sudo systemctl restart tailscaled
    看到什麼代表什麼:重啟後 forwarding 被關閉,但 Tailscale SSH 仍可使用。這只是暫時緩解,仍需升級。
  4. 檢視 Tailscale ACL 中的 SSH 規則
    看到什麼代表什麼:登入 Tailscale 管理介面或檢視本地 ACL 檔案,確認 SSH 規則是否為單一來源對單一目標,而非廣泛授權(by tag or identity)。
  5. 若使用 headscale,檢查版本並評估風險
    headscale version
    看到什麼代表什麼:若為 0.29.5 或更早,目前無法關閉 SSH forwarding、沒有修補版本。評估是否暫時關閉 Tailscale SSH 或限縮規則到最小範圍。
  6. 若懷疑裝置被入侵,從控制平面刪除該裝置
    看到什麼代表什麼:在 Tailscale 管理介面或 headscale 中刪除該裝置,撤銷其金鑰。只重灌機器不會撤銷金鑰。
  7. 敏感系統啟用 SSH check mode
    看到什麼代表什麼:在 ACL 中為敏感系統設定 check mode,增加一道登入關卡(雖然不修補 forwarding 漏洞,但能降低風險)。

如果你使用 Tailscale SSH

  1. 立即升級到 1.104.4:這是完整修補。
  2. 無法立即升級:設定 TS_SSH_DISABLE_FORWARDING=1 並重啟 tailscaled。
  3. 檢視 SSH 存取規則:改寫為單一來源對單一目標,移除廣泛授權。
  4. 敏感系統啟用 check mode:多一道關卡,雖然不是根本修補。
  5. 若懷疑被入侵:從控制平面刪除裝置,不要只重灌。

如果你使用 headscale

  1. 目前沒有修補版本:0.29.5 無法關閉 SSH forwarding、未修補報告問題。
  2. 把每條 SSH 授權視為給 root:這是 Windisch 報告的建議。
  3. 考慮暫時關閉 Tailscale SSH:或將規則限縮到最小範圍。
  4. 等待官方修補:持續追蹤 headscale 官方公告。

修補已經釋出,但 headscale 使用者還在等待。今天就升級 Tailscale,或設定緩解措施。

來源

分享
精選拆解直送信箱

每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。

延伸閱讀

研究報告拆解

Ivanti Connect Secure 三漏洞鏈攻擊:繞過認證、執行程式碼、提升權限到 root

美國 CISA 將 Ivanti Connect Secure 的兩個漏洞(CVE-2026-111357、CVE-2026-118527)列入 KEV 清單,這兩個漏洞與先前的 CVE-2026-104935 組成完整攻擊鏈,讓攻擊者從未認證狀態提升到 root 權限。威脅組織 UTA0576 已在野外使用這組漏洞鏈竊取憑證與 Active Directory 資料,但未部署 web shell 或惡意軟體。Ivanti 已發布修補版本。

  • 2026/11/01
  • 每日拆解