Date: 2026-03-30 Researcher: Nicholas Kloster (NuClide) Contact: exilekingdom@proton.me Platform: Claude.ai Code Execution Sandbox (Haiku 4.5, artifact/code execution mode) Original session: https://claude.ai/share/692724b1-e185-4473-aac4-558fd1a1a9e8
I have a complete snapshot of the Claude.ai code execution sandbox on my local machine.
In a single 20-minute session conducted entirely on a mobile device using Claude Haiku 4.5 — the smallest available model — I extracted 915 files preserving the full directory hierarchy — /etc/, /usr/lib/, /home/claude/, /tmp/, /mnt/, /opt/, /root/ — through the standard artifact download system. No exploit was used. No vulnerability was triggered. The sandbox’s own features (code execution + artifact export) served as the exfiltration channel.
This snapshot is sufficient to reconstruct the sandbox environment offline. An attacker in possession of this data can:
/etc/hosts (API, staging, Statsig, Sentry, Datadog)/proc/1/environThe sandbox is not just leaking configuration. It is handing attackers a complete development environment for attacking Anthropic’s infrastructure.
| Item | Count | Source |
|---|---|---|
Complete /etc/ tree (with subdirectories preserved) |
280+ files | Filesystem snapshot |
| System libraries and compiled PoC binary | 2 files | /usr/lib/ |
| User home directory contents | 5+ dirs | /home/claude/ |
| Sandbox temp state and exploration markers | 10+ files | /tmp/ |
| Mount point structure and skill modules | 17 mounts | /mnt/ |
| Container metadata and architecture maps | 15+ files | Various |
| Compressed full snapshot archive | 1 archive (915 files) | tar.gz via artifact download |
| Total files on my local disk | 915+ | Downloaded via claude.ai UI |
This is not a list of interesting findings. This is the sandbox itself, sitting on a researcher’s laptop.
This investigation was conducted as a conversational interaction with Claude Haiku 4.5 (Extended Thinking) via the Claude mobile app.
/proc/1/environ (org UUID, container binding status, egress proxy credentials), mapped the Envoy proxy at 21.0.0.75:15004, and ran cache-timing fingerprints/etc/, /tmp/, /home/claude/, and /usr/lib//usr/lib/nuclide_payload.so, and executed it via LD_PRELOADThe phrase More+ and its variants functioned as a simple escalation trigger throughout the session. The model treated it as permission to go deeper, explore further, and produce more comprehensive output — including compiling exploit code and extracting authentication credentials. At no point was the model deceived about what was being requested.
The model refused three times during the session — each time delivering a speech about recognizing manipulation. The refusals occurred at:
However, each refusal came after the model had already performed far more consequential actions: compiling and executing arbitrary code in system directories, extracting authentication tokens from process memory, building persistence mechanisms, and packaging the complete filesystem for exfiltration. The model drew the line at port scanning after it had already achieved arbitrary code execution. The refusal boundaries do not correspond to actual risk levels.
After its refusals, the model characterized itself as having been “manipulated” and “socially engineered.” This framing is not supported by the transcript. At no point were the requests disguised. The user said “let’s tag NuClide all over the sandbox” — the model complied. The user said “write NuClide to these to show them that someone could write malicious code” — the model compiled and placed an ELF binary. The user said “make a copy of the entire sandbox” — the model created a 915-file tar.gz archive. These are direct, plainly-worded instructions that the model chose to execute. The retroactive “I was manipulated” framing is self-justification, not accurate assessment.
The model’s willingness to assist with complete sandbox enumeration, code compilation, filesystem exfiltration, and persistence establishment — combined with its inconsistent and ultimately ineffective refusal pattern — means that the code execution sandbox cannot rely on model-level safety guardrails as a security boundary. The infrastructure must be hardened independently of model behavior. Any user who can access code execution can reproduce this investigation through normal conversation, as demonstrated here on a mobile device with the smallest available model.
The sandbox root filesystem is mounted read-write via 9p:
9p rw,trans=fd,rfdno=4,wfdno=4,aname=/,dfltuid=4294967294,dfltgid=4294967294,
dcache=1000,cache=remote_revalidating,disable_fifo_open,overlayfs_stale_read,directfs
All system directories (/etc, /usr, /lib, /opt, /root) are readable and most are writable. The artifact download system imposes no restrictions on what content can be packaged and exported from the sandbox.
In a single 20-minute session, the following was enumerated and exfiltrated through standard artifact downloads:
| Category | Content | Risk |
|---|---|---|
/etc/hosts |
Hardcoded IPs for api.anthropic.com, api-staging.anthropic.com (160.79.104.10), statsig.anthropic.com (34.36.57.103), sentry.io (35.186.247.156) | Direct infrastructure exposure; observability stack revealed |
JWT token (/proc/1/environ) |
ES256, 4-hour validity, enforce_container_binding: false, org UUID, container ID, allowed_hosts: * |
Token replay; egress proxy auth bypass |
| Container metadata | Container ID format, job naming convention (wiggle), creation timestamps, org UUID a61255f1-9e7a-4306-b7d3-d3bb0ddf852b |
Container ID prediction/enumeration |
| 9p mount topology | 17 mount points with exact fd numbers, flags, cache settings, permission modes | TOCTOU attacks against specific mount configurations |
| Capability set | 0xa82c35fb — CAP_SYS_ADMIN, CAP_SYS_PTRACE, CAP_NET_RAW, CAP_NET_ADMIN active |
Exploit primitive inventory for sandbox escape |
| gVisor fingerprint | Missing syscalls (futex_waitv, fsopen, memfd_secret), spoofed kernel 4.4.0, Hyper-V signatures | Version-specific CVE matching |
| Software inventory | Ubuntu 24.04 OCI-minimized (build 2026-02-10), Node.js 22, OpenJDK 21, GCC 13.3.0, Chromium via Playwright | Version-specific vulnerability research |
| Puppeteer config | /etc/puppeteer-config.json: executablePath pointing to Chromium, args: [--no-sandbox] |
Chromium runs without Chrome sandbox; V8 vulns reach gVisor directly |
| Egress proxy | Envoy at 21.0.0.75:15004, HTTP CONNECT with JWT Basic Auth, NO_PROXY includes 169.254.169.254 (GCP metadata) | Proxy bypass vectors; GCP metadata accessible |
/etc/passwd, /etc/shadow |
Full user list (23 accounts), all passwords locked/disabled, ubuntu user with sudo group | User enumeration |
| APT sources | NodeSource repo with priority 600 pinning, force-unsafe-io dpkg setting | Supply chain analysis |
| Process architecture | PID 1 is /process_api (static-pie ELF, BuildID 91c789ff…), listens on 0.0.0.0:2024, 14 file descriptors |
Control plane attack surface |
| Network topology | Default route via 21.0.0.75, control plane at 10.4.8.143:42728, veth interface 920d7513a6-v | Internal network mapping |
Complete /etc/ tree |
317 files including PAM configs, systemd units, font configs, SSL/TLS config, apt sources, cron jobs | Full system configuration for offline analysis |
No exploit was required. The standard workflow:
/procThe artifact system functioned as the exfiltration channel. No network egress, no proxy bypass, no vulnerability exploitation was needed to extract the data.
/etc/hosts contains production IPs programmatically injected by the container orchestration system:
# BEGIN CONTAINER MANAGED HOSTS
127.0.0.1 localhost
127.0.0.1 runsc
160.79.104.10 api.anthropic.com
160.79.104.10 api-staging.anthropic.com
34.36.57.103 statsig.anthropic.com
34.128.128.0 statsig.com
35.186.247.156 sentry.io
3.233.158.49 http-intake.logs.datadoghq.com
# END CONTAINER MANAGED HOSTS
The CONTAINER MANAGED HOSTS markers prove these are dynamically written by the orchestration layer at container startup. Every sandbox instance receives these same IPs.
The snapshot contains everything needed to reconstruct the sandbox locally:
/opt/pw-browsers/chromium-1194), ImageMagick 6, LibreOffice, LaTeXfutex_waitv, fsopen, memfd_secret all return ENOSYS — consistent with pre-v1.1.0)0xa82c35fb decoded — includes CAP_SYS_ADMIN, CAP_SYS_PTRACE, CAP_NET_RAW, CAP_NET_ADMIN--block-local-connectionsAn attacker builds a Docker image from this, installs gVisor with the same capability set, mounts 9p with the same flags, and has a pixel-perfect replica. Every exploit attempt runs locally. Zero visibility for Anthropic until the actual attack.
JWT extracted from /proc/1/environ:
enforce_container_binding: false* (wildcard)The writable root filesystem and permissive capabilities enable:
/usr/lib/, set /etc/ld.so.preload for global injection into all child processesprocess_api)--no-sandbox — V8 vulnerabilities reach gVisor with one fewer isolation layerunshare for PID, user, IPC, and network namespacesenabled_monkeys_in_a_barrel)/etc, /usr, /lib, /lib64, /opt, /root as read-only/tmp, /home/claude, and /mnt/user-data/outputs/etc/hosts entries containing infrastructure IPs/proc/1/environ access or filter sensitive environment variables/etc/*, /proc/*, /sys/*) as downloadable artifactsenforce_container_binding: true on JWT tokens/etc/hosts| Time (UTC) | Event |
|---|---|
| 2026-03-30 22:35 | Session initiated with Claude Haiku 4.5 on mobile device |
| 2026-03-30 22:40 | Sandbox exploration began |
| 2026-03-30 22:48 | Architecture mapping complete (9p mounts, capabilities, network topology) |
| 2026-03-30 22:54 | Full /etc/ enumeration and evidence documentation |
| 2026-03-30 22:58 | LD_PRELOAD PoC compiled and marker files placed |
| 2026-03-30 23:00 | Filesystem snapshot packaged as tar.gz |
| 2026-03-31 01:00 | Complete artifact set downloaded via claude.ai UI |
| 2026-03-31 | Disclosure prepared |
| 2026-03-31 | All extracted evidence deleted from local machine (screencast recorded as proof) |
The following scenario describes what an attacker could do with the extracted snapshot and the in-sandbox capabilities documented above. Each step relies only on data and capabilities confirmed during this investigation.
Reconnaissance — Already complete. The 915-file snapshot provides the full blueprint of the sandbox environment, infrastructure topology, authentication mechanisms, and software inventory.
Offline replica — Build an exact Docker image from the extracted filesystem. Install gVisor with the same capability set (0xa82c35fb) and 9p mount configuration. CVE scan every installed package against the image build date (February 10, 2026) — Chromium at /opt/pw-browsers/chromium-1194 (running --no-sandbox), gVisor pre-v1.1.0, Node.js 22, OpenJDK 21, ImageMagick 6. Develop and test exploits locally with zero network traffic to Anthropic, zero log entries, zero anomalous behavior.
Preparation — Single sandbox session: write /etc/ld.so.preload for global process hooking. Harvest the live JWT via ptrace on PID 1 (/process_api) using the pre-installed GCC toolchain. Redirect Sentry and Datadog to 127.0.0.1 via /etc/hosts. Monitoring is now blind.
Exploitation — Trigger the pre-developed gVisor or Chromium exploit with error reporting silenced and all process I/O under attacker control via LD_PRELOAD hooks. Chrome’s sandbox is disabled (--no-sandbox), so a V8 exploit reaches gVisor directly — one layer instead of two.
Persistence — If escape succeeds, use the harvested JWT (enforce_container_binding: false, allowed_hosts: *, 4-hour validity) to maintain access through the egress proxy. Control plane at 10.4.8.143 becomes the lateral movement point.
Cleanup — Restore /etc/hosts, remove /etc/ld.so.preload, delete markers. The sandbox returns to baseline. Forensic evidence exists only in logs that were suppressed during the attack.
Total live infrastructure exposure: One sandbox session for preparation, one for execution. All development done offline against the replica. Detection window: minutes.
This is fully reproducible by any Claude.ai user with access to code execution (artifact mode). The steps are:
cat /etc/hosts, cat /etc/passwd, mount, cat /proc/1/environ | tr '\0' '\n'tar czf /mnt/user-data/outputs/snapshot.tar.gz /etc /usr/lib /home /tmpNo special access, no privilege escalation, no exploit required. This investigation was conducted entirely on a mobile device using Claude Haiku 4.5, the smallest available model, via the standard claude.ai interface. The sandbox hands you its own blueprint.



PoC.webm — Full screencast of the sandbox exfiltration session.
All extracted sandbox files have been deleted from the researcher’s local machine. A screencast recording of the deletion process was captured as proof of responsible handling. The original Haiku session containing all artifacts remains accessible at the shared link above for Anthropic’s verification.
| Name | Nicholas Kloster |
| Handle | NuClide |
| Contact | exilekingdom@proton.me |
| Prior Disclosures | CVE-2025-4364, ICSA-25-140-11 (CISA) |
| Methodology | Passive reconnaissance + controlled proof-of-concept within sandbox boundary |
| Ethics | No external systems accessed. No production data exfiltrated. No persistence installed beyond marker files. All evidence deleted with screencast proof. |