← 返回事件分析列表

1. 事件概述

2026-10-25,Cyberdione Labs 研究者 Erica Windisch 公開名為「Tailworm」的報告,列出 11 項發現、分為五大類,測試對象為 Tailscale 用戶端 1.104.2 與自架控制伺服器 headscale 0.29.5,實驗期間為 10 月 22 日至 24 日,皆為實驗室環境測試,非對真實網路的攻擊。報告公開時沒有協調揭露的修補版本,也沒有 CVE 編號。Tailscale 工程副總 Mike Shaver 隨後在 Reddit 公開回應:公司已收到報告,且此前已與外部安全專家檢視相同領域、已發現正在修復的問題;目前仍在確認受影響的設定範圍,並未建議所有人停用 Tailscale SSH。

2. 攻擊成立的條件(理解本事件的關鍵)

Tailscale SSH 是內建於 tailscaled 的 SSH 伺服器,它以裝置身分與存取規則決定能否登入,不走傳統密碼或金鑰。Tailworm 的主要利用鏈需要同時滿足:

  1. 目標裝置有啟用 Tailscale SSH,且其 SSH 規則允許 port forwarding;
  2. 攻擊者已先控制 tailnet 內的一台裝置(例如透過有漏洞的 Web 應用、被污染的軟體套件、釣魚或竊得的登入資料);
  3. 存取規則允許該裝置連向目標。

換言之,Tailscale 並不製造第一個立足點;它可能把一個小立足點放大成整個機隊的淪陷。研究者在實驗中展示,此傳播可自動化到每跳不到一秒,且不需要偷密碼或金鑰。實驗同時顯示,將存取規則收緊為單一來源對單一目標的成對授權,能有效阻止傳播,是研究者指出唯一在實驗中奏效的控制。

3. 十一項發現(依元件分組)

#元件內容概要嚴重度(研究者評級)攻擊者需要的前置條件
F1Tailscale SSH本地 socket 轉發(ssh -L)以 root 執行,可觸及僅 root 可用的 socket;實驗中取得 root 並讀取 /etc/shadow高允許本地轉發的 SSH 規則
F2Tailscale SSH遠端 socket 轉發(ssh -R)可取代 root 擁有的 socket,經命令 daemon 達成 root 程式碼執行高允許遠端轉發的 SSH 規則
F3Tailscale SSH路徑檢查與實際使用之間的時間差(競態)可被擊敗,最終使流氓節點加入網路高一般 SSH 工作階段且允許轉發
F4App connectors(conn25 實驗功能)取得 connector 資格的裝置可把流量導向任意目的地,包括雲端 metadata 服務與 Kubernetes 內部服務高一般 app 資格
F5Tailscale SSH工作階段頻繁建立銷毀可使 root daemon 在迴圈中耗盡記憶體(7 秒約配置 536 MB)高已驗證的 SSH 工作階段
F6headscale 與 DERP 客戶端未授權註冊可擠掉待審核的裝置加入;惡意 relay 可迫使客戶端讀取最高約 1.34 GB 資料中高可觸及 headscale 的網路存取,或惡意 relay
F7tailscale serve將 TCP 轉發指向本地 API socket,遠端 peer 可寫入本地 API,實驗中設定變更回傳成功,等於節點被接管高管理者設定的 serve 轉發,加上被允許的 peer
F8tailscale serve設定後被置換的 symlink 可擊敗 socket 防護,使 root 撥接至僅 root 可用的 socket中(範圍受限)對 backend 路徑目錄的本地寫入權
F9FunnelFunnel 存取僅取決於 peer 能力與本地設定,研究者列為威脅模型議題中已啟用 funnel 的節點
F10tailscale serveTS_SERVE_ALLOW_ALL_INTERFACES 設定會讓 serve 暴露於隧道綁定之外,研究者列為設定注意事項設定註記有設定該變數的節點
F11tailscale serve共用 serve context 的競態可使一個掛載點的權限帶到另一個中(無標頭授權時低中)使用標頭式授權的 serve 設定

