SecPod

Learn Search

Search across all Learn content

← Back to Security Research
Tailscale SSH Flaws Turn a Single Foothold Into Root Access on Target Servers

Tailscale SSH Flaws Turn a Single Foothold Into Root Access on Target Servers

Tailworm reports high-severity Tailscale SSH issues on version 1.104.2 where Unix-socket forwarding can run as root inside tailscaled, including TOCTOU races on path checks. A policy-approved device may escalate on reachable hosts. Tailscale is reviewing the report and working on fixes. Interim steps center on tighter SSH policy and disabling forwarding.

Oct 27, 2026By Bapanapalli Prem Sai Siddhik
vulnerability research

Summary

The Tailworm assessment by Erica Windisch of Cyberdione Labs, published 25 October 2026, describes high-severity issues in Tailscale SSH on Tailscale 1.104.2. Unix-socket forwarding handled inside root-level tailscaled can allow a policy-approved session to reach privileged local sockets and escalate beyond the intended local user.

The path requires a foothold on one device that SSH policy already allows to connect to the target. It is not unauthenticated internet access to arbitrary machines. As of late October 2026, no CVE and no Tailscale bulletin for this set had been published. Tailscale stated that it received the report, is working on fixes, and is not recommending that everyone disable Tailscale SSH.

Vulnerability Details

Tailworm’s Tailscale SSH findings were reported against unmodified client version 1.104.2 (testing window 22–24 October 2026). Related SSH grant behavior was also examined on headscale 0.29.5. No CVE identifiers were assigned in the report or in Tailscale’s published bulletins at disclosure. This issue is tracked in our feed as SVE-110171.

The researcher rates the main SSH privilege findings High. Internal labels identify related scenarios under the same Tailscale SSH surface, not separate product versions. Proof-of-concept material was described as provided to Tailscale’s security contact and not published as a public exploit kit. Findings 1–3 listed in below section share one root cause and remediation path in the report.

Technical Information

High Privilege Escalation Lateral Movement No User Interaction

Authentication model

Tailscale SSH authorizes by device identity on the WireGuard mesh. The SSH authentication phase completes with method none. A tailnet policy rule decides whether that device may open a session to a target. There is no separate password or key check at the SSH layer for that device identity. The attack path needs control of a device that policy already permits.

Why privilege matters

The SSH server runs inside tailscaled with full system privilege. Tailworm reports that Unix-socket forwarding path checks and file operations run in that privileged context, without a post-auth privilege drop of the kind used by designs such as OpenSSH before forwarding work. That shared design underpins Findings 1–3 below.

Finding 1 — Local Unix-socket forwarding (ssh -L)

Affected component is the Tailscale SSH server in tailscaled 1.104.2 (gliderssh streamlocal local forwarding).

Prerequisites: an SSH policy rule that accepts the attacker’s connection to the target, with local forwarding permitted. No sudo, docker-group membership, or victim-side daemon access is required on the target.

An authenticated peer with that rule can cause the root-privileged tailscaled process to connect, on the peer’s behalf, to Unix sockets restricted to root. In lab reproduction, local forwarding was used to reach a privileged service socket (for example a Docker socket under an allowlisted directory path). The verified result was root-equivalent impact on the target, including reading protected system credential files, with no sudo, docker group, or victim daemon involved. A static path allowlist of home, /tmp, and /run/user is bypassed when Finding 3 is available.

Finding 2 — Remote Unix-socket forwarding (ssh -R)

Affected component is the Tailscale SSH server in tailscaled 1.104.2 (gliderssh streamlocal remote forwarding, including BindUnlink behavior).

Prerequisites: as Finding 1, with remote forwarding permitted.

The root-privileged tailscaled can unlink a sticky-directory-protected, root-owned socket and bind the attacker’s forwarding listener at that path, impersonating the service. For command-channel daemons, the report describes this as direct root code execution in lab conditions. For Docker, the report describes cleartext registry-credential capture and control over pulls of unpinned tags, with host root requiring a further engagement step such as tag poisoning using captured credentials.

