← gociux.comall insights

Active threat · 27 Oct 2026

Tailworm: are your Tailscale SSH servers exposed, and what to do before the fix

, Gociux · October 2026 · 6 min read

TL;DR

If any Linux host in your tailnet runs Tailscale SSH, treat every device your policy allows to SSH into it as a possible path to root on that host until Tailscale ships a fix. Tailscale says most of the issues it has confirmed are privilege escalation: a user already authorised to connect "may be able to perform actions beyond the permissions of their configured local user, including potentially gaining elevated privileges". The quickest reduction in risk is to switch Tailscale SSH off where you don't need it and to disable SSH forwarding where you do.

What happened

On 25 October 2026 Erica Windisch of Cyberdione Labs published Tailworm, a security assessment of Tailscale 1.104.2 and headscale 0.29.5 tested in a lab between 22 and 24 October. It lists 11 findings across Tailscale SSH, tailscale serve, the DERP relay client, the experimental conn25 app connector, and headscale. The researcher described the disclosure as "reported but not coordinated": Tailscale received the report and proof-of-concept code shortly before publication, and the proof of concept is not public (The Hacker News).

The three findings that matter most for most teams are in Tailscale SSH forwarding, all rated high by the researcher:

The report calls the chain "wormable", because a compromised server can repeat it against the next server it is allowed to reach. Other researchers have disputed that label, and nobody has publicly reproduced the findings yet. The precondition is not disputed: the attacker must already control a device your policy allows to SSH to the target, for example through a vulnerable web app, a poisoned package, phishing or stolen credentials.

Tailscale's VP of engineering said the company was already reviewing the same areas with outside specialists and had found issues it is fixing. On 26 October Tailscale published an investigation and remediation update confirming that most of what it found is privilege escalation, calling the issues serious, and saying it is "not recommending that everyone disable Tailscale SSH". Public commits in the Tailscale repository from 24 October move forwarding into a separate process that runs as the logged-in user, which addresses the root cause, but as of the latest public reports that change was not yet in a release (Fleet).

Who is exposed

What does not help

Step 1: find the hosts that run Tailscale SSH

On each Linux host, check the local setting:

tailscale debug prefs | grep -i '"RunSSH"'

Then list the ssh rules in your tailnet policy file and note which sources can reach each of those hosts, and as which users.

Step 2: turn Tailscale SSH off where nobody needs it

Make sure you have another way into the host (OpenSSH, a console, a cloud serial console) before you do this.

sudo tailscale set --ssh=false

Step 3: disable forwarding on the hosts that keep it

tailscaled reads the environment variable TS_SSH_DISABLE_FORWARDING=1 at startup. It blocks TCP, Unix-socket and agent forwarding in both directions, while ordinary interactive Tailscale SSH sessions keep working. Tailscale did not document this variable before the incident, so treat it as a stopgap until the fixed release. On a systemd host:

sudo mkdir -p /etc/systemd/system/tailscaled.service.d
printf '[Service]\nEnvironment=TS_SSH_DISABLE_FORWARDING=1\n' | \
  sudo tee /etc/systemd/system/tailscaled.service.d/50-disable-ssh-forwarding.conf
sudo systemctl daemon-reload && sudo systemctl restart tailscaled

Restarting tailscaled drops Tailscale connections for a few seconds, so don't run it over the only Tailscale session you have. If /etc/default/tailscaled sets TS_SSH_DISABLE_FORWARDING=0, remove that line, because it overrides the drop-in. Confirm the running daemon has the setting:

tr '\0' '\n' < "/proc/$(systemctl show -p MainPID --value tailscaled)/environ" | grep TS_SSH_DISABLE_FORWARDING

From an allowed device, a forward should now fail with administratively prohibited:

ssh -N -L 127.0.0.1:9000:/tmp/test.sock <user>@<host>

On a Mac with Homebrew tailscaled, the same variable goes in /etc/tailscale/tailscaled-env.txt, followed by a restart of the daemon. For containers, set it in the environment that starts tailscaled.

Step 4: tighten the tailnet

Step 5: update as soon as the fix ships

Tailscale has said it is preparing fixes. Watch the Tailscale security bulletins and install the first version listed as fixing these issues on every host running Tailscale SSH. Automatic updates help here. Keep forwarding disabled until the update is on every host, then decide whether you need it at all.

If you think a host was used

The broader lesson is about blast radius. Overlay networks make it easy to let everything reach everything, and SSH rules written as "group to tag" turn one compromised laptop into a path to every server. Reviewing who can reach what, as one source to one destination, is a good use of this week whatever the final patch looks like. Our NIS2 pre-assessment covers access control and supply-chain areas if you need to show that review to an auditor.

Questions

Should I disable Tailscale SSH completely?

Not necessarily. Tailscale is not recommending that everyone disable it. Turn it off where nobody uses it, disable forwarding with TS_SSH_DISABLE_FORWARDING=1 where you keep it, and narrow the SSH rules until a fixed version is installed.

Is there a CVE or a patched Tailscale version for Tailworm?

Not at the time of writing (27 October 2026). Tailscale confirmed the privilege-escalation issues on 26 October and is preparing fixes; check its security bulletins for the fixed version.

Can someone exploit Tailworm from the internet?

Not directly. The attacker first needs control of a device that your tailnet policy allows to connect to the target over Tailscale SSH. From there, the flaws can turn that access into root on the target.

Want a second pair of eyes on your tailnet policy?

We review who can reach what across Tailscale, VPNs and SSH, cut access down to one source and one destination, and set up the logging that shows when it's abused.

Get in touch →

Sources

This is a developing story. Check Tailscale's security bulletins for the fixed version before you re-enable forwarding.