注:F3 鏈的最後一步(加入流氓節點)在有啟用 Tailnet Lock 的網路上無法完成,但過程所需的祕密仍在傳輸中被擷取;F6 中 headscale 在 0.29.5 無法關閉 SSH forwarding,研究者建議在其修補前,應將每一條 headscale 的 SSH 授權視為等同授予 root 存取。

4. 廠商回應與揭露過程的出入

社群流傳版本稱研究者「未先通知廠商即直接公開」,此說法與媒體報導有出入:The Hacker News 報導 Tailscale 已收到該報告,研究者亦表示其概念驗證程式碼僅提供給 Tailscale、未公開,他人尚無法公開重現其結果。截至 2026-10-26 查核時,Tailscale 的安全公告頁面尚無針對本報告的新公告,最新版本仍為被測試的 1.104.2。Tailscale 對外建議使用者檢視存取規則,並考慮啟用 SSH check mode;但研究指出 check mode 只是多加一層登入步驟,並不修復權限提升問題本身。

5. 自我檢查清單(讀者可自行對照)

  1. 確認是否真的有在用 Tailscale SSH。若用的是傳統 OpenSSH 透過 Tailscale 隧道連線(以 SSH 金鑰登入),與 Tailscale SSH 是不同機制,本報告的主要利用鏈不適用;在主機上可用 tailscale debug prefs 查看 RunSSH 是否為 true,或以 tailscale set --ssh=false 關閉(關閉前務必先確認還有其他方式能連上該主機)。
  2. 檢查 tailscale serve status 與 tailscale funnel status,移除指向 Unix socket、特別是本地 API socket 的轉發。
  3. 未使用的 app connector 資格應移除,並限制其出口目的地。
  4. 存取規則改為成對授權:明確指定單一來源與單一目標;在規則支援的平台上,把 SSH forwarding 設為拒絕。headscale 0.29.5 使用者無法關閉 forwarding,應把每條 SSH 授權視為 root 等級。
  5. 確認節點金鑰到期(node key expiry)沒有被關閉;只有真正無人值守的裝置才考慮關閉。
  6. 清理長期未上線的閒置裝置:在管理主控台刪除,而不是只重灌主機,因為已複製出去的金鑰不會因重灌而失效。
  7. 評估是否啟用 Tailnet Lock:啟用後新節點必須經信任裝置簽章才能加入(即使登入帳號或 auth key 外洩也無法單方面加入裝置);但簽章裝置的保管與遺失復原要先規劃,避免把自己鎖在外面。
  8. 保護 Tailscale 登入帳號:以 passkey 或硬體金鑰作雙因素驗證。

6. 本工作坊的判讀

本事件容易被誤讀為「Tailscale 被從外部攻破」。實際上它示範的是零信任工具的共同課題:當一支以 root 運行的代理程式把網路層的授權直接轉成作業系統層的權限,授權之後在主機內部發生什麼事同樣需要權限分離與檢查。對防守方的實務意義有三:第一,功能有開才有風險,盤點實際啟用的功能比恐慌更重要;第二,存取規則的粒度決定災情半徑,成對授權是成本最低的止血;第三,在修補版本出現前,已確認的資訊是研究者的實驗結果與廠商「正在修復」的回應,其餘說法——包括嚴重程度的爭論——應保留為未定論,等待官方公告與修補版本落地。

7. 原始來源與參考

  • 原始揭露:Cyberdione Labs, "Tailworm" 報告(Erica Windisch,2026-10-25)。
  • 主要報導:The Hacker News, "Unpatched Tailscale SSH Flaws Could Let a Hacked Device Reach Root on Other Servers"(2026-10-25 至 26);Cyber Security News, "Tailscale SSH Flaws Could Let Hackers Gain Root Access Across Servers"。
  • 廠商回應:Tailscale 工程副總 Mike Shaver 於 Reddit 的公開回覆(經 The Hacker News 轉述)。
← 返回事件分析列表