Security News

Is Tailscale Safe? Six Checks to Run on Your Own Tailnet Today

Is Tailscale safe? A balanced answer plus a six-step audit of your own tailnet: SSH rules, serve, Funnel, app connectors, key expiry and headscale.

Brandefense logo 8 Min Read
Security checklist on a glass panel with glowing red checkmarks.

Whether Tailscale is safe for you depends on which optional features you switched on. The Tailworm report, made public in late October 2026, makes this the week to check. Our news post on the Tailworm report and what Tailscale has said so far holds the story. This post is the checklist.

Last checked: 26 October 2026. We update this page when Tailscale publishes a bulletin or a fix.

Every command and policy snippet below comes from Tailscale’s own documentation, the headscale documentation or the report’s mitigation section. Where the documentation does not cover something, we say so instead of guessing.

What Does the Evidence on Tailscale Security Say?

Researcher Erica Windisch of Cyberdione Labs published 11 findings in Tailscale and headscale. She tested tailscale 1.104.2 and headscale 0.29.5 in a lab. Tailscale has not confirmed the findings, and as of 26 October 2026 its security bulletins list nothing for them.

Tailscale’s public code repository does show movement. Between 23 and 26 October it received three changes in the areas the report covers.

None is in a release, and Tailscale has not linked them to the report. A merged commit is not a shipped fix.

The honest answer in four questions
QuestionWhat the evidence showsStatus on 26 Oct 2026
Are the findings real?The report gives lab results on unmodified releasesNot confirmed by Tailscale
Is there a fix?Three commits in the areas the report covers sit in the public repositoryNone in a release or bulletin
Can it be used from the internet?The SSH chain starts from one approved device that is already hacked; the headscale finding needs only internet reach to the serverSSH: not without a foothold. Self-hosted headscale: yes, for denial of service
Is my default install affected?SSH needs a per-device opt in and Funnel is off by defaultMostly only if you turned the features on; the relay-client finding applies to every agent but needs a hostile relay

The SSH chain starts with a foothold, not with a break in from outside. The report says an attacker who holds one device can spread to every device your policy allows, which is lateral movement inside the tailnet. The headscale finding is different, because the report says it needs only network access to the control server.

What stays true: both areas had fixes before. Bulletins TS-2026-004 (SSH) and TS-2026-005 (Serve), both dated 3 June 2026, covered earlier Unix socket flaws in these areas and name version 1.98.9 as the fix. Tailscale’s changelog lists the Serve fix in 1.98.9 (14 July 2026) and the SSH fix in 1.98.10 (28 July 2026). Your exposure depends on your configuration, so the audit starts there.

1. Find Out Which Features Are On

We go from the most powerful feature, SSH, to the rarest. Run these on each server and workstation that runs Tailscale. The CLI reference says tailscale get shows the settings that tailscale set changes, under the same flag names.

tailscale version
tailscale get ssh
tailscale get advertise-connector
tailscale serve status
tailscale funnel status

A bad result is any device where SSH or the connector role is on without a reason. Another is any server that serve status lists and you do not recognise.

Treat anything that funnel status lists as a risk, because Funnel makes a port public. Give each one a named owner. Write the results down. This list is your attack surface inside the tailnet.

2. Read Your SSH Rules for Risky Patterns

Open the access controls page of the admin console and find the ssh section. The Tailscale SSH documentation lists the broadest allowed rule. If yours looks like this, it is the pattern to remove:

{
  "action": "accept",
  "src": ["autogroup:member"],
  "dst": ["tag:prod"],
  "users": ["root", "autogroup:nonroot"]
}

The report advises per-pair rules, from one named source to one named destination, and no privileged target accounts. Here is a narrow rule built from the documented fields:

{
  "action": "check",
  "checkPeriod": "1h",
  "src": ["[email protected]"],
  "dst": ["tag:prod"],
  "users": ["ubuntu"]
}

Two warnings from the documentation. If you change dst from autogroup:self to a tag, replace autogroup:nonroot too, or anyone in src can sign in as any non-root user. A new tailnet’s default rule lets people reach their own devices in check mode.

The report also says check mode does not limit forwarding inside a session that was already approved. It points to per-rule forwarding flags on Tailscale’s service. Tailscale’s SSH documentation and policy file reference do not name those fields, so this post leaves them out. Watch the bulletins page for guidance.

Lock the rules in with the documented sshTests section. Tailscale rejects a policy change that breaks a test.

"sshTests": [
  {
    "src": "[email protected]",
    "dst": ["example-host-1"],
    "accept": ["dave"],
    "check": ["admin"],
    "deny": ["root"]
  }
]

