TS-2026-009
Vulnerability from tailscale - Published: Mon, 13 Jul 2026 00:00:00 GMT
Description: Insecure command line argument handling in Tailscale SSH permitted root user access in violation of ACLs.
What happened?
Tailscale SSH previously accepted usernames that contained a leading - character. On Linux platforms these usernames were passed as arguments to getent(1) to retrieve the corresponding passwd entry, where they were interpreted as flags permitting attacker-controlled behavior. Specifically, if a user connected with the username -i this would have been interpreted as --no-idn and getent would have printed the entire passwd file contents starting with the root user, causing Tailscale to open an interactive root session.
Tailscale SSH now rejects usernames with leading dashes.
This vulnerability is fixed in Tailscale version 1.98.9 or newer.
What was the impact?
A user with SSH access to a Linux node would have been able to obtain a root session by connecting with the username -i, in violation of ACL policy.
Who was affected?
Users of Tailscale SSH on Linux hosts that rely on autogroup:nonroot user restrictions in Tailscale ACLs.
What do I need to do?
If you use Tailscale SSH, upgrade to Tailscale version 1.98.9 or newer.
Credits
We would like to thank Anthropic and Ada Logics for reporting this issue.
Show details on source website{
"guidislink": false,
"id": "https://tailscale.com/security-bulletins/#ts-2026-009",
"link": "https://tailscale.com/security-bulletins/#ts-2026-009",
"links": [
{
"href": "https://tailscale.com/security-bulletins/#ts-2026-009",
"rel": "alternate",
"type": "text/html"
}
],
"published": "Mon, 13 Jul 2026 00:00:00 GMT",
"summary": "\u003cp\u003e\u003cstrong\u003e\u003cem\u003eDescription\u003c/em\u003e\u003c/strong\u003e: Insecure command line argument handling in Tailscale SSH permitted \u003ccode\u003eroot\u003c/code\u003e user access in violation of ACLs.\u003c/p\u003e\n\u003ch4\u003eWhat happened?\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://tailscale.com/docs/features/tailscale-ssh\"\u003eTailscale SSH\u003c/a\u003e previously accepted usernames that contained a leading \u003ccode\u003e-\u003c/code\u003e character. On Linux platforms these usernames were passed as arguments to \u003ccode\u003egetent(1)\u003c/code\u003e to retrieve the corresponding \u003ccode\u003epasswd\u003c/code\u003e entry, where they were interpreted as flags permitting attacker-controlled behavior. Specifically, if a user connected with the username \u003ccode\u003e-i\u003c/code\u003e this would have been interpreted as \u003ccode\u003e--no-idn\u003c/code\u003e and \u003ccode\u003egetent\u003c/code\u003e would have printed the entire \u003ccode\u003epasswd\u003c/code\u003e file contents starting with the \u003ccode\u003eroot\u003c/code\u003e user, causing Tailscale to open an interactive \u003ccode\u003eroot\u003c/code\u003e session.\u003c/p\u003e\n\u003cp\u003eTailscale SSH now rejects usernames with leading dashes.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is fixed in Tailscale version 1.98.9 or newer.\u003c/p\u003e\n\u003ch4\u003eWhat was the impact?\u003c/h4\u003e\n\u003cp\u003eA user with SSH access to a Linux node would have been able to obtain a \u003ccode\u003eroot\u003c/code\u003e session by connecting with the username \u003ccode\u003e-i\u003c/code\u003e, in violation of ACL policy.\u003c/p\u003e\n\u003ch4\u003eWho was affected?\u003c/h4\u003e\n\u003cp\u003eUsers of Tailscale SSH on Linux hosts that rely on \u003ccode\u003eautogroup:nonroot\u003c/code\u003e user restrictions in Tailscale ACLs.\u003c/p\u003e\n\u003ch4\u003eWhat do I need to do?\u003c/h4\u003e\n\u003cp\u003eIf you use Tailscale SSH, upgrade to Tailscale version 1.98.9 or newer.\u003c/p\u003e\n\u003ch4\u003eCredits\u003c/h4\u003e\n\u003cp\u003eWe would like to thank Anthropic and Ada Logics for reporting this issue.\u003c/p\u003e",
"summary_detail": {
"base": "https://tailscale.com/security-bulletins/index.xml",
"language": null,
"type": "text/html",
"value": "\u003cp\u003e\u003cstrong\u003e\u003cem\u003eDescription\u003c/em\u003e\u003c/strong\u003e: Insecure command line argument handling in Tailscale SSH permitted \u003ccode\u003eroot\u003c/code\u003e user access in violation of ACLs.\u003c/p\u003e\n\u003ch4\u003eWhat happened?\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://tailscale.com/docs/features/tailscale-ssh\"\u003eTailscale SSH\u003c/a\u003e previously accepted usernames that contained a leading \u003ccode\u003e-\u003c/code\u003e character. On Linux platforms these usernames were passed as arguments to \u003ccode\u003egetent(1)\u003c/code\u003e to retrieve the corresponding \u003ccode\u003epasswd\u003c/code\u003e entry, where they were interpreted as flags permitting attacker-controlled behavior. Specifically, if a user connected with the username \u003ccode\u003e-i\u003c/code\u003e this would have been interpreted as \u003ccode\u003e--no-idn\u003c/code\u003e and \u003ccode\u003egetent\u003c/code\u003e would have printed the entire \u003ccode\u003epasswd\u003c/code\u003e file contents starting with the \u003ccode\u003eroot\u003c/code\u003e user, causing Tailscale to open an interactive \u003ccode\u003eroot\u003c/code\u003e session.\u003c/p\u003e\n\u003cp\u003eTailscale SSH now rejects usernames with leading dashes.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is fixed in Tailscale version 1.98.9 or newer.\u003c/p\u003e\n\u003ch4\u003eWhat was the impact?\u003c/h4\u003e\n\u003cp\u003eA user with SSH access to a Linux node would have been able to obtain a \u003ccode\u003eroot\u003c/code\u003e session by connecting with the username \u003ccode\u003e-i\u003c/code\u003e, in violation of ACL policy.\u003c/p\u003e\n\u003ch4\u003eWho was affected?\u003c/h4\u003e\n\u003cp\u003eUsers of Tailscale SSH on Linux hosts that rely on \u003ccode\u003eautogroup:nonroot\u003c/code\u003e user restrictions in Tailscale ACLs.\u003c/p\u003e\n\u003ch4\u003eWhat do I need to do?\u003c/h4\u003e\n\u003cp\u003eIf you use Tailscale SSH, upgrade to Tailscale version 1.98.9 or newer.\u003c/p\u003e\n\u003ch4\u003eCredits\u003c/h4\u003e\n\u003cp\u003eWe would like to thank Anthropic and Ada Logics for reporting this issue.\u003c/p\u003e"
},
"title": "TS-2026-009",
"title_detail": {
"base": "https://tailscale.com/security-bulletins/index.xml",
"language": null,
"type": "text/plain",
"value": "TS-2026-009"
}
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.