觀點 · 資訊分享
Tailscale 一次公告 4 個漏洞:Tailscale SSH 與 Serve 能摸到 root 專用 socket,升級 1.104.4
Tailscale 在 10 月 26 日一次公告 4 個安全漏洞,集中在 Tailscale SSH 與 Serve。最嚴重的可以讓已授權的對等裝置碰到 Docker socket 等 root 專用 socket,甚至接管整個節點。全部在 1.104.4 修正,家裡 NAS 有跑 Tailscale 的人該檢查版本了。
- 發布
- 2026-10-26
- 篇幅
- 約 5 分鐘 · 2,326 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:Tailscale 10 月 26 日一次公告 4 個安全漏洞(TS-2026-014 到 017),集中在 Tailscale SSH 與 Tailscale Serve:最嚴重的可以讓已授權的對等裝置摸到 root 專用的 socket,甚至完全接管節點;修正版本是 1.104.4。

先用白話講:Tailscale SSH 與 Serve 是什麼?
Tailscale 是很多人拿來把家裡 NAS、工作電腦、雲端主機串成一個私人網路的工具。它附帶兩個方便的功能:
- Tailscale SSH:不用自己管 SSH 金鑰,直接用 Tailscale 的身分登入另一台機器
- Tailscale Serve:把機器上的某個服務(網頁、Unix socket)分享給私人網路裡的其他裝置
問題在於,負責這些事的 tailscaled 程式是以 root(最高權限) 跑的。你可以想像成一位拿著萬能鑰匙的管家幫你轉交東西:管家本來只該幫你拿你有權拿的東西,但這次的漏洞讓「有權請管家辦事的人」可以騙管家去開那些只有屋主能開的門。
發生什麼事
Tailscale 安全公告頁在 10 月 26 日列出 4 則:
| 編號 | 影響功能 | 問題 | 後果 |
|---|---|---|---|
| TS-2026-014 | Tailscale SSH 的 socket 轉發 | 檢查路徑只看字面,實際操作卻用 root 身分;配合 ssh -L、ssh -R 與路徑競爭條件,等於把路徑白名單整個繞過 |
已授權的對等裝置可以碰到 Docker socket、tailscaled 本機 API 等 root 專用 socket |
| TS-2026-015 | Tailscale SSH 連線處理 | 不斷送視窗大小變更訊息或追加環境變數,會讓記憶體無限成長,斷線後也不釋放 | 把 tailscaled 撐到被系統 OOM 砍掉,整台機器的 Tailscale 連線全斷 |
| TS-2026-016 | Tailscale Serve 的 Unix socket 後端 | TCP 轉發到 Unix socket 沒有防護、以 root 撥接;symlink 檢查只在載入設定時做一次 | 可直接打到 tailscaled 本機 API,官方寫明可導致整個節點被接管 |
| TS-2026-017 | Tailscale Serve 開 TLS 時的 HTTP/2 | 同一條連線上的多個串流共用一份狀態,Tailscale-App-Capabilities 標頭會在不同掛載點之間串線 |
靠這個標頭做授權的應用,可能把另一個掛載點的權限回應給錯的人 |
四則全部標示「已在 Tailscale 1.104.4 或更新版本修正」。官方 changelog 的 1.104.4 條目日期則是 10 月 28 日(後續),並說明 1.104.3 是內部版本,實際對外的修正版就是 1.104.4。
誰該注意
- 前三則都需要已經通過政策授權的對等裝置或本機使用者才能觸發,不是從網際網路直接打進來;但「私人網路裡的某台裝置被攻陷」正是零信任網路最該防的情境
- TS-2026-014:有開 Tailscale SSH 而且 存取政策允許本機或遠端轉發的節點
- TS-2026-015:所有跑 Tailscale SSH 伺服器的節點
- TS-2026-016:本機有人能改 Serve 設定、或能寫入後端路徑的節點
- TS-2026-017:Serve 開 TLS、且同一節點上有兩個以上權限需求不同的掛載點
給開發者的技術細節
- 直接升級:所有平台升到 1.104.4 以上
- 一時不能升級的 TS-2026-014 緩解:在
tailscaled服務環境加上TS_SSH_DISABLE_FORWARDING=1後重啟,只關掉轉發、不用整個關 Tailscale SSH - 修正方式(來自 changelog):SSH 的 socket 轉發改用登入者本人的身分執行,不再用 root;Serve 限制 TCP 轉發到 tailscaled socket,並且每次連線都重新驗證後端路徑;HTTP/2 改成每個請求自己帶能力資訊,不再跨串流共用
- 如果你的應用用
Tailscale-App-Capabilities標頭做授權判斷,升級後建議重新測一次多掛載點的情境
我的看法
我自己在家用 NAS 自架服務,Tailscale 幾乎是標配,而 Docker socket 正好是這類機器上最敏感的東西之一:拿到 Docker socket 基本上就等於拿到 root。這次 TS-2026-014 和 016 講的就是這條路,而且觸發條件只需要「網路裡某台已授權的裝置」,一台中毒的筆電就夠了。
Tailscale 這種工具的方便之處是「裝完就忘」,風險也是同一件事:很少人會定期去看 NAS 上的版本。建議至少把自動更新打開,或者把它加進每月巡檢清單;真的要開 Tailscale SSH 轉發的人,順手檢查一下存取政策是不是給得太寬。
名詞小辭典
- Unix socket:同一台機器上程式之間溝通用的「檔案型通道」,Docker 與 tailscaled 的控制介面都是這種。
- root:Linux 系統的最高權限帳號,拿到它就能做任何事。
- OOM(Out of Memory):記憶體用光時,系統會強制砍掉吃最多記憶體的程式。
- ACL(存取控制清單):Tailscale 裡定義「誰可以連到誰、用什麼方式」的政策檔。