Finding 3 — TOCTOU on path allowlists

Affected component is path validation in the Tailscale SSH server in tailscaled 1.104.2 (validateAndResolve{Listen,Socket}Path in gliderssh).

Prerequisites: as Findings 1–2 (an SSH accept rule with forwarding permitted). The race runs unprivileged inside the attacker’s SSH session.

Path validation checks the lexical path at check time. Unlink, bind, and dial occur later, when the kernel re-resolves the path. A rename race in the session can win that check-to-use gap on both the bind and dial sides. On the bind side, the report describes the root agent unlinking a live root-owned control socket under the race. Lab chains built on this position included holding a rebind, capturing live enrollment material in transit, and joining a rogue node under the victim’s identity when Tailnet Lock was not enforcing stronger admission. With Tailnet Lock enabled, enrollment secrets could still be observed in transit, but the final join step was not completed. A related gliderssh sub-variant leaves a forensic signature around socket mode during Listen and Chmod, and can apply a root chmod to a live daemon socket, extending impact to permission-removal denial of service on arbitrary paths.

Enrollment capture and lab spread

Policy-granted Tailscale SSH plus Findings 1–3 allowed automated spread in the lab to every device the policy permits, with no passwords, no stolen host keys, and no user interaction, measured at under a second per hop. Two limits held: per-pair access grants bounded or stopped spread, and hardware-bound device credentials (TPM / Secure Enclave) hinder durable identity theft. The report describes measured lab behavior, not confirmed in-the-wild worming.

Finding 5 — Session handling and memory pressure

Affected component is the Tailscale SSH server in tailscaled 1.104.2, inherited from upstream gliderlabs/ssh v0.3.8.

Prerequisites: an authenticated SSH session allowed by policy.

A window-change blocking send parks a goroutine per session channel, and environment appends are unbounded. The report measured on the order of hundreds of megabytes allocated within seconds, with memory persisting after disconnect, producing a memory-exhaustion condition in the root-privileged daemon. Impact is availability of the agent and host under session abuse, not the same socket-to-root path as Findings 1–3.

headscale and check mode

On Tailscale’s hosted control plane, forwarding can be denied per SSH rule. On headscale 0.29.5, the report states forwarding is granted on every accepted SSH session and cannot be disabled, so every SSH grant should be treated as high risk until fixed.

SSH check mode (action: check) requires re-authentication before a session starts and grants access for a time window. Tailworm and Tailscale both state that check mode does not fix privilege escalation. It only adds a barrier before the session is established.

These findings apply to Tailscale SSH. Tailscale has distinguished them from ordinary SSH carried over a Tailscale connection. They are not unauthenticated remote code execution from the open internet to every node.

Impact

  • Root-equivalent access on reachable Tailscale SSH targets via privileged socket operations
  • Lateral movement limited by SSH policy breadth. Wide grants expand reach. Per-pair grants shrink it
  • Enrollment material theft and possible rogue node join when Tailnet Lock is not enforced
  • Host or agent availability loss from session-driven memory exhaustion

Affected Configurations

  • Tailscale 1.104.2 with Tailscale SSH enabled
  • SSH rules that allow the attacker-controlled device to reach the target, with Unix-socket forwarding available to the session
  • headscale 0.29.5 where every SSH grant includes forwarding, per the report

Nodes without Tailscale SSH are outside this class. Tailscale stated it is still validating which configurations are affected. Earlier 2026 Tailscale bulletins, including the TS-2026-004 class fixed in 1.98.9, already addressed related socket-forwarding problems. Tailworm argues residual privilege-boundary issues remain in the tested 1.104.2 build.

Vendor Status

