ts-2026-009
Vulnerability from tailscale
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 |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.