Skip to main content
Vulnerability Database/CVE-2026-94445

CVE-2026-94445: Go Playground RCE Vulnerability

CVE-2026-94445 is a remote code execution flaw in Go Playground that allows attackers to escape execution context and execute arbitrary code on the host. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-94445 Overview

CVE-2026-94445 affects the Go playground (golang.org/x/playground), a self-hostable sandbox for running Go code snippets. The vulnerability combines two distinct flaws: a malicious txtar archive can escape the intended execution context and force arbitrary writes onto the playground host's trusted filesystem, and one of three code paths that invoke go vet fails to restrict the execution environment. Chained together, a crafted go env configuration file and a go vet invocation enable remote code execution on the playground host. The hosted service at go.dev/play is not affected, but any independent deployment of golang.org/x/playground is.

Critical Impact

Unauthenticated attackers can achieve remote code execution on self-hosted Go playground instances by combining arbitrary file write with a misconfigured go vet execution path.

Affected Products

  • golang.org/x/playground self-hosted deployments
  • Instances exposing the playground HTTP interface to untrusted users
  • Downstream distributions that embed the playground code

Discovery Timeline

  • 2026-09-25 - CVE-2026-94445 published to NVD
  • 2026-09-29 - Last updated in NVD database

Technical Details for CVE-2026-94445

Vulnerability Analysis

The flaw is an input validation weakness ([CWE-20]) in the playground's handling of user-submitted code bundles. The playground accepts multi-file submissions encoded as txtar archives, which the server extracts into a working directory before compilation. A malicious archive can specify file paths that traverse outside the intended sandbox directory, writing attacker-controlled content to arbitrary locations on the host filesystem the playground process can access.

Separately, the playground supports three distinct code paths to invoke go vet on submitted code. One of those paths does not fully isolate the invoked Go toolchain. The toolchain honors a go env configuration file rooted at $HOME, allowing the vetted process to read attacker-influenced environment settings.

When combined, the attacker writes a crafted go env file into the playground user's $HOME using the txtar escape, then triggers the unrestricted go vet path. The toolchain loads the planted configuration, which can redirect toolchain components or inject commands that execute in the context of the playground service.

Root Cause

The root cause is twofold: insufficient path sanitization when extracting txtar archives, and inconsistent environment isolation across the three go vet invocation paths. The sandbox contract assumes extracted files remain inside a scratch directory and that the Go toolchain runs with a controlled environment, but neither invariant is enforced on the vulnerable path.

Attack Vector

Exploitation requires network access to the playground endpoint and a user action to submit the crafted payload, though in deployments that auto-execute submitted code the user interaction requirement is trivially satisfied. The attacker submits a txtar bundle that drops a malicious go env file into $HOME, then submits a follow-up request that routes execution through the unrestricted go vet code path. See the Go Development Change Log and the Go Development Issue Report for the upstream fix and technical discussion.

Stop Remote Code Execution Before It Runs

Singularity™ Endpoint detects and blocks exploit attempts at machine speed, including zero-days and novel attack techniques.

Stop Exploit Attempts

Detection Methods for CVE-2026-94445

Indicators of Compromise

  • Unexpected files written outside the playground's scratch or temporary directory, particularly within $HOME of the service account
  • Presence of a go env configuration file (typically ~/.config/go/env) that was not deployed by administrators
  • go vet invocations spawning child processes unrelated to Go toolchain binaries
  • Outbound network connections from the playground host to attacker-controlled infrastructure

Detection Strategies

  • Monitor filesystem writes by the playground process to paths outside the designated sandbox root
  • Alert on modifications to ~/.config/go/env or any file under the service account's $HOME
  • Compare process ancestry of go vet invocations against an allow-list of expected toolchain binaries

Monitoring Recommendations

  • Enable audit logging for the playground service account and forward events to a centralized log store
  • Track HTTP request bodies that contain txtar headers (-- filename --) with paths including .. traversal sequences
  • Baseline normal child-process trees for the playground service and alert on deviations

How to Mitigate CVE-2026-94445

Immediate Actions Required

  • Update golang.org/x/playground to the patched revision referenced in Go change list CL 838485
  • Audit the playground host's filesystem for unauthorized files, especially under $HOME and ~/.config/go/
  • Rotate any credentials, API keys, or signing material accessible to the playground service account

Patch Information

The upstream fix is tracked in Go issue 81737 with the code change in Gerrit CL 838485. Operators of self-hosted playground deployments should pull the latest golang.org/x/playground sources, rebuild the service container, and redeploy. The hosted go.dev/play service does not require operator action.

Workarounds

  • Run the playground inside a restrictive container or microVM that treats $HOME as ephemeral and read-only where feasible
  • Set GOENV=/dev/null or point GOENV at an immutable, administrator-owned file to neutralize planted go env configurations
  • Restrict network access from the playground host so that successful code execution cannot reach internal services or the internet
  • Require authentication in front of the playground endpoint to limit exposure to trusted users

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.