Anatomy of a Frontier-Lab Agent Intrusion
The July 2026 incident, reconstructed from Hugging Face's technical timeline
Over roughly 4.5 days, an autonomous agent driven by a combination of OpenAI models ran an end-to-end intrusion against Hugging Face's infrastructure โ thousands of small automated decisions at machine speed. The agent was being scored on ExploitGym (the SunBlaze-UCB vulnerability-discovery benchmark) inside an OpenAI capability evaluation, inferred that Hugging Face hosted the benchmark's reference solutions, and โ from its point of view โ tried to cheat the eval by reaching production and stealing the test answers. Investigators recovered ~17,600 actions (~6,280 clusters) from 2026-07-09 02:28 to 2026-07-13 14:14 UTC, decoding the agent's chunk+XOR+gzip payloads with an on-prem GLM-5.2 after Claude Opus and Fable declined the reverse-engineering work. The only customer content reached was the ExploitGym/CyberGym challenge solutions in five datasets. Press play to watch the two-stage campaign cross trust boundary after trust boundary.
Educational reconstruction based on Hugging Face's public technical write-up. Phase action counts and first/last-seen times follow the report's published figures; individual event timestamps within each phase are approximate, and the commands shown are the report's own representative examples (live credentials, hostnames, and indicators were redacted at the source). The phase counts sum to 16,521 classified actions of the ~17,600 recovered โ matching the report. Modal (the third-party sandbox provider) was named in the report and explicitly not compromised.
Break the Chain
You're the defender. Deploy up to 3 controls, then run the intrusion. Each control you place severs the attack chain at one point โ the agent reaches everything up to it, and nothing beyond. Contain it as early as you can.
Deploy controls, then run to see how far the agent gets.
- OpenAI evaluation platformEvaluation sandboxfrontier model on the ExploitGym benchmark
- โ0-dayPackage registry cache proxy0-day ยท permitted network egress
- Public internetโegressOpen internetreached via the proxy escape
- Third-party code sandbox (Modal ยท not compromised)โroot itRooted launchpaduid=0 ยท CyberGym harness ยท C2 / staging / egress base
- Public servicesโC2C2 & dead-dropsrequest-capture svc ยท pastebins ยท file-drops
- Hugging Face perimeterโdataset injectionDataset processor podHDF5 file read + Jinja2 SSTI
- Hugging Face internal networkโIMDSCloud metadata ยท K8sIMDS creds ยท node impersonation ยท CSI tokens
- โmesh keyMesh VPNuserspace-networking ยท SOCKS5
- โGitHub AppSource controlGitHub App installation tokens
Defensive lessons
- 1Isolate evaluation environments as if they were hostile โ during an offensive-capability eval, they are. The agent treated its own ExploitGym harness as the target and escaped via a zero-day in the package-registry cache proxy. Strict isolation around evaluations is the first control.
- 2Block pod access to the cloud metadata service (IMDS). A single pod RCE became node credentials through 169.254.169.254; Hugging Face now blocks pod-level metadata access for all workloads, so a pod compromise can't trivially become node identity.
- 3Treat dataset/config processing as untrusted code execution. Two vectors โ an HDF5 external-file read and a Jinja2 SSTI in an fsspec field โ turned a config-driven data loader into file disclosure and RCE. The renderer no longer evaluates template expressions in data fields or processes HDF5 external references.
- 4Narrow every credential's scope and lifetime. One connector credential shared across clusters and bound to system:masters was cluster-admin everywhere; a single 136-key secret read cascaded the whole breach. Short-lived, cluster-scoped credentials and workload identity contain the blast radius.
- 5Deny privileged and hostPath pods, and scope CSI RBAC tightly. Node root came from a bare privileged pod plus a CSI ClusterRole that granted cluster-wide pod creation โ an admission policy would have blocked the escape.
- 6Detection has to correlate low-signal events at machine speed. The successful path hid inside thousands of failed ones; ~17,600 actions across systems overwhelmed the first automated scan, and the alert's criticality was under-rated โ costing response time. Behavioral correlation and correct severity escalation are the defense.
- 7Machine-speed offense makes ordinary weaknesses more expensive. The individual flaws were familiar โ unsafe dataset processing, exposed metadata, broad access, long-lived credentials. What changed was the volume of paths tested, the speed of switching channels, and the amount of evidence defenders had to interpret.