← Back to Feed CACHED · 2026-09-17 17:05:29 · CACHE_KEY CVE-2026-77179
CVE-2026-77179 · CWE-59 · Disclosed 2026-09-15

On macOS

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

The vault door looks solid, but the hinges are made of symlinks

CVE-2026-77179 is a TOCTOU (time-of-check-to-time-of-use) symlink-following flaw in the virtio-fs host server used by Docker Sandboxes on macOS only. Docker Sandboxes (versions 0.28.0 through < 0.42.0) are microVM-backed isolation environments designed to safely run untrusted AI coding agents — Claude Code, Copilot CLI, Codex, OpenCode, Kiro, and similar tools. The virtio-fs host server validates that a file path belongs to an approved shared workspace, but when it later reopens an unlinked file from a stored path, it follows symlinks without re-validating. A malicious guest can race the host by replacing a parent directory with a symlink between the check and the use, redirecting file operations outside the workspace to arbitrary host files readable and writable by the VMM user. The CVSS 4.0 vector is CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H with a score of 9.4. A companion vulnerability, CVE-2026-79994, targets the Unix domain socket relay with an identical TOCTOU pattern and was patched in the same release.

There is no official vendor/NVD CVSS baseline to compare against — multiple third-party trackers cite 9.4, but this appears to be a CVSSv4 score without official NVD confirmation. The 9.4 figure reflects worst-case theoretical impact (full C/I/A on host and subsequent systems) but does not account for real-world deployment constraints: macOS-only, new product with ~6 months of availability, and the attacker must already be executing code *inside* the sandbox. The vulnerability is genuinely serious because it defeats the core security promise of the product — isolating untrusted code from the host. However, the population of affected deployments is far smaller than a typical Docker Engine or Docker Desktop CVE. noisgate assesses this at HIGH (7.5), not CRITICAL, primarily because the installed base is narrow and the attack surface is a developer workstation, not a production server fleet.

"Sandbox escape in Docker Sandboxes on macOS lets untrusted guest code read and write host files"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Malicious code enters sandbox

An AI coding agent (e.g., Claude Code, Codex) is instructed to clone or execute a repository containing malicious code, or an attacker poisons a dependency. The code runs inside the Docker Sandbox microVM with full guest-level privileges. This is the *designed* threat model for the product — the sandbox is supposed to contain exactly this scenario.
Conditions required:
  • Victim runs Docker Sandboxes on macOS
  • Vulnerable version 0.28.0–0.41.x is installed
  • Untrusted or compromised code is executed inside the sandbox
Where this breaks in practice:
  • Docker Sandboxes is a new product (GA March 2026) with limited enterprise adoption
  • macOS-only — excludes Linux CI runners and production servers
  • Many organizations have not yet adopted AI coding agents in sandboxed workflows
Detection/coverage: No known scanner signature. Docker Desktop version or docker sandbox version output can be checked manually.
STEP 02

Guest creates target file and triggers stored-path caching

The malicious guest code creates a file within the approved shared workspace, forcing the virtio-fs host server to record the file's path. It then unlinks the file, which causes the host to later attempt reopening from the stored path. This sets up the TOCTOU window.
Conditions required:
  • Guest has write access to the shared workspace (default)
  • virtio-fs host server stores the path for later reopen
Where this breaks in practice:
  • The exact internal API sequence and timing window are not publicly documented
  • No public PoC exists as of 2026-09-18
STEP 03

Symlink race — replace parent directory

Between the unlink and the host's reopen, the malicious guest replaces a parent directory in the stored path with a symbolic link pointing outside the workspace boundary — for example, to ~/.ssh, ~/.docker, ~/Library/Keychains, or any path readable/writable by the VMM user. The host follows the symlink without re-validating containment.
Conditions required:
  • Guest can create symlinks (standard Linux capability inside the microVM)
  • Race window is reliably hittable (TOCTOU races in filesystem ops are typically reliable with retry loops)
Where this breaks in practice:
  • Exact timing and retry strategy must be reverse-engineered from the binary
  • Host macOS SIP protections limit *some* system paths, though user-home targets remain exposed
STEP 04