To switch SSH off on a device that does not need it, run tailscale set --ssh=false. The documentation warns that you may lose access, so confirm another way in first.

3. Check Serve, Funnel and the Operator

The Tailscale documentation says tailscale serve status lists the servers running on the device. The report asks you to look for TCP forwards that point at Unix sockets, written as serve --tcp <port> unix:<path>. Remove any that target the Tailscale agent’s own socket or a privileged path. Bulletin TS-2026-005 uses /var/run/docker.sock as its example.

To clear the configuration, the serve reference gives tailscale serve reset, and the funnel equivalent is tailscale funnel reset. Also run tailscale get operator. The bulletin says a non-root operator could write serve configuration.

For Funnel, the documentation says a funnel node attribute decides who may use it. By default it covers every member:

"nodeAttrs": [
  {
    "target": ["autogroup:member"],
    "attr":   ["funnel"],
  },
],

Narrow the target to the people who need it. The report says the funnel attribute is enforced only by the command-line tool (finding 9), so also check funnel status on each node. Finally, check that the environment variable TS_SERVE_ALLOW_ALL_INTERFACES is not set. The report says it exposes serve listeners outside the tunnel.

4. Review App Connectors

List your app connectors in the admin console, and check each device with tailscale get advertise-connector. The app connector documentation says additions and removals appear in the configuration audit logs. The report rates the experimental connector class High.

Two actions follow from the report. Remove the connector capability from devices that do not need it, and enforce a destination allowlist on the connector host. In Kubernetes, use a default-deny egress policy for the connector namespace. A bad result is a connector host that can still reach cloud metadata or internal ranges you never meant to expose.

5. Give Identities a Clock, and Harden headscale

The key expiry documentation says new domains default to 180 days, but tagged devices start with expiry disabled. Servers are usually tagged, so they often never expire. The report asks for expiry on server fleets. Plan the sign-in, because an expired app connector stops carrying traffic.

Next, run tailscale lock status on each node. The Tailnet Lock documentation says every node should report the same signing keys.

The report says tailnets without the lock accepted a rogue node enrolled with a stolen key. Enabling it creates disablement secrets. If you lose them and gave none to Tailscale support, the tailnet cannot be recovered.

If you run headscale, update to 0.29.6 and follow the upgrade guide: back up the database first. The notes do not mention the report.

They do carry security updates for a compromised certificate chain and for HTTP/2 denial of service in dependencies. The report says headscale 0.29.5 grants forwarding on every accepted SSH session, so treat each headscale SSH rule as root-equivalent. Set a systemd MemoryMax, supervise restarts, put a rate-limiting proxy in front and keep the server off the open internet.

6. Decide What to Monitor

You cannot patch what is not released, so watch for abuse. The checklist below is the minimum.

Weekly tailnet review
  • Policy changesRead the configuration audit log, which keeps 90 days and shows a full diff of each policy change.
  • New nodes and connectorsLook for unknown devices and for connectors added or removed.
  • Sign-in promptsTreat a Tailscale sign-in prompt nobody asked for as an incident.
  • Serve and funnelSave the status output each week and compare it.
  • Logs off the boxKeep security logs where a hacked server cannot reach them.

If a device may be compromised, delete it in the admin console. The report says reimaging does not revoke copied keys. Rotate any auth keys that device could reach. Then run tailscale version --upstream after each Tailscale release, and fold the result into your vulnerability management routine.

Frequently Asked Questions.

Is Tailscale safe to use?

It depends on your setup. The Tailworm findings are lab results that Tailscale has not confirmed, and the main chain needs an attacker who already controls one approved device. Check which optional features you run and follow the audit above.

Do I need to turn off Tailscale SSH?

Only on devices that do not need it. Tailscale documents the command tailscale set --ssh=false and warns to confirm another way into the device first. Narrower per-pair SSH rules are the other option.

How do I check if Tailscale SSH is on?

On the device, run tailscale get ssh. The CLI reference says tailscale get shows the settings that tailscale set changes, under the same flag names, and the SSH setting is the --ssh flag.

Does Tailnet Lock stop these findings?

It covers new devices joining your tailnet, which the report says an attacker could abuse without it. It does not change how SSH forwarding, serve or app connectors behave.

Sources

  1. 1 Tailworm report by Erica Windisch, Cyberdione Labs
  2. 2 Tailscale security bulletins
  3. 3 Tailscale SSH documentation
  4. 4 Tailscale CLI reference
  5. 5 Tailscale Funnel documentation
  6. 6 Tailscale app connectors documentation
  7. 7 Tailnet Lock documentation
  8. 8 headscale 0.29.6 release notes
Share