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。
- 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 個安全公告:
- 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,或設定緩解措施。
來源
每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。
延伸閱讀
Tailscale SSH 未修補漏洞:一台被入侵的裝置能橫向取得整個網格的 root
研究員 Erica Windisch 發布 Tailworm 報告,顯示 Tailscale SSH 在啟用 port forwarding 時,攻擊者只需入侵網格內任一台裝置,即可透過 SSH socket forwarding 提權到 root,並在一秒內橫向擴散至存取規則允許的所有伺服器。目前官方無 CVE、無修補版本,只能調整組態降低風險。
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 已發布修補版本。