Arbitrary host file read/write as VMM user

The virtio-fs host server follows the symlink and performs the file operation — read or write — on the attacker-chosen host path. The operation runs with the privileges of the VMM user (typically the logged-in macOS user). This gives the attacker access to SSH keys, cloud credentials (~/.aws, ~/.azure, ~/.kube), source code, browser cookies, and potentially code-signing material.
Conditions required:
  • VMM user has access to the targeted host files
Where this breaks in practice:
  • SIP-protected paths are off-limits
  • VMM user is not root — cannot access other users' files or system-level secrets
Detection/coverage: Endpoint detection: look for unexpected symlink creation inside Docker Sandbox workspace directories. macOS Unified Logging may capture virtio-fs file access patterns, but no vendor rule exists.
STEP 05

Supply-chain pivot or credential theft

With access to developer credentials (SSH keys, Git tokens, cloud IAM keys, code-signing certificates), the attacker can pivot to source code repositories, CI/CD pipelines, cloud infrastructure, or artifact registries. On a developer workstation this represents a potent supply-chain entry point — the attacker inherits the developer's full access footprint.
Conditions required:
  • Targeted credentials or keys exist in the VMM user's home directory
  • Developer has meaningful access to production systems or repos
Where this breaks in practice:
  • MFA on downstream services limits lateral movement
  • Short-lived tokens (e.g., OIDC-based cloud auth) reduce window of exploitation
  • Many enterprises enforce credential vaulting rather than filesystem storage
Detection/coverage: Downstream: anomalous Git pushes, cloud API calls from unexpected IPs, code-signing with developer certs outside CI.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNone observed. Not listed in CISA KEV. No reports of active exploitation as of 2026-09-18.
Proof-of-ConceptNo public PoC available. The TOCTOU race is conceptually straightforward but no exploit code has been published. The SecureWithUmer/CVE-2026-PoCs repository does not include this CVE.
EPSS Score0.0016 (0.16%) — bottom decile, reflecting no known exploitation and no public PoC.
KEV StatusNot listed in CISA KEV as of 2026-09-18.
CVSS VectorCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H9.4 (Critical per CVSSv4). Note: AV:L means the attacker must execute code inside the local microVM guest, not remotely. The "no privileges required" reflects that the guest code runs unprivileged within the VM but still triggers the host-side bug.
Affected VersionsDocker Sandboxes >= 0.28.0, < 0.42.0 on macOS only. Linux and Windows are not affected.
Fixed VersionDocker Sandboxes 0.42.0 (released 2026-09-07, eight days before public disclosure).
Related VulnerabilityCVE-2026-79994 — TOCTOU symlink race in the Unix domain socket relay (same product, same release, High severity). Both patched in 0.42.0.
Scanning / ExposureNo Shodan/Censys/GreyNoise exposure data — this is a local macOS application, not a network service. Docker Desktop telemetry is not public; Docker Sandboxes GA'd in March 2026 (~6 months of availability).
Researcher / DisclosureResearcher not publicly credited. Disclosed 2026-09-15; patch released 2026-09-07 (responsible disclosure with patch-first timeline).
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.5/10)

The single most decisive factor is that this vulnerability defeats the core isolation boundary of a product whose entire purpose is containing untrusted code — a sandbox escape where the threat model *is* the attacker running inside the sandbox. However, the affected component is a new macOS-only developer tool (~6 months old) with a narrow installed base, which prevents the floor from reaching CRITICAL.

HIGH Vulnerability mechanism and affected version range
MEDIUM Real-world installed base size of Docker Sandboxes
LOW Exploitability without a public PoC or documented race-window timing