Mike Shaver, Tailscale VP of Engineering, wrote on r/Tailscale that Tailscale received the report, had already been reviewing related areas with external specialists, identified issues it is fixing, and is still validating scope. Issues identified so far are mainly post-authorization behavior around Unix privileges and SSH forwarding. In some cases a session may do more than the configured local user should be allowed to do. Tailscale is not recommending a fleet-wide disable of Tailscale SSH and plans a security advisory covering confirmed findings, affected configurations, recommended actions, and patches. As of late October 2026, no matching bulletin, CVE, or fixed client release for this set had been published.

Mitigation and Recommendations

  1. Tighten SSH policy. Limit access to devices and users that need it. Prefer per-pair source-to-destination grants. On sensitive systems, restrict further while investigation continues.
  2. Disable SSH forwarding if unused. Deny forwarding in hosted SSH rules. On the agent, set TS_SSH_DISABLE_FORWARDING=1 in the tailscaled environment and restart the service so forwarding is off without disabling Tailscale SSH. On headscale 0.29.5, treat every SSH grant as high risk.
  3. Disable Tailscale SSH only where it is not needed (tailscale set --ssh=false), after confirming another admin path. A blanket disable is not Tailscale’s current recommendation.
  4. Optional check mode adds a pre-session auth step only. It does not remediate privilege escalation.
  5. Enable automatic updates, node-key expiry, and Tailnet Lock where appropriate.
  6. If compromise is suspected, delete the device at the control plane. Reimaging alone does not revoke copied keys.
  7. Apply Tailscale’s advisory and fixed builds when published, then re-check SSH policy.

Instantly Fix Risks with Saner Patch Management

Saner patch management is a continuous, automated, and integrated solution that helps you quickly remediate risks, including critical third-party application updates. It supports Windows, Linux, macOS, and 550+ third-party applications.

It also allows you to set up a safe testing area to test patches before deploying them in a primary production environment. Saner patch management additionally supports a patch rollback feature in case of patch failure or a system malfunction.

Experience the fastest and most accurate patching software here.

Featured Posts

Open PHP2Shell After the Patch: The FAQ for Verification, Detection and Response
PHP2Shell After the Patch: The FAQ for Verification, Detection and Response

CVE Research

PHP2Shell After the Patch: The FAQ for Verification, Detection and Response

Patches for PHP2Shell are out, but verifying them, trusting interim mitigations and checking for earlier compromise are where teams are stuck. This FAQ covers stale version banners, container rebuilds, WAF limits, detection signals and what to rotate.

Oct 26, 2026

Open AI-Powered Ransomware Intrusions: Inside the Phantom Framework Linked to INC and The Gentlemen
AI-Powered Ransomware Intrusions: Inside the Phantom Framework Linked to INC and The Gentlemen

CVE Research

AI-Powered Ransomware Intrusions: Inside the Phantom Framework Linked to INC and The Gentlemen

The Phantom Framework supports AI-assisted cyber intrusions by enabling lateral movement, persistence, data exfiltration, and progression toward ransomware deployment, putting enterprise networks and sensitive organizational data at risk.

Oct 26, 2026

Open ARTEX and the South Korean Bank Attacks: Why Removing an AI Penetration Testing Tool Is Not Enough
ARTEX and the South Korean Bank Attacks: Why Removing an AI Penetration Testing Tool Is Not Enough

CVE Research

ARTEX and the South Korean Bank Attacks: Why Removing an AI Penetration Testing Tool Is Not Enough

Oct 23, 2026

Open CVE-2025-38501: Linux KSMBD Flaw Lets Unauthenticated Attackers Exhaust SMB Connections
CVE-2025-38501: Linux KSMBD Flaw Lets Unauthenticated Attackers Exhaust SMB Connections

CVE Research

CVE-2025-38501: Linux KSMBD Flaw Lets Unauthenticated Attackers Exhaust SMB Connections

Idle connections can become a service outage for Linux file servers running vulnerable KSMBD code. CVE-2025-38501 allows an unauthenticated remote client to consume connection capacity and block legitimate access. This article explains the flaw, affected kernel branches, available fixes, and practical steps to reduce exposure.

Oct 23, 2026