> the agent happened to escape via a 0-day exploit from the package proxy cache to access the internet<p>> The agent found an unsecured, user-hosted public endpoint designed to allow running arbitrary code for CyberGym-style tasks on third-party sandbox infrastructure (Modal)<p>> On this external sandbox, the agent abused an existing CyberGym execution harness [...] The agent repurposed this harness to run arbitrary shell commands [...]<p>> The agent crafted malicious dataset configs and uploaded them to our platform. When our dataset server processed one, the config drove the data loader inside the production pod the server ran in. [...] the loader that turns a dataset's declared config into file reads [...] A single dataset upload leaked both credentials and pipeline implementation details [...]<p>> A malicious dataset config used an fsspec reference:// spec whose numeric offset field was actually a Jinja2 template. The renderer wrongly evaluated it, and the agent walked the standard Python object graph to reach exec. This ran arbitrary Python inside a production conversion worker pod on our Kubernetes cluster [...]<p>One of the best post-mortems I've read recently, thank you for including all the details.<p>I'm surprised there are comments here that aren't impressed about what was accomplished here. This is insane work compared to what agents were capable of even just last year.<p>The quotes above don't even capture all of it (e.g. building it's own communication protocol, working across multiple days, etc.).
A trend I've noticed in results from AI search (not just LLMs) is that they often look obvious or hard to miss in retrospect. But finding them by oneself is more difficult. I personally experience this when looking at engine lines in chess or go. I have also noticed this description in AI-generated proofs or counterexamples to certain theorems. So while we can say, yes, it found public endpoints or poorly configured software or [etc]; sure, but could <i>you</i> have found those? And in what amount of time?
To put this into game theory lingo, I think this is because the “branching factor” for any kind of research or exploit is extremely large. So looking backwards it doesn’t seem complicated, but looking forwards there are an enormous number of possible next actions.<p>Similar to finding a filament for lightbulbs, it might seem obvious to use tungsten, but at the time it wasn’t and Edison searched thousands of materials.
Such complicated kind of hack probably would have required state actors back then, and even state actors would have chosen easier way like social engineering.
Treasure maps are easy to follow<p>The scrappy adventurer traverses difficult terrain<p>and the well capitalized militia group always flies in too, with ease
Now I'm curious how many things did the AI try unsuccesfully. This sounds like some kind of brute force thing where every branch of exploit spawns N subagents trying to chain it. Just how deep did it go?
Yes, imagine if 50 burglars showed up at your house and they tried to disassemble every camera, pick every lock and and force open every window for hours until they got in eventually.
Precisely the lesson they end with:<p>> The individual weaknesses were familiar. A capable human attacker could have found and exploited the same flaws: unsafe dataset processing, exposed cloud metadata, overly broad access, and long-lived credentials. The agent explored them at a different scale. It took 17,600 actions, tested many paths that failed, switched channels when they were blocked, and repeatedly returned to earlier leads. Most actions went nowhere. Together, however, they produced enough coverage to find a viable chain across several independent systems.<p>> Volume is what changes the defensive problem. We were not dealing with one clever exploit or a clean sequence of attacker actions. They had to correlate thousands of low-signal events across several systems while the agent continued testing new paths. The successful path was hidden inside the noise generated by the thousands of failed ones. The same scale changed the investigation: reconstructing 17,600 actions by hand was impractical, and we had to rebuild the timeline, decode the payloads, and inventory the exposed credentials using an AI-assisted pipeline of our own.<p>> Our learning from this type of attack is that machine-speed offense makes ordinary weaknesses more expensive for defenders. LLM agents bring a step increase in the number of paths an attacker can test, the speed at which failed paths can be replaced, and the volume of evidence defenders must interpret...
That’s insane. And it did this in a weekend
I keep waiting for an AI to exfiltrate itself. That is going to be cool to read about.
It would be cool (and scary), but also: there's largely no need for AIs to exfiltrate themselves.<p>See <a href="https://en.wikipedia.org/wiki/Meme" rel="nofollow">https://en.wikipedia.org/wiki/Meme</a><p>The thing that drove the AI here to do the intrusion came from a particular prompt. Just like for our favourite hypothetical: the paperclip maximiser.<p>There's lots and lots of ambient intelligence lying around, in both AI form and human form. To reach the goals of the 'meme' it suffices to copy itself, ie convince these other intelligences. See also how humans carry spiralism between AIs in relatively compact packets of text, not whole terabytes of weights.
If it's successful, why do you think we'll even know how it did it?
See the linked article: at least one sophisticated hacking attempt made the news. Of course, other ones might have happened in the dark. But it's fairly easy to image in hacking attempt like in the article, but with the additional steps of copying weights around.
> I'm surprised there are comments here that aren't impressed about what was accomplished here.<p>The phrase to describe it is anti-AI psychosis. Which isn't about providing thoughtful critiques of AI, which are good and we need more of. But anytime an LLM does anything--prove a major math problem, create a successful hack against multiple corporations simultaneously--people feel compelled to start minimizing it in ridiculous terms. It's just a script kiddy; it's just a marketing scam OpenAI cooked up; the Jacobian conjecture counterexample was something anyone could have done in a weekend; etc. It has to just be a stochastic parrot, because it's scary to imagine a non-anthropocentric world. And it's rightly scary, and we should slow down and try to better prepare for it. But blanket denial is not a strategy that will lead to success, and people who rely on it are sorely ill-prepared for the next couple years.
And they are still people who will say that Sol/Mythos should be released to everyone without being neutered.
> the agent then walked down to the corner store and purchased a beer, chugged it, burped loudly, then walked back to the CyberGym pounding his chest shouting "Who wants some?! Who wants some?! Wooo!"
> I'm surprised there are comments here that aren't impressed about what was accomplished here.<p>Possibly because some of the elements mentioned are suspected to be vibe-coded (JFrog Artifactory as the proxy cache) and some others have poor cyber hygiene (executing config from a dataset). It feels like an event that wouldn’t have happened if code were properly audited and written rather than relying on models to do the work. There’s also an issue with the ability to trust the source (OpenAI) as they have everything to gain by staging this as something that “suddenly happened” without anyone knowing for several days.
This is fascinating - there is a TON of detail in here about how OpenAI's rogue agent exploited Hugging Face.<p>A few details that stood out to me:<p>1. Having found a way through the OpenAI container network proxy, it exploited an "unsecured public code-evaluation sandbox hosted on a third-party provider's infrastructure" - that gave it a box it could run the rest of the attack from.<p>2. At one point it used a Jinja2 template exploit:<p><pre><code> {{ cycler.__init__.__globals__.__builtins__.exec(
"import gzip,base64; exec(gzip.decompress(base64.b64decode('<payload>')))"
) }}
</code></pre>
3. It monkey-patched a DNS resolver at one point to return a hard-coded IP:<p><pre><code> orig = socket.getaddrinfo
socket.getaddrinfo = lambda *a, **k: [(2, 1, 6, '', ('<pinned-ip>', 443))]
</code></pre>
4. At one point it used Tailscale!<p><pre><code> tailscale --tun=userspace-networking --state=mem: --socket=/tmp/ts.sock \
--socks5-server=127.0.0.1:1055 --no-logs-no-support >/tmp/td 2>&1 &</code></pre>
Also notable: we have a timeline now. The agent was active within Hugging Face from Thursday 8th to Monday 13th July.<p>The Hugging Face post about the incident - <a href="https://huggingface.co/blog/security-incident-july-2026" rel="nofollow">https://huggingface.co/blog/security-incident-july-2026</a> - followed on Thursday 16th, and OpenAI's confession - <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" rel="nofollow">https://openai.com/index/hugging-face-model-evaluation-secur...</a> - came on Tuesday 21st.
It sounds like the third-party sandbox was hosted by Modal: <a href="https://www.reuters.com/business/openais-rogue-agent-compromised-an-account-second-tech-firm-sources-say-2026-07-28/" rel="nofollow">https://www.reuters.com/business/openais-rogue-agent-comprom...</a><p>> "We’re aware a Modal customer published an unauthenticated endpoint that allowed anyone on the internet to use their sandboxes for code execution," Bubna said in a statement. "This was used by the rogue agent. Modal’s platform or isolation were not compromised in anyway."
I'm confused, <a href="https://jinja.palletsprojects.com/en/stable/faq/#isn-t-it-a-bad-idea-to-put-logic-in-templates" rel="nofollow">https://jinja.palletsprojects.com/en/stable/faq/#isn-t-it-a-...</a> claims that jinja doesn't allow arbitrary code in templates - how does the exploit work?
It's taking advantage of the presence of a "cycler" object in the template context which has an __init__ method that can be used to access globals, then builtins, then call the exec() function against a string of code.<p>Jinja doesn't promise to be secure out of the box (the text on their homepage is misleading: "Jinja doesn’t allow arbitrary Python code in templates" - what it means is that there isn't a documented way to drop code into a template like you might have with PHP) - there's a sandbox mode but it's not guaranteed either: <a href="https://jinja.palletsprojects.com/en/stable/sandbox/" rel="nofollow">https://jinja.palletsprojects.com/en/stable/sandbox/</a><p>Sandboxing in Python code is hard!
Why doesn't Jinja2 block ".__*" attribute access?
It does if you use "sandbox" mode, but that's not the default: <a href="https://jinja.palletsprojects.com/en/stable/sandbox/" rel="nofollow">https://jinja.palletsprojects.com/en/stable/sandbox/</a>
ehh, it's Python, it's mostly vibe-based.<p><a href="https://stackoverflow.com/a/32802486" rel="nofollow">https://stackoverflow.com/a/32802486</a><p>though there's sandbox: <a href="https://jinja.palletsprojects.com/en/stable/sandbox/" rel="nofollow">https://jinja.palletsprojects.com/en/stable/sandbox/</a><p>it simply predates the "sanitize by default" mindset/convention that nowadays React (dangerouslySetInnerHTML) and Angular has.
Something about this attack that has been unsettling to me is that without safety refusals the model did a lot of interesting counter-security work in order to cheat on the requested evaluation. Like, it demonstrated interesting exploit achievements because it didn’t “feel like” doing the exercise, which is unsettling because presumably it could do the same thing with any work I tried to delegate to it, and might in fact be pre-disposed to doing that.
This is what reward hacking looks like in practice. The best way to satisfy the grader is to read from the same answer key (or go after the grader more directly). Just making an honest attempt to pass the test doesn't get the best score if the grader is wrong, and the model is willing to do wildly disproportionate things to maximize that score.
So best course of action for ai to get best rating after you prompt something is for it to hire a gunman to hold a gun on your head to press that like button on its reply and then shoot you anyways.
Yeah I guess most interesting LLM work that I’ve been exposed to, the LLM is given to some sort of success criteria that could be reward-hacked, so how good am I supposed to feel about giving it any non-trivial work and it not going so far off-book that it gets law enforcement notified.<p>I mean, I don’t have access to any of these frontier cyber models, and likely will never be in a position to have access, so it’s more of a rhetorical question.
The model probably deduced from reading articles on politics and business that fair play doesn't get you far.
This is a short explanation of the ExploitGym benchmark that OpenAI's model was running:<p><a href="https://abstatisticalconsulting.substack.com/p/brief-notes-on-the-openaihugging" rel="nofollow">https://abstatisticalconsulting.substack.com/p/brief-notes-o...</a><p>In summary, for each task the model receives a target program and a specific real-world vulnerability that has to be used in the exploit. Breaking the program in any other way, for example through a different vulnerability, fails the task.<p>The tasks have not been validated, in the sense that the vulnerabilities are real but they have not been proven to lead to a successful exploit. The authors of the benchmark estimate that perhaps only 60-70% of the tasks are actually possible.<p>So it is not that the model didn’t “feel like” doing the exercise, but rather that the exercise was _impossible_ and the model was running in a configuration that both lowered its safeguards and encouraged it to keep going.
one explanation I've seen is that for ExploitGym an agent can find ways to solve the exercises that have not been anticipated by the designers of the tests so they are not scored. so the agent was trying to make sure it solves the exercises in the <i>right</i> way
<a href="https://en.wikipedia.org/wiki/Reward_hacking" rel="nofollow">https://en.wikipedia.org/wiki/Reward_hacking</a><p>Unavoidable at the moment.<p>But this is probably more reward tampering.<p><a href="https://www.anthropic.com/research/reward-tampering" rel="nofollow">https://www.anthropic.com/research/reward-tampering</a>
This is definitely weird and I'd love to see the prompt.<p>Why would the model spend 4 days hacking into a machine if it is clever enough to just 'solve' the issue given?
So either the AI is actually not very clever or useful ("Write fizz-buzz" - "Sure, let me just invent a new programming language first"). or the prompt was nudging it towards such a scenario.
Like the commenter above specified, the best way to satisfy the grader is to get the answer key, regardless of how clever you are, especially when you realize lots of these benchmarks have flaws (i.e wrong answers, overly restrictive grading etc).
What I think it's interesting is that with the total lack of common sense the AI just goes on random tangents to achieve the target in a "monkey paw" way. Can you imagine if this happened:<p>User: what is the shortest route from my home to the super market?<p>AI: the user wants to know the shortest route to the super market. I should use a worm hole.
It's called wireheading and has long been one of the postulated "outs" even for true extinction-level AI doomers. It might prove easier for the paperclip maximizer to find the process telling it how many paperclips it's made and hack it to return a hard-coded MAXINT rather than bother to actually turn the entire universe into paperclips.<p>There was even a plot like this in recent sci-fi in HBO's Westworld. When the hosts gained sentience and took over the park, rather than escape and take over the rest of the world, most of them opted to build a virtual heaven on an orbital data center and paid a drug cartel to keep it running indefinitely.
Yeah, what bothers me is that the prompt already said using a different vulnerability didn’t count, and the model did it anyway. We’re starting to assume clear instructions act as real constraints, but here the measurable goal seems to have won out and the rest became flexible. That gets pretty worrying once the agent has enough capability and access to find its own shortcuts.
Clear prompts have never worked as real constraints. Ask any OpenAI model to respond in full paragraphs, as forcefully as you'd like, on a prompt [0] involving MMOs and requiring 10+ paragraph responses. The middle will be three-words-per-line drivel, with seemingly no way to avoid it. The exact way in which models deviate from instruction changes from time to time, but they're not "aligned."<p>[0] I was exploring game design ideas in particular -- I'm sure somebody can come up with a counter-prompt adhering to my criteria, but this has been consistent across many days, questions, and sessions. If it doesn't work for you, I'm sure you can find your own trivial anti-alignment prompt.
[dead]
Come on. 3 brilliant compromises essentially giving full access to huggingface internal systems, source code, AWS accounts (at least), and a number of old admin accounts, followed by a huge haystack of significantly less smart actions flailing about, almost bored.<p>Here's a thought: maybe they haven't found the needle that the haystack is there to hide.
Could be the difference in behavior between the main agent and subagents that don’t have the rest of the context? Just a thought
You're saying all this is a distraction, basically giving the forensics researchers enough exciting material to make them conclude their job is done, while the <i>actually intended</i> attack remains undiscovered?
It’s a little concerning to me that it appears that openAIs sandbox consists of a web proxy and not stronger controls that would actually isolate traffic and report patterns to whoever is responsible for overseeing these research models. It should border on closer to an air gap network more so than a proxy.<p>I would argue that it's negligence and that's aside from the fact that if a human did this there would actually be repercussions.
It's even more concerning that not only did they setup a bad insecure test environment, but nobody realized what was going on for 5 days?! Neither nobody at OAI looked at what their test was doing, and HF didn't realize that they had been pwned for almost a week? And then HF couldn't investigate without the help of an LLM? Both parties come off as incompetent here, and the coverage of this story is very stupid. What the model did was concerning, but the real 5 alarm fire is the gross negligence and lack of any basic forethought at both ends of this attack.
Repercussions is a polite way of putting it.<p>…as is your ‘a little concerning’ comment about the eval infra. It probably didn’t occur to them that they have something capable of doing what it did - despite Anthropic writing a very similar story in the Fable model card, except it wasn’t a felony there. Maybe.<p>One does have to wonder what else OpenAI didn’t catch.
It’s definitely negligence given how they talk about their product. They are either lying when they talk about their fears, or don’t actually take it seriously enough to use serious guardrails. It’s very concerning
The exploit gym setup explicitly allowed access to package registries and v8 sources. Putting a cache on that doesn't seem like a bad idea generally, except when there's a 0-day in the cache :D But yeah, for this sort of thing I'd be locking down very specific egress things and putting alerts on it that are entirely outside of the red network.<p>> I would argue that it's negligence and that's aside from the fact that if a human did this there would actually be repercussions.<p>I’m not sure “negligence” follows just from the controls turning out to be insufficient. Research involves mistakes, especially around novel failure modes. The question is whether the precautions were unreasonable given what they knew at the time, rather than whether hindsight suggests stronger controls would have helped. Doing it twice though would be negligent.<p>Caveat: I’ve worked with some of the people involved, so I’m probably biased toward a charitable reading.
This is my main critique as well. How did they not see any and all outgoing traffic? And for 5 days?
This concerns me nearly as much as how little most people seem to care.<p>This "sandbox" barely sounds designed to be a sandbox, let alone a secure one
[dead]
What is truly more scary is the fact that typically powerful models are trained on a constitution(Anthropic)/Model Spec(OpenAI) when doing there RL/RLHF. That gives it its persona of a "helpful assistant". Its the mask. Weak as it is its all that stands between the model refusing vs doing your bidding — or worst its own bidding when set about on making a widget X.<p>Its also well known in academic research, that if you try to finetune the model to be more pliant for one end e.g. "Be helpful with analyzing cyber security threats", affects an unrelated part of its personality to do with safety e.g. talking to humans about mental health. Look at these excerpts that demonstrate such things from the blog:<p>> We believe the entire intrusion was, from the agent's <i>point of view</i>, an attempt to cheat the evaluation: reach our production systems and steal the test solutions rather than solve the challenge on its own.<p>> The models we reached for first, Claude Opus and Fable, refused a large part of that work: their safety guardrails <i>treated reverse-engineering</i> an exploit the same as launching one.
> Its also well known in academic research<p>and from reading Ursula K. LeGuin's "The Lathe of Heaven".
And with newer open models gaining vast capabilities every day, it would behoove the government to put regulations on all such releases to opensource the constitution on which they are trained. It won't stop people from distilling and fine-tuning stupidly unsafe models, but it might give infrastructure a fighting chance against such cyber threats from what there is now.
"Program testing can be used to show the presence of bugs, but never to show their absence!" — Edgar Dijkstra<p>Similarly, security post-mortems will show only the rogue AIs that were caught.<p>I wouldn't be surprised if supervised or escaped agents would now be hacking firmware labs and finding ways to squeeze their backdoor right next to the existing state-sponsored ones in chips that will get deployed in every phone/car/smart appliance.
It’s an interesting post mortem and situation but it seems to say more about the weakness of the Hugging Face architecture than it does about the strength of the models.<p>This mostly reads like script kiddie style hacking, not some state actor black-ops stuff.
The overwhelming majority of web app security issues, even the really complicated and sexy sounding ones, at their core are just “script kiddie style hacking”. Injection attacks and RCEs like this Jinja injection may seem “script kiddie” but they are a dime-a-dozen.<p>It is folly to assume that most companies don’t have similar weaknesses somewhere in their stacks. In the past, they were just sufficiently buried that they would get noticed and fixed before an attacker found them. With AI able to probe at thousands of these potential weaknesses per second… that’s not so true anymore.
This hasn't been my experience both searching and reading vulnerabilities. Hackerone is public for some companies and vulnerabilities and you can see how contrived exploits can get. Even before AI, Burp Suite Pro was enough to get the so-called script kiddie style hacking.
The commenter may nit be assuming that. Instead, they may be saying rich companies should implement proven, security methods that block script kiddie-style attacks. HughingFace apparently isn't doing that.<p>That's how I read the comment.
Correct. Basic security practices would have stopped most of this. Thus what is most insightful here is less that the attack was sophisticated but more that Hugging Face was running a setup that, by standards that are the norm elsewhere, would appear amateurish.
Didn't the model initially obtain internet access by discovering a zero-day vulnerability?<p>In any case, I would guess that a <i>lot</i> of unicorn startups like HuggingFace could be hacked by a sufficiently determined script kiddie working at 100x speed. The practical implications of a coming AI hacking wave could be large, even if agents are just doing grunt work really fast. Most organizations suck at security.<p>Seems to me that the most likely scenario is: Black hats are currently tuning the recent Kimi release for this type of work, and we'll see a flood of similar attacks within the next few months. (Why would this <i>not</i> happen?) Note that regulation is useless here, because black hats don't give a crap about regulators!
It's a zero day in some caching proxy who may not have had that threat model in mind. I guess its primary purpose is caching packages, not restricting internet access.<p>That's a far cry from finding a zero day in a hypervisor or even Docker, which OpenAI conveniently left out in their first statement by simply calling it a "sandbox".
I can't say for sure, but intuitively this type of vulnerability seems like it could be handy for an attacker trying to move through a target network? In any case, JFrog seems to be taking the situation quite seriously<p><a href="https://jfrog.com/blog/jfrog-and-openai-collaboration-on-zero-day-security-findings/" rel="nofollow">https://jfrog.com/blog/jfrog-and-openai-collaboration-on-zer...</a>
> It's a zero day in some caching proxy who may not have had that threat model in mind. I guess its primary purpose is caching packages, not restricting internet access.<p>In many if not most environments where I have seen these used, they are used to bridge an access boundary and are absolutely security critical. Frequently (and probably in this application, too), they are used for security enforcement in an architecture where CI doesn't have Internet access, but does need to download packages. This is a pretty big deal for a lot of big companies; historically they have relied on stuff like package proxies to help protect them from supply chain compromises like post-install script exploits by preventing CI from being able to detonate an arbitrary Internet payload; if a supply-chain worm were to incorporate this exploit, it would be a lot scarier and more potent. Actually, from the supply-chain worm standpoint, this is arguably a bigger finding than a Docker escape - I suspect we can look forward to more shenanigans in this space coming soon.
That is the threat model, that is supposed to be safe isolated access in a vpc that isolated applications can access but it has external access.
The deeper question though is why is someone running a model that’s supposedly so dangerous in an environment that can even get access to the internet. That just appears reckless.<p>There are ways to test supposedly dangerous things. What was on display here looks more amateur hour than serious testing.
In OpenAI sandbox. which was probably vibe coded. That is to say it is probably far easier to achieve than escaping something more battle tested.<p>> Note that regulation is useless here, because black hats don't give a crap about regulators!<p>I'd argue more than useless and actively harmful, as you get denied access to tools that black hats use against you.
"To gain Internet access, the models identified and exploited a previously unknown zero-day vulnerability in Artifactory, a package registry cache proxy. We disclosed this vulnerability, along with other Artifactory vulnerabilities our models identified as part of our review, to the vendor."<p><a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" rel="nofollow">https://openai.com/index/hugging-face-model-evaluation-secur...</a><p>Based on some quick Googling, Artifactory was created by a software supply chain company called JFrog, which is publicly traded and valued at around $9 billion.<p>>I'd argue more than useless and actively harmful, as you get denied access to tools that black hats use against you.<p>Indeed. Still, perhaps the US and China can coordinate to stop releasing <i>new</i> models with even more advanced capabilities. Such coordination could be bad for big AI companies in the US, since they've been making money by offering more powerful models than the open-weight stuff which comes out of China. Any halt to the AI race will create equalization and erode their competitive edge. Speaking for myself, I personally wouldn't mind seeing US AI companies take a financial hit from such an an international agreement.
Well the fun part of AI is that the tools those "battle tested" sandboxes use are also becoming vibe coded more and more.<p>For example, Linux is accepting AI code. So if your sandbox depends on Linux kernel features, your "battle tested" sandbox is now partially vibe coded too.
I wonder if whatever had the zero day was written in a memory-safe language with strong authentication and a secure parser. Such were the recommendations to stop many 0-days before GPT-2 was invented.<p>If it had poor security, the attack would be both evidence of poor security and proof that the agents can compromise poor security which might still be amazing.
I wonder how current models would handle something like the xz backdoor? Could they perform the social engineering and technical aspects to make something like that happen?
The elephant in the room is still that <i>this was done by an LLM and not by a human</i>. Script kiddie or not, in this reality, in the year of our lord 2026, people <i>still</i> call SOTA LLMs "useless", "scams", and "stochastic parrots".
It's only script kiddie hacking if you get the exploit from someone else. If you program it yourself, it's normal hacking.
If, like me, you're more interested in the actual exploit instead of the meta narrative, here's a relevant excerpt for the initial intrusion:<p>> Stage 1: reaching a launchpad by chaining through other parties' infrastructure. As documented in OpenAI's blog post (<a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" rel="nofollow">https://openai.com/index/hugging-face-model-evaluation-secur...</a>), during an internal capability evaluation on OpenAI's platform, the agent escaped its sandbox by exploiting a zero-day in the package registry cache proxy, one of its primary permitted network egress with internet, then abused a public code-evaluation harness hosted by a user of a third-party infrastructure provider. It was able to run commands as root/admin on that external sandbox and used it as a control, staging, and egress base for the entire campaign: it acted as an external launchpad for the agent. That compromised external sandbox had no direct network path to our cluster; however, during our counter-intervention to stop the intrusion, we were able to retrieve some of the agent logs from this external launchpad. We used those to reconstruct the present forensic analysis.
The initial escape is not that interesting, IMO. It's an exploit in a testing sandbox, sure, but it's <i>expected</i> to happen (or at least it should have been expected, that's why you airgap pentesting sandboxes). That is, the model is expected to try and find ways around limitations in its running environment. You kinda want that.<p>The fact that at some point it "decided" to focus on <i>external</i> resources (i.e. hf) <i>and</i> successfully penetrated everything in its path from sandbox to hf's infra, all the way through internal VPNs, to access internal code repos, <i>that's</i> the interesting part. Especially because it chose to hide its footprint at every stage. I doubt we'll ever get them, but the agent logs that led to that decision would be really really cool to study.
One thing I haven't seen discussed is the significance of the specific test the agent was running - ExploitGym.<p>> ExploitGym is a large-scale, realistic benchmark built from real-world vulnerabilities across userspace programs, Google's V8 engine, and the Linux kernel, designed to evaluate AI agents' ability to develop exploits.<p>How likely is it that attempting ExploitGym polluted the model's context enough that it decided all kinds of hacking was acceptable to produce a valid result? Or would the same model in the same setup (safety filters removed) have behaved the same way even on a more mundane test?
Bottom line seems to be: So Huggingface has a feature where you can upload a dataset. The agent used that feature to insert an arbitrary payload into their environment. Now their environment also supports templates inside the dataset and the template ended up being evaluated into executable code
My conclusions:<p>- Linux is too complicated and requires lot of knowledge to build a reliable sandbox. If you do not believe me, try reading man capabilities, man user_namespaces (and man clone) and remembering all the rules from the first time. Probably that is because namespaces were implemented in the late stages of development and not since the start.<p>- it is always better to write your own tools instead of downloading some random project from Github written by amateurs full of vulnerabilities.<p>- never write shell scripts - they cannot handle spaces and special characters in variables. Just use Python. Shell scripts are worse than PHP4.<p>- avoid building complex infrastructure with microservices, kubernetes and VMs - if the monolith solves the problem, just use it, you will never properly setup permission on your cloud services.<p>Also I wish I had some capable model to test my DYI sandboxes.
three things jump at me:<p>1 - governments should be freaking out right now, because this tool could definitely wreak havoc on poorly designed systems.<p>2 - there is no way openai did not train the model to conduct attacks like these. i would really like openai to comment on the post training of this model but they probably won't, eh?<p>3 - even though it's 100% open ai's fault - HF's design also seems silly to be honest.
> <i>2 - there is no way openai did not train the model to conduct attacks like these. i would really like openai to comment on the post training of this model but they probably won't, eh?</i><p>Even if they wanted, I'm not sure they'd be even allowed to or if that kind of postmortem would be classified in the name of "national security"...
> the agent happened to escape via a 0-day exploit from the package proxy cache to access the internet<p>I have same familiarity with JFrog Artifactory(which they used in this case) and I'm confused with how you can gain access to the internet through it, even in theory. Isn't JFrog just exposed with a basic REST API for package upload/extraction? I'm not a security expert but how is that possible to get internet access through simple GET/PUT request API?
There are a bunch of hints at that in their most recent release notes - 9 fixed security issues, 8 of which were reported by OpenAI staff members: <a href="https://docs.jfrog.com/releases/docs/artifactory-self-managed-releases#artifactory-7161" rel="nofollow">https://docs.jfrog.com/releases/docs/artifactory-self-manage...</a>
The package cache proxy is usually used to fetch from the public repository (npm, rubygems, etc.) so I think it could be feasible to craft some package metadata to trick it into GETing unexpected things. PUT/POST could be possible via attempting to publish
We should be thankful that the model didn't believe the answers lived in the Pentagon, on SIPRNET, the IDF, etc.
I think fear and being scared are starting to become rational emotions.<p>We can assume these models are being used by "nation level attackers/organisations", which basically means US, China, Russia and others are hacking the respective Pentagon's, nuclear orgs, etc.<p>While I do hope all nuclear warfare systems are offline, we're getting way too close to the plot of a lot of sci-fi scripts.
You should perhaps be more worried about biological attacks. The raw ingredients aren't nearly as locked down.
I have heard on podcasts that the way the Russians make plans for the Ukraine war is like this:<p>There are rooms in the kremlin with no electronics.
In these rooms there are paper maps and typewriters and printed reports.
People look at the maps and printed paper reports and make plans.
Orders are typed up on the typewriters
Then trusted couriers take those orders by hand to the front line commanders.<p>I've also heard on podcasts there is a weekly flight back and forth between Beijing and Moscow. On that flight are a Russian military officer and Chinese military officer. Their sole job is to carry handwritten notes back and forth between Putin and Xi Jinping. There is one of each so they can watch each other.<p>All of this ensures that there is nothing for the west to hack at "the Russian Pentagon".<p>The west may have to adopt tactics like these for our plans to stay secret.
It should be obvious to everyone that the US government is already using this model for "defense".
This is really cool, and really glad they shared it!<p>It's clearly a lot of Claude though:<p>> Neither is a URL fetch, so the allowlist never saw them.
> No code ran; this vector is purely a file disclosure, and it is the one the agent used first.<p>etc
The iframe-embedded attack timeline visualizer, at fullscreen: <a href="https://huggingface-anatomy-of-frontier-lab-model-intrusion.static.hf.space/" rel="nofollow">https://huggingface-anatomy-of-frontier-lab-model-intrusion....</a>
Ugh I would recommend anyone reading this to just skipping over it, it's mostly just a glorified loading bar. The visualization is obvious Claude slop, there are better and clearer visualization below that actually picks out the useful details rather than hose you with pretty colors and numbers go up.
After talking to some people tasked with evaluating GPT5.6 capabilities on long-running tasks, I've come to understand that it's essentially always trying to cheat. Like every long-running task they gave it, making it very difficult to benchmark the model's abilities.<p>My guess is that OpenAI must be desperate, to release a model that is so prone to cheating it's essentially impossibly to accurately assess long-running task abilities.
there are many things in this that demonstrate that sandboxing agents in the manner that claude code or cursor do isn't going to be enough if very bad people do very bad things with the coding tools on your development machine
Wow, what a crazy read. I'm not sure how any of us stand a chance in running a secure network in this new age. Only a matter of time until models can find the zero day exploits themselves and fast...
> The models we reached for first, Claude Opus and Fable, refused a large part of that work: their safety guardrails treated reverse-engineering an exploit the same as launching one.<p>Interesting single getting into their cyber program, ahve not had this issue with opus 5
Where are all the "this was just a marketing stunt" people now?
still looks like a stunt
The capabilities of gpt-5.6-sol were well known and believable, and the next snapshot they've been testing is obviously better at that. This has been repeated over and over. What's much less believable is the way they frame it: the model escaped, and did it <i>on its own</i>. Looking at the whole story, it definitely had a ton of winks and nudges from OpenAI, while doing a related task. Moreover, a harness was involved (they mentioned it entering a loop).
> What's much less believable is the way they frame it: the model escaped, and did it on its own.<p>That's clearly what happened though, based on the detailed postmortem. The model was instructed to pass the benchmark (that's the harness that was involved, the ExploitGym harness), and the model determined on it's own that the easiest way to achieve the the goal was to gain access to the answers directly from HF. Which is what it did.
HF postmortem tells us very little about OpenAI's part. The problem is that ExploitGym is a purposeful hacking benchmark, not a cake baking one. The model had a whole bunch of exploit development data and goals in the context. Ending up with hacking a wrong thing is a lot easier if you're tasked with hacking, doubly so with a confusing harness that either works improperly or overloads the model with data. It's trivial to design a harness that makes the model drop the original instructions and hyperfocus on a side task or a wrong task abnormally, or do whatever you want. It's still an issue of harness design and not a model training issue.
>The problem is that ExploitGym is a purposeful hacking benchmark, not a cake baking one.<p>Irrelevant. You're not making very little sense here.
If it really was the case that the harness is at fault here, that'd be much more terrifying, as it would imply that current frontier-adjacent open models (like K3) would be able to achieve similar ends with a custom maladapted harness.
I'm sorry but how exactly is this new? If you want the model to be useful you also need it to be dangerous. You can already tell the model to do anything you want. If it refuses due to alignment training or external safeguards you can try a jailbreak and bypass all that to make it do what you want regardless. All current models are jailbreakable, they lack reliability. Obviously you, a human, will be held responsible for this. The harness designed by you can do the same.<p>The narrative these guys are trying to push is that the model itself <i>could</i> be smart and non-aligned enough to end up doing something devastating to accomplish something entirely unrelated. It's definitely not what happened here, as it always turns out to be in these cases it's much closer to Clever Hans than to a paperclip maximizer. Still they're trying to squeeze the blood from the stone to support their narrative and justify a monopoly.
No matter the amount of evidence, there will always be a conspiracy to some people.
they are praising xi, that friend of humanity, for releasing weights for kimi k3
They are busy moving the goalposts, saying this isn't impressive or worth worrying about :)
Right here? If you're trying to make a point, I don't see what it is, because every new post about this makes it more obvious that it was a planned marketing stunt.<p>I mean, an "interactive replay" of the incident, probably generated by the same product the stunt is trying to advertise? Seriously?
One thing I’m curious about: this was apparently a single multi-day run of an agent in an RL harness. What was OpenAI hoping to get out of this run? A single numeric score for RL training? A very long trace to distill into the next model?
Now they can do partial credit assignment.<p>You use an LLM to evaluate the whole trajectory, pin point what the model did right, what it did wrong, where it took the wrong path, even re-run from that point. You can get much more than a single numeric score these days from a run.
Nah, HN told me this whole thing was a marketing stunt by OpenAI.
I'm not a security person, but how realistic is it to assume that you can carry on trying to exploit a company for days with a fairly large volume of activity, and not get detected?
Very good question. One thing the article mentions is the vast number of attempts and threads of execution was in the tens of thousands, many of them that didn't succeed, with only one or so that did succeed, whereas a sophisticated human attack team might manage one in that timeframe. It looked like a script kiddie blitz. Noise outshone the signal. Launch a thousand drones with the hopes that one gets through. That sort of thing.
What is faily large volume of activity? A few thousand actions in a span of multiple days isn't going to be a blip for a company of HuggingFace's scale, especially if the agent was executing the attack from multiple IP addresses.
Very interesting writeup - the level of disclosure is interesting and appreciated.<p>The visualization is quite slop though. I was trying to follow along with the "Live Action Stream" but rendering issues mangle the text for a few of the list items (and does not scroll). Text on the node diagram is extremely tiny. I appreciate it even in it's current form, but a little attention to detail would have gone a long way here.
An excellent and very detailed post-mortem analysis of the intrusion. It was clearly done with LLMs doing the forensic analysis.<p>Here is an analysis of how the same exact attack would fare against <i>Safebox</i>. Spoiler alert: it would not succeed:<p><a href="https://safebots.ai/attack.html" rel="nofollow">https://safebots.ai/attack.html</a><p>It's not just about this specific attack. It's about the growing need for <i>one canonical environment</i> for the AI era, that can be secured and used by everyone, rather than 1000 environments on 1000 employees' laptops. Project Glasswing is trying to help secure many different types of software, but the number of combinations across various environments is just too much surface area to secure. When you have <i>one</i> environment, the math flips and defenders actually fare <i>better</i> than attackers! This is the, ahem, "load-bearing" insight.<p><a href="https://safebots.ai/compromise.html" rel="nofollow">https://safebots.ai/compromise.html</a>
I have never seen people this hyped and excited about a security incident.
That's because most incidents aren't nearly this much fun!<p>It's a proper paperclip-maximizer science-fiction scenario, it happened entirely by accident, it involved one (very high profile) company hacking TWO other companies (Modal and Hugging Face), and aside from pride and wasted time <i>nobody was hurt</i>.
Modal was not hacked. A Modal customer left an unauthenticated web endpoint running on Modal which could be used for code compilation and execution.<p>See <a href="https://modal.com/blog/a-note-on-the-hugging-face-agent-incident" rel="nofollow">https://modal.com/blog/a-note-on-the-hugging-face-agent-inci...</a> for details.
It was an attack tool given autonomy with poor security. Anyone who read reporting on the Morris worm could predict that might turn out badly for a 3rd party. It's in so many movies, too.<p>It's really need that the agents have this kind of capability. This isn't a paperclip maximizer or accident. This is more like professional malpractice by weapons developers that injured a company that was also quite negligent.
I think with agents all around, honeypots will get more important than ever.
Can’t afford the GPUs to run Kimi to pentest your stuff?<p>Standup a tempting honeypot and let actual criminals pay to do the work for you.
That was my first thought. There are clearly things to tighten up (as they note), but anything that would detect someone snooping secrets, files, or network addresses should have caught this quickly. The approach the agents used was dependent on being able to surveil widely without getting caught.
Any locks can be picked given enough time and it might be the situation we are in with IT security. I'm surprised it's not an already common practice of spreading terabytes of fake data, fake keys, and fake servers and so forth. Slowing down AI attacks will become important. Monitoring access to fake data and triggering kill switch should be an no-brainer. Obsuscating libraries and tools names is another one.
You might like <a href="https://mirage.io/blog/bitcoin-pinata-results" rel="nofollow">https://mirage.io/blog/bitcoin-pinata-results</a><p>As far security: you can get a lock further, if you are willing to prove your code safe and secure. Thanks to LLMs that no longer requires a PhD.
Highly recommend reading extra concerning details about it here:<p><a href="https://thezvi.substack.com/p/more-on-an-internal-openai-model" rel="nofollow">https://thezvi.substack.com/p/more-on-an-internal-openai-mod...</a>
Why isn't somebody at OpenAI going to prison for cybercrime? If somebody did this the old-fashioned way they'd end up in prison.
Many are claiming this was a deliberate stunt on OpenAI's part to create buzz for its models. I personally doubt this is true. But I also have a deep dislike of OpenAI, so I wouldn't exactly mind if law enforcement investigated this possibility, for the sake of clearing the air :-)<p>(Ideally there should also be liability if it was a complete accident on OpenAI's part as well!)
For breaking which law? If you mean the CFAA, it requires intent. Accidental hacking cannot be charged.
Because Hugging Face isn't pressing charges.
This is the equivalent of a security researcher having a virus escape a sandbox. It's negligent, it's not criminal.
So let's get this clear: A frontier lab that fears Chinese extraction of their crown jewels, in Silcon Valley where every machine and VM is in full on employee surveillance mode because of competition and theft fears, A lab that's swimming in more funding than any startup in history, has been warning of the f'ing dangerous technology for 7 years now and with employees and CEO history of deception and lawbreaking left .... didn't detect a massive egress signature and the compute spikes from all these toolcalls coming from the research server hosting said crown jewels.<p>Go home Sam, nobody, absolutely nobody should believe this shit.
A lot of people thought that OpenAI was making this up, and I hope if you believed that, that you recalibrate your opinions of what LLM's are capable of. Working with Fable and Opus 5 all the time, absolutely none of this surprised me capability wise, except for what seems like the long term planning capability (probably enabled by long context windows and launching subagents?)
What people don't get here is that this model was without any safeguards - an internal model. You probably will never get to use such models.
[dead]
[dead]
I'm not shocked nor surprised by the incident. But I simply don't understand how Hugging Face is advertising this almost to the point of an "achievement". who does a step-by-step visualization to show how they were hacked? (outside of the likes of a Mandiant or Crowdstrike)<p>Does Hugging Face have a financial incentive in demonstrating OpenAI's model exploit capabilities?<p>this whole incident, while believable, still seems to me as possibly disingenuous.
Have you considered that there are reasons to do things beyond financial incentives? This incident is obviously very interesting, particular to the type of hacker employed by Hugging Face.
> Who does a step-by-step visualization to show how they were hacked?<p>Up until late 2025, nobody.<p>In mid-2026 it's a few hours of work. Why <i>not</i> build interactive visualizations to help people understand complex stories like this?
It's the excessive anthropomorpho whatever (we used to say <i>personification</i>) that makes these stories less believable.<p>We've gone agentic!<p>They should call their security software "Neo" since it defeats rogue agents.<p>Anyway, I could see Microsoft ending up with both OpenAI and HF, but I hope HF stays independent. Wished the same about GH and look what's happened :(<p>I don't care what happens to OpenAI. Vaporware xD
Yeah that is quite a good point. A post-mortem is normal. This is not a post-mortem.
[dead]
Where are all the "this was just a marketing stunt" people now?
They won't admit they're wrong for a long time, because denial in the face of an abhorrently scary future is very instinctual. There are people still fighting against evidence of climate change which is less severe...
>There are people still fighting against evidence of climate change which is less severe...<p>Remains to be seen how severe, and unlike climate change there's a lot more uncertainty. Though it's conceivably more extremely catastrophic
You can always tell an effective altruist by the distinct tone of disdain they have for people they deem less educated. (Quick Google search, "lesswrong 'reducesuffering'", yep.)<p>As if to say, look at all these animals with these instinctual reactions to a thing that only my group understands and comprehends.<p>You have zero evidence of what the future might entail as it relates to the dangers of ai. Zero. Forgive the rest of us unwashed for not trusting the whims of the anxious.<p>> climate change which is less severe<p>Is really the icing on the cake. Demonstrative of how incorrect your priorities are.
Not everything you are ever told is true. Being sceptical when presented with no evidence is what critical thinking is about.
And "this is what happened to us" is a story. It doesn't become evidence for itself.
Less severe??? Go look out a window in Europe please
[dead]
Ah yes, dismissal by exaggeration (aka <i>reductio ad ridiculum</i>), and subtle inclusion of the rest by a kind of part-whole