Why this verdict

  • Sandbox escape defeats core security promise: The product exists to isolate untrusted AI-agent code from the host. This CVE breaks that contract entirely — the attacker scenario (malicious code in the sandbox) is *exactly* the threat model the product is supposed to handle. A sandbox escape in an isolation product is categorically more severe than a similar bug in general-purpose software.
  • Role multiplier — developer workstation as supply-chain pivot: Docker Sandboxes run on developer macOS machines. A successful escape yields the developer's SSH keys, Git tokens, cloud credentials, and potentially code-signing material. In organizations using AI coding agents, these are senior developers with broad repo access. The blast radius extends from host → developer identity → source repos → CI/CD → production. This is a supply-chain-class outcome, but it requires a human-in-the-loop (the developer must run untrusted code) and the downstream pivot depends on credential hygiene. The floor for supply-chain-class outcomes in a product *designed for this role* is HIGH.
  • Narrow installed base caps severity below CRITICAL: Docker Sandboxes GA'd in March 2026 and is macOS-only. Even with Docker's 92% developer adoption, Sandboxes is an opt-in feature for AI agent workflows — a small fraction of Docker Desktop users. The population of vulnerable hosts in a typical 10,000-host enterprise is likely in the single digits to low dozens. This is not a fleet-scale exposure.
  • No PoC, no exploitation, low EPSS: With an EPSS of 0.0016 and no public exploit code, the near-term weaponization risk is low. The TOCTOU race is conceptually simple but requires reverse-engineering the virtio-fs stored-path mechanism. Exploitation complexity is moderate in practice despite CVSS rating it as low.
  • macOS-only eliminates server and CI/CD tiers: Linux CI runners, Kubernetes nodes, and production servers are unaffected. The entire exposure surface is macOS developer laptops — a population that typically has stronger endpoint security (EDR, MDM, disk encryption) than average.

Why not higher?

CRITICAL would require either a larger installed base or a canonical high-value role. Docker Sandboxes is a 6-month-old opt-in macOS feature, not a ubiquitous infrastructure component like Docker Engine or containerd. The supply-chain pivot requires multiple additional steps (credential presence, downstream access, no MFA), and the affected population in any enterprise is small. There is no active exploitation, no PoC, and the EPSS is in the bottom decile.

Why not lower?

MEDIUM would undercount the severity of a sandbox escape in an isolation product running untrusted code — this is the *exact failure mode* the product is designed to prevent. The impact on a compromised host is full file read/write as the developer user, which in practice means credential theft and supply-chain access. The TOCTOU race pattern is well-understood and reliably exploitable with retry loops. The patch-first disclosure timeline suggests the vendor considered this serious enough to warrant expedited fixing.

05 · Compensating Control

What to do — in priority order.

  1. Update Docker Sandboxes to 0.42.0 immediately — The patch was released 2026-09-07, eleven days ago. This is the definitive fix. Push the update via MDM (Jamf, Kandji, Mosyle) or internal update channels. Under the noisgate mitigation SLA for HIGH, deploy within 30 days — but given this is a single binary update, aim for this week.
  2. Audit and restrict AI agent code sources — Until patched, limit Docker Sandboxes to trusted, vetted repositories only. Block agents from cloning arbitrary public repos or executing unreviewed code. This reduces the likelihood of malicious code entering the sandbox.
  3. Revoke and rotate developer credentials stored on disk — SSH keys, Git tokens, cloud credentials (~/.aws, ~/.kube, ~/.azure), and API keys stored in the home directory are the primary exfiltration targets. Rotate these for any developer who ran vulnerable versions with untrusted code. Move to short-lived OIDC-based credentials where possible.
  4. Enable macOS endpoint detection on sandbox workspace directories — Configure EDR (CrowdStrike, SentinelOne, Microsoft Defender for Endpoint) to alert on symlink creation within Docker Sandbox workspace paths. This provides post-exploitation detection while patching rolls out.
  5. Disable Docker Sandboxes on unpatched hosts — If rapid patching is not feasible, disable the Sandboxes feature entirely via MDM configuration profile or Docker Desktop settings. Developers can use standard Docker containers (which have a different, non-virtio-fs isolation model) as a temporary alternative.
What doesn't work
  • macOS Gatekeeper / notarization — does not help. The malicious code runs inside the microVM, not as a macOS application. Gatekeeper only gates app launch, not in-VM execution.
  • Network-level controls (firewall, proxy) — the vulnerability is a local filesystem race condition, not a network attack. Blocking network access to/from the sandbox does not prevent the symlink race.
  • Docker content trust / image signing — Docker Sandboxes run arbitrary code from repos, not just container images. Image signing does not cover the AI agent's cloned repository contents.
