TS-2026-010

Vulnerability from tailscale - Published: Fri, 24 Jul 2026 00:00:00 GMT

Description: Tailscale SSH exposed accepted environment variable values on the command line of a local process, disclosing them to other local users and to logs.

What happened?

Tailscale SSH allows the configured acceptEnv environment variables to be forwarded from an SSH client to the process launched on the host. Previously, these accepted variables were JSON-encoded and passed to a child process via an --encoded-env command line flag.

As a result, the names and values of the forwarded environment variables were visible in /proc/<pid>/cmdline to any other local user on the host for the duration of process startup. They were also recorded in the session-start arguments that Tailscale logs locally and, unless the node was configured with --no-logs-no-support, to log.tailscale.com. Environment variables commonly carry secrets such as tokens or credentials, which could therefore be disclosed to unintended parties.

Tailscale SSH now passes accepted environment variables to the child process through an inherited file descriptor rather than on the command line and keeps their values out of session logs.

This vulnerability is fixed in Tailscale version 1.102.1 or newer.

What was the impact?

Secrets carried in forwarded environment variables could be disclosed to other local users on the host via /proc, and were written to session logs both locally and to log.tailscale.com.

Who was affected?

Users of Tailscale SSH who forward environment variables via acceptEnv, particularly on shared hosts with other local users.

What do I need to do?

If you use Tailscale SSH with acceptEnv, upgrade to Tailscale version 1.102.1 or newer. If you use acceptEnv to pass credentials, revoke and rotate any impacted credentials.

Credits

We would like to thank Dante Bertana for reporting this issue.

Show details on source website

{
  "guidislink": false,
  "id": "https://tailscale.com/security-bulletins/#ts-2026-010",
  "link": "https://tailscale.com/security-bulletins/#ts-2026-010",
  "links": [
    {
      "href": "https://tailscale.com/security-bulletins/#ts-2026-010",
      "rel": "alternate",
      "type": "text/html"
    }
  ],
  "published": "Fri, 24 Jul 2026 00:00:00 GMT",
  "summary": "\u003cp\u003e\u003cstrong\u003e\u003cem\u003eDescription\u003c/em\u003e\u003c/strong\u003e: Tailscale SSH exposed accepted environment variable values on the command line of a local process, disclosing them to other local users and to logs.\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 allows the configured \u003ccode\u003eacceptEnv\u003c/code\u003e environment variables to be forwarded from an SSH client to the process launched on the host. Previously, these accepted variables were JSON-encoded and passed to a child process via an \u003ccode\u003e--encoded-env\u003c/code\u003e command line flag.\u003c/p\u003e\n\u003cp\u003eAs a result, the names and values of the forwarded environment variables were visible in \u003ccode\u003e/proc/\u0026#x3c;pid\u003e/cmdline\u003c/code\u003e to any other local user on the host for the duration of process startup. They were also recorded in the session-start arguments that Tailscale logs locally and, unless the node was configured with \u003ccode\u003e--no-logs-no-support\u003c/code\u003e, to \u003ccode\u003elog.tailscale.com\u003c/code\u003e. Environment variables commonly carry secrets such as tokens or credentials, which could therefore be disclosed to unintended parties.\u003c/p\u003e\n\u003cp\u003eTailscale SSH now passes accepted environment variables to the child process through an inherited file descriptor rather than on the command line and keeps their values out of session logs.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is fixed in Tailscale version 1.102.1 or newer.\u003c/p\u003e\n\u003ch4\u003eWhat was the impact?\u003c/h4\u003e\n\u003cp\u003eSecrets carried in forwarded environment variables could be disclosed to other local users on the host via \u003ccode\u003e/proc\u003c/code\u003e, and were written to session logs both locally and to \u003ccode\u003elog.tailscale.com\u003c/code\u003e.\u003c/p\u003e\n\u003ch4\u003eWho was affected?\u003c/h4\u003e\n\u003cp\u003eUsers of Tailscale SSH who forward environment variables via \u003ccode\u003eacceptEnv\u003c/code\u003e, particularly on shared hosts with other local users.\u003c/p\u003e\n\u003ch4\u003eWhat do I need to do?\u003c/h4\u003e\n\u003cp\u003eIf you use Tailscale SSH with \u003ccode\u003eacceptEnv\u003c/code\u003e, upgrade to Tailscale version 1.102.1 or newer. If you use \u003ccode\u003eacceptEnv\u003c/code\u003e to pass credentials, revoke and rotate any impacted credentials.\u003c/p\u003e\n\u003ch4\u003eCredits\u003c/h4\u003e\n\u003cp\u003eWe would like to thank Dante Bertana 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: Tailscale SSH exposed accepted environment variable values on the command line of a local process, disclosing them to other local users and to logs.\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 allows the configured \u003ccode\u003eacceptEnv\u003c/code\u003e environment variables to be forwarded from an SSH client to the process launched on the host. Previously, these accepted variables were JSON-encoded and passed to a child process via an \u003ccode\u003e--encoded-env\u003c/code\u003e command line flag.\u003c/p\u003e\n\u003cp\u003eAs a result, the names and values of the forwarded environment variables were visible in \u003ccode\u003e/proc/\u0026#x3c;pid\u003e/cmdline\u003c/code\u003e to any other local user on the host for the duration of process startup. They were also recorded in the session-start arguments that Tailscale logs locally and, unless the node was configured with \u003ccode\u003e--no-logs-no-support\u003c/code\u003e, to \u003ccode\u003elog.tailscale.com\u003c/code\u003e. Environment variables commonly carry secrets such as tokens or credentials, which could therefore be disclosed to unintended parties.\u003c/p\u003e\n\u003cp\u003eTailscale SSH now passes accepted environment variables to the child process through an inherited file descriptor rather than on the command line and keeps their values out of session logs.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is fixed in Tailscale version 1.102.1 or newer.\u003c/p\u003e\n\u003ch4\u003eWhat was the impact?\u003c/h4\u003e\n\u003cp\u003eSecrets carried in forwarded environment variables could be disclosed to other local users on the host via \u003ccode\u003e/proc\u003c/code\u003e, and were written to session logs both locally and to \u003ccode\u003elog.tailscale.com\u003c/code\u003e.\u003c/p\u003e\n\u003ch4\u003eWho was affected?\u003c/h4\u003e\n\u003cp\u003eUsers of Tailscale SSH who forward environment variables via \u003ccode\u003eacceptEnv\u003c/code\u003e, particularly on shared hosts with other local users.\u003c/p\u003e\n\u003ch4\u003eWhat do I need to do?\u003c/h4\u003e\n\u003cp\u003eIf you use Tailscale SSH with \u003ccode\u003eacceptEnv\u003c/code\u003e, upgrade to Tailscale version 1.102.1 or newer. If you use \u003ccode\u003eacceptEnv\u003c/code\u003e to pass credentials, revoke and rotate any impacted credentials.\u003c/p\u003e\n\u003ch4\u003eCredits\u003c/h4\u003e\n\u003cp\u003eWe would like to thank Dante Bertana for reporting this issue.\u003c/p\u003e"
  },
  "title": "TS-2026-010",
  "title_detail": {
    "base": "https://tailscale.com/security-bulletins/index.xml",
    "language": null,
    "type": "text/plain",
    "value": "TS-2026-010"
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…