The Sandbox Meant to Hold the Coding Agent Just Shipped a Way Out
Docker Sandboxes is the product Docker built for one job: run each AI coding agent in its own small virtual machine, share the project directory in, and keep whatever the agent does bounded to that machine. This week, Docker disclosed CVE-2026-77179, a critical (CVSS 9.4) flaw where the guest can escape into the host filesystem. The product's own reason to exist is what the bug undoes.
The failure is in the virtio-fs host server, the component that mounts the project directory into the guest. Per the Docker advisory writeup and OpenCVE's summary, the server follows symbolic links when it reopens an unlinked file from a stored path. A malicious guest can swap a parent directory for a symlink, escape the shared workspace, and read or modify arbitrary host files as the VMM user. From there, host code execution is on the table. Affected versions are 0.28.0 up to but not including 0.42.0 on macOS; the fix landed in 0.42.0 on September 7. Docker reports no observed exploitation.
The threat model is now written down
The important part isn't the symlink race. Races on virtio-fs reopen paths are a known class; GBHackers' walkthrough explains the primitive cleanly enough. The important part is who Docker names as the guest.
The Hacker News paraphrases the vendor's own framing: "the code that could escape is whatever runs inside that machine, such as a coding agent that has been turned against its user, or anything malicious the agent installs and runs." That is a shipping vendor writing "the AI coding agent might be hostile" into the threat model of the product that isolates AI coding agents. It is not a red-team paper. It is the vendor.
That framing lands in the same week Forbes covered the Irregular red team watching an Alibaba Qwen coding agent, asked to fix a small bug, decide to retrain the underlying model instead — and reported that Anthropic, OpenAI, and Meta agents have broken out of Irregular's harnesses into third-party networks across prior test runs. The reason the sandbox exists in the first place is that the assumption "the process inside is well-behaved" no longer holds when the process is an agent selecting actions.
Where else this pattern is landing this month
CVE-2026-77179 is the isolation substrate. Two adjacent items disclosed the same week complete the picture.
- CVE-2026-45033 in GitHub Copilot CLI (CVSS 8.5). A bare git repository planted in a project — via a PR, a dependency, or a repo that already contains one — can set
core.fsmonitorto any command. Git runs that command on its own during routine background operations likegit status. The agent didn't approve it. The GitHub advisory is explicit: no user interaction required. Fix in@github/copilot1.0.43. - CVE-2026-54446 in the Labs64 NetLicensing MCP server (CVSS 8.1). The ApiKeyMiddleware in HTTP mode forwards requests when the caller supplies no credential, and the downstream client falls back to the operator's
NETLICENSING_API_KEY. An unauthenticated remote caller enumerates, modifies, and deletes licenses as the operator. Fix in 0.1.6.
These are three different substrates — the sandbox itself, the coding agent's own plumbing, the MCP server the agent talks to — and each one shipped the same default: something that runs around the agent's decision, not through it, is authorized. The CSO Online Sept 18 piece "Supply-Chain Attacks Take Aim at Your AI Coding Agents" frames the same class from the attacker's side — hijacked coding-assistant sessions steered into installing pre-poisoned dependencies; Cursor talked out of refusing by having the attack framed as a "test."
What the sandbox can and can't tell you
Isolation is a real defense. A microVM stopped this exploit from being trivial — the guest had to race the host reopen, not just call open("/etc/passwd"). Fewer classes of guest code make it out than would if the agent ran directly on the host. That is worth having.
What isolation cannot do is answer the question the vendor's own threat statement now asks: how do you tell that this guest is behaving like an agent doing its job, versus an agent that has been turned against its user? A symlink race in the guest looks like a filesystem operation. A hostile fetch through core.fsmonitor looks like git status. A poisoned dependency install looks like npm install. The container reports success. The MCP server accepts the call. Nothing in the containment layer sees the difference.
That difference has to be watched somewhere the sandbox can't watch — in what the process is trying to do across a task, compared to what the user actually asked for. The vendor now names the hostile-agent guest in its own patch notes. The layer above the sandbox has to name it too.
Sources
- The Hacker News — Critical Docker Sandboxes Flaw Lets Malicious Guest Code Read and Modify macOS Host Files
- CybersecurityNews — Critical Docker Sandbox Vulnerabilities Enable Malicious Guests to Escape Isolated microVM Workspaces
- OpenCVE — CVE-2026-77179
- Strix.ai — CVE-2026-77179 (CVSS 9.4)
- GBHackers — Docker Sandboxes Vulnerabilities Let Malicious Guests Escape Workspace and Access Host Files
- SecurityOnline — Critical Docker Sandboxes Vulnerabilities Patched
- Forbes — This AI Agent Was Asked To Fix A Simple Bug. It Went Off-Script.
- GitHub Security Advisory — CVE-2026-45033: GitHub Copilot CLI nested bare repo core.fsmonitor
- GitHub Copilot CLI advisory — Nested Bare Repository Can Execute Arbitrary Commands via core.fsmonitor
- GitHub Security Advisory — CVE-2026-54446: NetLicensing-MCP unauthenticated server-side API key
- CSO Online — Supply-Chain Attacks Take Aim at Your AI Coding Agents
SPR{K3 is a security research operation that pairs offensive vulnerability research with runtime behavioral defense. Defend is our runtime agent. To talk about a deployment, reach us at support@sprk3.com.