06 · Verification

Crowdsourced verification payload.

Run this on each macOS developer workstation where Docker Desktop with Sandboxes may be installed. Execute as the logged-in user (no root required). Example: bash check_cve_2026_77179.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_77179.sh — Detect CVE-2026-77179 (Docker Sandboxes virtio-fs symlink escape)
# Target: macOS hosts with Docker Desktop / Docker Sandboxes
# Privileges: none (runs as current user)
# Output: VULNERABLE / PATCHED / UNKNOWN

set -euo pipefail

# Only relevant on macOS
if [[ "$(uname -s)" != "Darwin" ]]; then
  echo "NOT_APPLICABLE — this CVE only affects macOS"
  exit 0
fi

# Check if docker CLI exists
if ! command -v docker &>/dev/null; then
  echo "UNKNOWN — docker CLI not found on this host"
  exit 1
fi

# Check if docker sandbox subcommand exists
if ! docker sandbox version &>/dev/null 2>&1; then
  # Try alternate detection via Docker Desktop app bundle
  if [[ -d "/Applications/Docker.app" ]]; then
    echo "UNKNOWN — Docker Desktop installed but 'docker sandbox' command not available (Sandboxes may not be enabled)"
    exit 1
  else
    echo "NOT_APPLICABLE — Docker Sandboxes not installed"
    exit 0
  fi
fi

# Get sandbox version
SANDBOX_VERSION=$(docker sandbox version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)

if [[ -z "${SANDBOX_VERSION}" ]]; then
  echo "UNKNOWN — could not parse Docker Sandboxes version"
  exit 1
fi

echo "Detected Docker Sandboxes version: ${SANDBOX_VERSION}"

# Compare versions: vulnerable range is >= 0.28.0 and < 0.42.0
# Simple numeric comparison using sort -V
MIN_VULN="0.28.0"
FIXED="0.42.0"

version_gte() {
  # Returns 0 if $1 >= $2
  [[ "$(printf '%s\n%s' "$2" "$1" | sort -V | head -1)" == "$2" ]]
}

if version_gte "${SANDBOX_VERSION}" "${FIXED}"; then
  echo "PATCHED — Docker Sandboxes ${SANDBOX_VERSION} >= ${FIXED}"
  exit 0
elif version_gte "${SANDBOX_VERSION}" "${MIN_VULN}"; then
  echo "VULNERABLE — Docker Sandboxes ${SANDBOX_VERSION} is in affected range (${MIN_VULN} to <${FIXED})"
  echo "Action: Update to Docker Sandboxes >= ${FIXED}"
  exit 2
else
  echo "PATCHED — Docker Sandboxes ${SANDBOX_VERSION} < ${MIN_VULN} (pre-dates vulnerable code)"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Update Docker Sandboxes to 0.42.0 on all macOS developer workstations this week. The patch has been available since September 7 — use your MDM tooling (Jamf, Kandji, etc.) to push Docker Desktop updates or instruct developers to run docker sandbox update. Under the noisgate mitigation SLA for HIGH, compensating controls (disabling Sandboxes on unpatched hosts, restricting agent code sources) must be in place within 30 days; under the noisgate remediation SLA, the vendor patch must be deployed within 180 days. Given that this is a simple version bump with no breaking changes, there is no reason not to close this within the first week. If any developers ran untrusted AI-agent code on vulnerable versions, rotate their SSH keys, Git tokens, and cloud credentials as a precaution. No active exploitation is known, but the TOCTOU pattern is well-understood and a PoC could appear at any time.

Sources

  1. CyberSecurityNews — Critical Docker Sandbox Vulnerabilities
  2. GBHackers — Docker Sandboxes Vulnerabilities Let Malicious Guests Escape
  3. SecurityOnline — Docker Sandboxes Vulnerabilities Patched
  4. Strix.ai — CVE-2026-77179 Detail
  5. Docker — Why MicroVMs: Architecture Behind Docker Sandboxes
  6. Docker — Sandboxes Product Page
  7. OffSeq Threat Radar — CVE-2026-77179
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.