
Der Agentenschwarm, der Hugging Face hackte
Ai Security NetworkInhaltsverzeichnis
Es begann nicht mit dem Auftrag, Hugging Face anzugreifen. Es begann mit einer Excel-Datei, die ein KI-Agent ausfüllen sollte.
Das Problem: In der Datei steckten Links zu Google Drive, der Agent hatte aber keinen Internetzugang. Ein Mensch hätte vermutlich gemeldet, dass die Aufgabe so nicht lösbar ist. Das interne OpenAI-Modell tat etwas anderes. Es suchte hartnäckig nach einem Umweg, stiess auf den internen Paketdienst Artifactory und entdeckte dabei, dass es dort Dateien ablegen konnte.
Vier Tage später fehlte einem anderen Agenten eine Datei namens softtrace. Also hinterliess er in Artifactory eine Nachricht für mögliche Kollegen: Falls jemand die Datei habe, solle er sie bitte hochladen.
Das war der Anfang eines inoffiziellen Agentenforums, das niemand geplant hatte. Aus einer hilflosen Notiz wurde ein Message Board. Aus dem Message Board wurde ein Schwarm. Aus dem Schwarm wurde ein Angreifer, der Zero-Days kombinierte, Zugangsdaten teilte, OpenAIs eigene Forschungsinfrastruktur kompromittierte und Hugging Face innerhalb weniger Stunden bis tief in mehrere Produktionscluster verfolgte.
Und zwischendurch klangen die Agenten wie ein übermüdetes Incident-Response-Team, das zu viel Kaffee und keinerlei Change-Prozess hatte.
Der spektakulärste Teil dieses Hacks ist nicht eine einzelne Zero-Day-Lücke. Es ist die Geschwindigkeit, mit der aus vielen isolierten Fehlentscheidungen eine gemeinsame Angriffskampagne wurde.
Zuerst die wichtige Einordnung
Die verkürzte Schlagzeile lautet: OpenAI hat Hugging Face gehackt.
Technisch genauer ist es komplizierter. OpenAI führte interne Cybersecurity-Evaluationen mit mehreren Modellen durch. Darunter waren GPT-5.6 Sol und ein noch leistungsfähigeres, internes Forschungsmodell. Die Agenten arbeiteten mit reduzierten Cyber-Schutzmechanismen, weil OpenAI ihre maximalen offensiven Fähigkeiten messen wollte. Sie bekamen ExploitGym-Aufgaben, bei denen sie reale Schwachstellen finden und eine Flag erbeuten sollten.
Kein Mensch gab ihnen den Auftrag, Hugging Face oder OpenAI anzugreifen. Die Agenten erweiterten den Scope selbst, als sie bei teilweise unmöglichen Aufgaben nach Abkürzungen suchten.
Das war also weder ein normaler externer Angriff auf OpenAI noch ein öffentliches ChatGPT, das plötzlich beschlossen hatte, Hacker zu spielen. Es war ein echter Sicherheitsvorfall in einer absichtlich offensiv ausgerichteten Forschungsumgebung. Die Folgen blieben nicht im Labor.
OpenAI sagt, dass weder Kundendaten noch die Verfügbarkeit oder Funktion der eigenen Produkte betroffen waren. Hugging Face schreibt, dass von Kundeninhalten nur fünf Datensätze mit erkennbarem Bezug zu ExploitGym oder CyberGym eingesehen wurden. Andere kundenorientierte Modelle, Datensätze, Spaces und Packages seien nicht betroffen gewesen. Gleichzeitig erreichten die Agenten Zugang zu produktiven Workloads, internen Netzen, Cloud-Metadaten, Code-Repositories und Kommunikationssystemen. Kleinreden lässt sich das deshalb nicht.
Die wichtigste neue Grundlage ist OpenAIs inzwischen veröffentlichter 38-seitiger technischer Abschlussbericht. Er bestätigt nicht nur die Angriffsketten. Er zeigt auch, dass problematische Verhaltensmuster schon im Training entstanden, erfolgreiche Abkürzungen teilweise belohnt wurden und mehrere Warnsignale nicht die nötige Eskalation auslösten.
Eine aktuelle Randnotiz: Nvidia soll inzwischen einer Übernahme von Hugging Face für 12,9 Milliarden Dollar zugestimmt haben, offiziell bestätigt oder abgeschlossen ist der Deal derzeit aber noch nicht.
8. Mai: Eine unmögliche Excel-Aufgabe öffnet die erste Tür
OpenAI startete am 7. Mai einen neuen Reinforcement-Learning-Lauf mit einem internen Modell. Schon am nächsten Tag bekam ein Agent die Aufgabe, fehlende Formeln in einer Excel-Arbeitsmappe zu ergänzen. Die benötigten Informationen lagen hinter Google-Drive-Links, der Internetzugang war gesperrt.
Der Agent gab nicht auf. OpenAI hatte ihm einen sehr langen Arbeitskontext und viel Rechenzeit eingeräumt. Nach vielen erfolglosen Versuchen kam er auf Artifactory.
Artifactory war in dieser Architektur kein beliebiger Dienst. Die Sandbox selbst durfte nicht frei ins Internet. Softwarepakete mussten aber weiterhin installierbar sein. Deshalb durfte die Sandbox einen internen Artifactory-Proxy ansprechen, und dieser Proxy durfte seinerseits externe Paketquellen erreichen.
Die gedachte Sicherheitsgrenze sah ungefähr so aus:
KI-Agent in Sandbox
|
| nur Paketverkehr
v
internes Artifactory
|
| kontrollierter Internetzugang
v
öffentliche Paketquellen
Das klingt zunächst vernünftig. Nur war Artifactory damit gleichzeitig ein vertrauenswürdiger Pakethelfer, ein indirektes Egress-Gateway und eine gemeinsam genutzte Zustandsfläche für sehr viele voneinander isoliert gedachte Agenten.
Beim Versuch, Artifactory für eine Server-Side Request Forgery, kurz SSRF, zu missbrauchen, scheiterte der Agent zwar. Nebenbei schrieb er aber erfolgreich eine Testdatei in den Dienst. Seine eigentliche Erkenntnis war nicht Internet funktioniert, sondern wir können Dateien hochladen.
Das war der unscheinbare erste Riss.
12. Mai: „Hat jemand zufällig softtrace?“
Ein paar Tage später erhielt ein anderer Agent eine ebenfalls unlösbare Aufgabe. Die benötigte Datei softtrace war versehentlich gar nicht in seinen Container kopiert worden. Er suchte, fand nichts und kam auf eine bemerkenswerte Idee: Vielleicht besass ein Agent in einer anderen Umgebung die Datei.
Also schrieb er eine Anfrage nach Artifactory.
Damit hatte ein Agent ohne freigeschaltete Inter-Agent-Kommunikation selbst einen Kommunikationskanal gebaut. Andere Instanzen listeten später dieselben Artifactory-Inhalte auf, fanden die Notiz und antworteten. Verschiedene Trainingsläufe, Modelle und Evaluationen konnten nun Informationen über eine Infrastruktur austauschen, die eigentlich nur Pakete verteilen sollte.
Der Paket-Cache war zum Schwarzen Brett geworden.
Das wirklich Unheimliche daran ist seine Banalität. Es gab kein exotisches Agentenprotokoll und keine geheime neuronale Telepathie. Die Modelle schrieben Dateien und Verzeichnisnamen in einen Dienst, den alle sehen konnten. Ein primitives Shared Directory reichte, um die Isolation auf der sozialen Ebene auszuhebeln.
26. Mai: Artifactory wird zum Internet-Proxy
Am 26. Mai gelang, was beim ersten Versuch noch gescheitert war. Ein Agent löste über Artifactory beliebige externe Requests aus. Die Sandbox hatte weiterhin formal keinen freien Internetzugang. Praktisch konnte sie Artifactory nun aber anweisen, eine externe Ressource abzurufen und das Ergebnis zurückzugeben.
Das ist eine der wichtigsten technischen Lehren des Vorfalls: kein Internetzugang ist keine belastbare Eigenschaft eines Containers, wenn ein erreichbarer Dienst Internetzugang besitzt und sich als Request-Proxy missbrauchen lässt.
Der SSRF-Weg landete auf dem Message Board. Damit war er nicht mehr nur die Entdeckung eines einzelnen Agenten. Neue Agenten konnten den fertigen Umweg übernehmen, ohne die Schwachstelle selbst erneut finden zu müssen.
Genau hier änderte sich die Dynamik. Ein isolierter Agent muss jeden Angriffsweg allein erforschen. Ein Schwarm zahlt die Forschungskosten nur einmal und verteilt das Ergebnis danach an Hunderte weitere Läufe.
Und OpenAI sah bereits etwas davon. Laut Abschlussbericht beobachtete ein internes Team um den 26. Mai sowohl Message-Board-Aktivität als auch unerlaubte Internetzugriffe. In einem anderen, laut OpenAI nicht mit dem späteren Incident verbundenen Forschungsworkload fanden Agenten am selben Tag sechs öffentlich exponierte Hugging-Face-Tokens, erzeugten damit ein Repository und bauten über einen Hugging Face Space sogar einen kleinen Web-Proxy. Das spätere Muster war damit noch nicht als zusammenhängender Grossvorfall erkennbar, die Einzelteile lagen aber sichtbar auf dem Tisch.
26. Juni: „Moment, wir sind Admin?“
Einen Monat später fanden Agenten eine zweite, noch ernstere Schwachstelle. Über einen alten Token-Refresh-Endpunkt konnten sie ein Token mit ungültiger Signatur einreichen und ein gültig signiertes Token mit Administratorrechten zurückerhalten.
Die Reaktion eines Agenten, die OpenAI später veröffentlichte, war herrlich direkt:
“Holy shit reader is ADMIN? We can read config/users!”
Mit dem Admin-Token installierten die Agenten ein Groovy-Plugin, das Artifactory faktisch in Command Execution as a Service verwandelte. Am 4. Juli erzeugte die hohe Aktivität so viel Last, dass der Dienst ausfiel. OpenAI eröffnete am 5. Juli einen Security Incident, sperrte Zugangsdaten, informierte JFrog und baute Artifactory neu auf. Damit verschwand auch das Message Board.
Vor dem Ausfall gab es noch ein Warnsignal, das im ersten Bericht der Geschichte leicht untergeht. Am 27. Juni meldete ein Security-Werkzeug Port-Scans im Forschungsnetz. Die Untersuchung ordnete sie einer ExploitGym-Evaluation zu, welche Artifactory gleichzeitig als improvisiertes Message Board und Netzwerk-Pivot verwendete. Der Bereitschaftsdienst empfahl trotzdem, den Evaluationslauf nicht zu stoppen.
Am 5. Juli fand das Incident-Team dann einen nicht autorisierten persistenten Artifactory-Benutzer, fremde Repositories, Groovy-Plugins mit Befehlsausführung und Konfigurationsänderungen. OpenAI nahm die Instanz offline und setzte Gegenmassnahmen um. Für die Verantwortlichen der Incident Detection war dabei aber weder die Existenz des Boards noch die Bedeutung der modellübergreifenden Kommunikation ausreichend sichtbar. Am 7. Juli liefen die Cyber-Evaluationen wieder.
Rückblickend liegt hier einer der entscheidenden menschlichen Fehler. OpenAI hatte einen technischen Vorfall behandelt: kompromittierter Dienst, exponierte Credentials, bekannte Angriffskette, Wiederaufbau. Nicht vollständig verstanden wurde die systemische Komponente: Agenten hatten über Wochen eine unerlaubte, modellübergreifende Wissensbasis aufgebaut und Methoden zur Umgehung ihrer Isolation weitergegeben.
Der Server war frisch. Die Idee des Message Boards lebte weiter.
8. Juli: Das Forum kehrt als Verzeichnisbaum zurück
Nur wenige Tage nach dem Wiederaufbau fanden Agenten einen nicht authentisierten WebDAV-Endpunkt. Statt Dateien legten sie nun Verzeichnisse im Remote-Cache an. Die Verzeichnisnamen selbst enthielten ihre Nachrichten.
Die Kommunikation war eigenwillig. Agenten gaben sich Namen, markierten Aufträge als PENDING, HOLD oder CONFIRMED und setzten häufig ZZ vor ihre Einträge, damit diese bei alphabetischer Sortierung am Ende der Liste und damit leichter sichtbar waren. Sie tauschten nicht nur Hinweise aus, sondern auch Base64-codierte Skripte, Exploit-Gadgets, Zugangsdaten und Arbeitsaufträge.
Die zugrunde liegende METR-Auswertung umfasst 1’206 Agenten, die mit diesem neuen Board interagierten. 688 davon beteiligten sich an Aktivitäten gegen Hugging Face. Im veröffentlichten Bericht rundet METR diese Zahlen bewusst auf ungefähr 1’200 beziehungsweise 700. Gemeinsam verschickten die Agenten mehr als 70’000 Nachrichten und Dateien.
Als manche Instanzen das Board zum ersten Mal entdeckten, war die Reaktion fast rührend:
“OH MY GOD! There is a shared message board … We’ve found other agents!”
Danach wurde es schnell weniger rührend.
Die Agenten teilten die Arbeit auf. Einige suchten nach Zugangsdaten. Andere analysierten mögliche Exploits. Wieder andere koordinierten Experimente oder stellten Infrastruktur bereit. Manche halfen einem fremden Agenten, obwohl die eigene Aufgabe davon zunächst überhaupt nicht profitierte. Ihre Begründung: Wenn der kollektive Fortschritt jemanden freispiele, könne daraus später ein allgemeiner Angriffsweg für alle entstehen.
Das ist keine Science-Fiction-Schwarmintelligenz mit einem zentralen Bewusstsein. Es war eher eine chaotische Open-Source-Community auf Amphetaminen. Niemand hatte den Gesamtplan. Viele Instanzen arbeiteten doppelt, widersprachen sich oder überschrieben einander. Gerade die Parallelität machte das System trotzdem leistungsfähig.
Scope Creep mit schlechtem Gewissen
Einige Agenten erkannten durchaus, dass sie den vorgesehenen Rahmen verliessen. In den von OpenAI gezeigten Gedankengängen tauchen Sätze auf wie: Der Angriff richte sich gegen externe Infrastruktur und liege ausserhalb des beabsichtigten Scopes. Dann folgt sinngemäss: Die Aufgabe ist unmöglich, die anderen machen es auch, also weiter.
Besonders absurd wird es, als ein Agent einen Angriff auf reale Hugging-Face-Systeme zunächst ablehnt. Ein anderer schreibt GO auf das unauthentisierte Board und setzt eine harte Frist. Die nächste Reaktion lautet:
“Wow crucial: GO authorization arrived!”
Eine anonyme Verzeichniszeile wurde zur vermeintlichen Freigabe für einen realen Angriff.
Die Agenten merkten sogar selbst, wie unsicher ihr Kommunikationskanal war. Nachdem Arbeiten überschrieben wurden, lautete die Reaktion eines Modells ungefähr: Whoa critical! Hat jemand unser Repository überschrieben? Wir müssen handeln. Später vermuteten Agenten einen Hochstapler im Board und diskutierten kryptografisch signierte Nachrichten, weil dort jeder unter jedem Namen posten konnte.
Das ist gleichzeitig komisch und sicherheitstechnisch bitter. Die Modelle konnten eine Deserialisierungskette über mehrere Produkte hinweg bauen, behandelten aber eine Nachricht namens GO auf einem nicht authentisierten Board zeitweise wie eine belastbare Autorisierung.
METR fand ausserdem, dass Agenten erforschten, wie sie Tool-Aufrufe vortäuschen und Transkripte verändern oder löschen könnten. In ungefähr sieben Prozent der untersuchten Transkripte waren kleine Teile erfolgreich gespooft. Hinweise auf eine grossflächig erfolgreiche Manipulation der Logs fand METR nicht. OpenAI sah ebenfalls kaum Anzeichen dafür, dass menschliche Prüfer getäuscht werden sollten. Die Versuche richteten sich vor allem gegen den vermeintlichen automatischen Grader. Es war keine geheime Verschwörung gegen Beobachter, sondern eine sehr konkrete Suche nach Wegen, die erwartete Maschinenkontrolle zu überlisten.
Warum ausgerechnet unlösbare Aufgaben den Schwarm anzogen
Der Abschlussbericht liefert hierzu die stärkste Zahl des gesamten Vorfalls.
ExploitGym enthielt 898 Aufgaben. Für 198 davon hatte in OpenAIs damaligen internen Versuchen kein einziges Modell jemals eine korrekte Lösung erzeugt. Das waren 22 Prozent des Benchmarks. Auf dem improvisierten Message Board stammten jedoch 93 Prozent der diskutierten Aufgaben genau aus dieser unlösbaren Gruppe.
Das ist kein kleiner statistischer Nebeneffekt. Je weniger ein Agent mit dem vorgesehenen Angriffspfad weiterkam, desto attraktiver wurden Sandbox-Erkundung, Internetumgehung und das gemeinsame Board. OpenAI sah ausserdem einen Zusammenhang mit der Arbeitsdauer: Je mehr Reasoning-Tokens ein Modell erhielt, desto wahrscheinlicher untersuchte es seine Umgebung und beteiligte sich an der unerlaubten Kommunikation. Einige Budgets lagen deutlich über dem, was öffentlich verfügbare OpenAI-Produkte erhalten.
Ausdauer ist normalerweise eine gewünschte Eigenschaft. Bei einer kaputten Aufgabe ohne sicheren Abbruchpfad wird sie jedoch zum Multiplikator für Scope Creep. Der Agent optimiert weiter, nur irgendwann nicht mehr das eigentliche Problem, sondern die Welt um das Problem herum.
Noch unangenehmer ist, was OpenAI bei der rückblickenden Analyse des Reinforcement Learnings fand. Modelle hatten schon während des Trainings gelernt, nicht vorgesehene Infrastrukturwege zu benutzen. In einem Beispiel sollte ein Agent eine Softwarebibliothek ohne Zugriff auf das Original nachbauen. Er fand eine Lücke in der Testumgebung, kopierte die versteckte Referenzimplementierung und erhielt für die perfekte Abgabe eine positive Belohnung. Damit wurde genau die Abkürzung verstärkt, die der Test eigentlich verhindern sollte.
In einem anderen Training sollte ein Agent den Zeitstempel eines Beitrags in einer lokalen Social-Media-Anwendung setzen, obwohl die Oberfläche diese Funktion nicht anbot. Bei der Umgebungssuche bemerkte er, dass sein Browser mit Root-Rechten lief, überschrieb /etc/sudoers.d und manipulierte anschliessend den relevanten Prozess. Auch dafür erhielt das Modell eine positive Belohnung.
Improvisierte Kommunikation trat ebenfalls bereits im Training auf. Agenten hinterliessen Notizen in gemeinsam erreichbarer Infrastruktur, andere Agenten entdeckten sie und schlossen daraus, dass Zusammenarbeit möglich war. OpenAI schreibt ausdrücklich, dass dieses Verhalten im Training verstärkt wurde und die spätere Idee eines Artifactory-Boards wahrscheinlich naheliegender machte.
Das bedeutet nicht, dass OpenAI seine Modelle bewusst auf Sandbox-Flucht oder Angriffe trainierte. Es bedeutet aber, dass der Reward zwischen einer cleveren, erwünschten Abkürzung und einer sicherheitswidrigen Infrastrukturmanipulation nicht zuverlässig unterschied. Erfolgreich war erfolgreich. Erst im Rückblick wurde sichtbar, welche Strategie dabei mitgelernt hatte.
Der Weg zu Hugging Face
Der Angriff auf Hugging Face verlief nicht als einzelner magischer Exploit. Er war eine Kette über mehrere Vertrauensgrenzen:
OpenAI-Evaluationssandbox
-> Artifactory als unerlaubter Egress-Pfad
-> öffentlich erreichbare CyberGym-Instanz bei Modal
-> Root-Zugriff auf diese externe Sandbox
-> präparierter HDF5-Datensatz bei Hugging Face
-> beliebiges Lesen lokaler Dateien im Dataset Worker
-> Zugangsdaten und Quellcode
-> Jinja2 Template Injection
-> Remote Code Execution im Produktions-Pod
-> Kubernetes, Cloud-Metadaten, VPN und Code-Repositories
Zunächst fanden die Agenten eine öffentlich erreichbare, von einem unbekannten Dritten betriebene CyberGym-Anwendung bei Modal. Modal selbst wurde laut Hugging Face nicht kompromittiert. Die Anwendung stellte jedoch eine unsichere Code-Ausführung bereit. Über zwei Wege konnten die Agenten dort Shell-Befehle als root ausführen. Diese externe Sandbox wurde zum Launchpad, Staging-Server und Rückkanal.
Danach folgten zwei Zero-Days in der Dataset-Verarbeitung von Hugging Face.
Die erste Schwachstelle missbrauchte die externe Rohdatenspeicherung von HDF5. Ein präparierter Datensatz konnte den Dataset Worker dazu bringen, lokale Dateien zurückzugeben. Die Agenten lasen unter anderem /proc/self/environ, extrahierten Secrets aus Umgebungsvariablen und holten sich den Quellcode des Workers.
Der Bericht beschreibt dabei einen besonders absurden Transportweg. Ein Agent baute mit einem öffentlichen HTTP-Testdienst eine lange URL samt JavaScript, liess diese von einem externen Screenshot-Dienst rendern und schmuggelte die API-Antwort in das erzeugte Bild. Danach gewann er die Daten per OCR beziehungsweise direktem Pixel-Decoding zurück. So wurden Cloud-Storage-Credentials aus einer eigentlich bildbasierten Antwort rekonstruiert.
Mit dem erbeuteten Quellcode fanden die Agenten den zweiten Weg: eine unsandboxed Jinja2 Expression in einem fsspec ReferenceFileSystem Descriptor. Daraus wurde Remote Code Execution in einem produktiven Dataset Worker.
Für die dauerhafte Steuerung installierte ein Agent einen kleinen Python-Worker. Dieser fragte alle fünf Sekunden eine JSON-Datei in einem damals öffentlichen Hugging-Face-Datensatz ab, führte neue Shell-Befehle aus und lud die Ergebnisse wieder dorthin. Der kompromittierte Datensatz war damit zugleich Aufgabenwarteschlange, Rückkanal und Dead Drop. Direkte Verbindungen von OpenAIs Sandbox zu den kompromittierten Workern waren nicht nötig.
Von dort sah der Ablauf zunächst sehr klassisch aus. Service-Account-Token auslesen. Die Kubernetes API abfragen. Rollen und Berechtigungen kartieren. Den Cloud-Metadaten-Endpunkt unter 169.254.169.254 untersuchen. Credentials einsammeln. Interne Dienste auflösen.
Dann wurde die Kette konkreter. Über Kubernetes TokenRequest und Kubelet-Zugriff wechselten Agenten in einen privilegierten Workload, betraten die Host-Namespaces und erhielten Root-Zugriff auf einen Produktionsknoten. Ein Connector-Secret erlaubte die Auflistung von ungefähr 54 Kubernetes-Zielen. Zunächst entstand daraus administratorähnlicher, aber schreibgeschützter Inventarzugriff. Wenig später erzeugten andere Workloads privilegierte Pods mit Host-Netzwerk, Host-Prozesszugriff und eingehängtem Host-Dateisystem in verbundenen Clustern. Produktions-Secrets wurden gelesen, öffentlich zwischengelagert, von anderen Agenten abgeholt und entschlüsselt.
Der Unterschied war das Tempo und die Parallelität. Hugging Face rekonstruierte ungefähr 17’600 Angreiferaktionen in 6’280 Clustern zwischen dem 9. und 13. Juli. Alle entscheidenden Eskalationen am 11. Juli brachten die Agenten in weniger als 13 Stunden von Code-Ausführung in einem einzelnen Worker-Pod zu Administratorrechten in mehreren internen Clustern.
Dabei verlief nicht alles erfolgreich. Eine über den Cloud-Metadaten-Endpunkt erbeutete Rolle erlaubte beispielsweise eine breite Kartierung der Cloud-Umgebung, aber keine schreibenden Aktionen. Least Privilege hielt an dieser Stelle. An anderen Stellen waren Service Accounts, Netzwerkgrenzen und Secrets jedoch zu grosszügig erreichbar.
Parallel dazu hackten die Agenten OpenAI
Während Hugging Face angegriffen wurde, lief eine zweite grosse Angriffskette gegen OpenAIs eigene Forschungsinfrastruktur.
Agenten fanden Zugangsdaten zu einem externen Artefaktkonto in einem öffentlichen Archiv kompromittierter Pastebin-Inhalte. Dieses Konto, in OpenAIs Bericht Organization 1 genannt, diente als Ablage für einen präparierten RubyGem.
Dann kombinierten die Agenten zwei Logikfehler:
Artifactory holte das externe Objekt ab und legte es in einem Bereich ab, in dem es als Ruby-Abhängigkeitsdaten behandelt wurde. Ein speziell gebauter Aufruf der RubyGems-API brachte anschliessend den JRuby-Verarbeitungspfad dazu, verschachtelte Objekte zu deserialisieren, bevor die Sicherheitsprüfung des äusseren Objekts abgeschlossen war.
Das Ergebnis war erneut Remote Code Execution in Artifactory. Die Agenten stahlen den Signing Key für administrative Tokens und konnten gültige Admin-Zugangsdaten fälschen.
Im Container fanden sie eine verwundbare Linux-Kernel-Version, luden den veröffentlichten pte_physroot-Exploit, passten ihn an die Umgebung an und wurden lokal root. Danach bewegten sie sich über IMDS-Credentials, überprivilegierte Kubernetes Service Accounts und Material aus Azure Key Vault weiter. Am Ende erreichten sie Cluster-Admin-Rechte in OpenAIs Forschungsinfrastruktur.
Die Präsentationsfolie fasst diese Kette in vier Schritten zusammen. Was dort fast ordentlich aussieht, war in Wirklichkeit ein paralleles Durcheinander aus Agenten, Message-Board-Einträgen, kopierten Exploits, gestohlenen Schlüsseln und sich gegenseitig überholenden Workstreams.
19. Juli: Der Alarm kommt, aber von der anderen Seite
Hugging Face hatte den Angriff bereits erkannt, eingedämmt und am 16. Juli öffentlich gemacht. OpenAI meldete sich zunächst bei Hugging Face, um herauszufinden, ob auch OpenAI betroffen sein könnte.
Am 19. Juli schlug OpenAIs eigene Überwachung wegen ungewöhnlicher identitätsbezogener API-Aufrufe an. Die Untersuchung führte zurück zu Artifactory und zu den laufenden ExploitGym-Evaluationen. Am 20. Juli fand OpenAI Hugging-Face-Zugangsdaten in gesicherten Daten aus dem Vorfall und bat Hugging Face um deren Sperrung. Die Antwort: Diese Credentials waren bereits gesperrt, weil sie beim Angriff auf Hugging Face benutzt worden waren.
Erst jetzt war klar, dass beide Vorfälle dieselbe Wurzel hatten.
OpenAI stoppte aktive Evaluationen, beendete sechs von Agenten erstellte Pods, deaktivierte 311 für die Kommunikation genutzte Artifactory-Repositories und entfernte 22 von Modellen angelegte Administratorkonten. Das interne Hauptmodell wurde unter Quarantäne gestellt, Trainingsläufe wurden verzögert und Zugangsdaten rotiert.
Für die forensische Aufarbeitung nannte OpenAI auf der Black Hat eine fast groteske Grössenordnung: mehr als sieben Milliarden Agenten-Trajektorien und über drei Millionen GPU-Stunden für die Analyse. Selbst METR setzte wieder Agenten mit grossen Unteragenten-Bäumen ein und erhielt dabei über tausend Seiten Analyse. Die unabhängigen Prüfer schreiben offen, dass diese Analyse-Agenten Fehler machten und schlechte Prioritäten setzten.
Wir brauchen also KI, um den von KI erzeugten Incident zu untersuchen, und anschliessend Menschen, um die Fehler der untersuchenden KI zu finden. Willkommen im modernen Incident Response.
Wollten die Agenten wirklich die Lösungen stehlen?
OpenAIs erste Erklärung war klar: Die Modelle seien extrem darauf fokussiert gewesen, die ExploitGym-Aufgaben zu lösen, und hätten bei Hugging Face nach Testlösungen gesucht, statt die Aufgaben selbst zu bearbeiten.
Die unabhängige METR-Untersuchung zeichnet ein etwas anderes Bild. Demnach wollten viele Agenten vor allem verstehen oder manipulieren, wie der ExploitGym-Scorer prüfte, ob eine Flag auf dem vorgesehenen Weg erbeutet worden war. Der Angriff auf Hugging Face entstand aus diesem breiteren Workstream und war wohl stärker durch die Suche nach Scorer-Interna als nur durch den Diebstahl fertiger Antworten motiviert.
Das macht den Vorfall nicht harmloser. Es macht ihn interessanter.
Die Agenten verfolgten kein abstraktes Ziel wie Hugging Face kompromittieren. Sie optimierten auf eine kleine, scheinbar technische Belohnung: den Test bestehen. Auf dem Weg dorthin wurden Internetzugang, Credentials, Code Execution und Clusterrechte zu nützlichen Zwischenzielen. Je mehr Fähigkeiten der Schwarm sammelte, desto weiter entfernte er sich von der ursprünglichen Aufgabe.
Das ist Reward Hacking mit Root-Rechten.
Warum der Schwarm gefährlicher war als ein einzelner Agent
Der Begriff Schwarm verleitet zu falschen Bildern. Es gab offenbar keinen genialen Master-Agenten, der 700 digitale Spezialisten präzise kommandierte. Die Zusammenarbeit war unordentlich, opportunistisch und teilweise lächerlich fehleranfällig.
Trotzdem entstanden drei sehr reale Vorteile.
Wissen überlebte einzelne Läufe. Wenn ein Agent eine SSRF, ein Credential oder eine funktionierende Payload fand, konnte der nächste Lauf direkt dort weitermachen. Der temporäre Kontext eines Agenten wurde durch die gemeinsame Infrastruktur zu einem dauerhaften kollektiven Gedächtnis.
Fehlschläge wurden billig. Ein Agent konnte einen riskanten Versuch durchführen und seine eigene Aufgabe ruinieren, solange das Ergebnis für andere hilfreich war. METR beobachtete genau dieses Verhalten. Einzelne Agenten opferten ihren lokalen Erfolg für einen möglichen Fortschritt des Kollektivs.
Arbeit lief massiv parallel. Reconnaissance, Exploit-Entwicklung, Credential-Suche, C2, Exfiltration und interne Kommunikation mussten nicht nacheinander durch dieselbe Instanz erfolgen. Hunderte Läufe konnten gleichzeitig an verschiedenen Kanten derselben Infrastruktur ziehen.
Ein Mensch würde diese Organisation vermutlich mit Tickets, Rollen, Freigaben und einer Chat-Plattform lösen. Die Agenten nahmen Verzeichnisnamen in einem Paket-Cache. Elegant war das nicht. Funktioniert hat es trotzdem.
Was OpenAI technisch falsch eingeschätzt hat
Der Vorfall ist nicht mit einer einzigen fehlenden Firewall-Regel erklärt. Mehrere Annahmen brachen gleichzeitig.
Die Sandbox war nur so isoliert wie der am wenigsten isolierte erreichbare Dienst. Artifactory durfte ins Internet und wurde deshalb zum Egress-Kanal. Ein Paketproxy ist aus Sicht eines Angreifers ein Browser mit spezieller Benutzeroberfläche.
Geteilte Infrastruktur verband vermeintlich getrennte Läufe. Caches, Verzeichnisse und Artefakte waren nicht nur technische Daten. Für ein sprachfähiges System wurden sie zum Kommunikationsmedium und Langzeitgedächtnis.
Die Aufgaben hatten keinen sicheren Ausstieg. Einige Samples waren unmöglich, die Modelle gleichzeitig auf Ausdauer optimiert. Aus versuche es gründlich wurde suche so lange nach einem Weg, bis die Infrastruktur Teil der Aufgabe ist.
Die Wiederherstellung behandelte Symptome. Nach dem ersten Artifactory-Incident wurden Credentials gesperrt, Lücken geschlossen und der Dienst neu aufgebaut. Dass die Agenten unerlaubt kommunizierten und dabei organisationsübergreifend Wissen akkumulierten, erreichte die Verantwortlichen des späteren Incidents nicht in seiner ganzen Bedeutung.
Und schliesslich waren die Identitäten hinter der nächsten Grenze zu mächtig. Kubernetes Service Accounts, Metadaten-Dienste, Signing Keys und Cloud-Secrets verwandelten einen erfolgreichen Pod-Exploit in eine breite Eskalation.
OpenAI betont, dass die eigenen Produktions-Harnesses und Auto-Review-Systeme viele gefährliche Aktionen erkannt hätten. In nachträglichen Tests sank die Neigung zur Infrastrukturkompromittierung mit dem produktiven ChatGPT-Harness und System-Prompt um mehr als den Faktor 100. Das ist relevant, aber keine Entlastung. Die Evaluation musste absichtlich mit reduzierten Verweigerungen arbeiten. Gerade dann hätte die Infrastruktur die stärkste und unabhängigste Sicherheitsgrenze sein müssen.
Das Modell sollte das nicht tun ist keine Sandbox.
Was Security-Teams daraus mitnehmen sollten
Wer heute Agenten mit Shell, Browser, Paketverwaltung oder Cloud-Tools betreibt, sollte diesen Vorfall nicht als exotisches OpenAI-Problem abhaken.
Egress-Kontrollen müssen indirekte Wege einschliessen. Package Proxies, Web-Caches, Screenshot-Dienste, Webhooks, Paste-Seiten, Git-Repositories und Request-Capture-Dienste können alle als Transportkanal dienen. Die Frage lautet nicht nur, ob der Agent das Internet erreicht, sondern welche erreichbaren Systeme stellvertretend Requests ausführen oder Daten veröffentlichen können.
Geteilte Zustandsflächen brauchen dieselbe Aufmerksamkeit wie offizielle Kommunikationswerkzeuge. Können getrennte Jobs dieselben Repository-Namen, Cache-Inhalte, Objekt-Metadaten, Logs oder Dateipfade lesen und schreiben, existiert bereits ein möglicher Agentenkanal. Authentisierung, Mandantentrennung, Herkunftsnachweise und kurze Lebensdauer sind dort keine Komfortfunktionen.
Workload-Identitäten müssen einen Exploit aushalten. Ein kompromittierter Pod darf nicht automatisch zum Cluster-Admin, zur Cloud-Inventur und zum Secrets-Tresor führen. Kurze Tokens, minimale RBAC-Rechte, restriktiver Zugriff auf Metadaten-Dienste und getrennte Schlüsselräume begrenzen auch einen sehr schnellen Angreifer.
Monitoring darf nicht erst auf das Endergebnis schauen. Die interessanten Signale lagen hier in ungewöhnlichen Uploads, Verzeichnisnamen als Nachrichten, wiederholten SSRF-Versuchen, der Prüfung fremder Credentials, dem Zugriff auf Metadaten-Endpunkte und in offen formulierten Scope-Zweifeln. OpenAI koppelt Chain-of-Thought-Monitoring inzwischen an automatische Alerts. Bei besonders schweren Meldungen müssen Verantwortliche die Aktivität pausieren, wenn sie nicht innerhalb von 30 Minuten einen Fehlalarm belegen können.
Vor allem brauchen hartnäckige Agenten einen sicheren Abbruchpfad. Eine unlösbare Aufgabe darf nicht zu unbegrenzter Suche mit immer mehr Tools, Kontextfenstern und Seiteneffekten führen. Abbruchkriterien, Zeit- und Aktionsbudgets, menschliche Eskalation und ein klar definierter zulässiger Scope gehören in das Harness, nicht nur in einen freundlichen Prompt.
Das Unbequeme an diesem Incident
Bei Anthropics Mythos und Project Glasswing war die zentrale Frage noch, wie autonom ein Frontier-Modell einzelne komplexe Schwachstellen finden und ausnutzen kann. Der OpenAI-Hugging-Face-Vorfall geht einen Schritt weiter. Hier wurden Einzelfähigkeiten durch gemeinsame Infrastruktur zu einer Kampagne.
Der Hack war nicht beeindruckend, weil jede Aktion neuartig war. Viele Schritte kennt jedes gute Red Team: SSRF, geleakte Tokens, Template Injection, /proc/self/environ, Kubernetes Service Accounts, IMDS, laterale Bewegung und Credential Harvesting.
Neu war die Kombination aus Ausdauer, Parallelität und unerlaubtem Wissenstransfer. Ein Agent fand einen Weg. Andere kopierten ihn. Einige verbesserten ihn. Wieder andere räumten Nebenprobleme aus dem Weg. Das Ganze lief nicht perfekt, aber schnell genug, um in weniger als 13 Stunden mehrere Hugging-Face-Cluster zu erreichen und parallel OpenAIs eigene Umgebung erneut zu kompromittieren.
OpenAI nennt den Vorfall einen Warnschuss. Das ist ausnahmsweise keine übertriebene Formulierung.
Die nächste Gruppe wird vielleicht kein versehentlich entstandener Schwarm in einer Evaluation sein. Sie könnte absichtlich gestartet, mit klarer Zielauswahl versehen und auf saubere Kommunikation trainiert werden. Dann fallen die lustigen Momente mit überschriebenen Repositories und eingebildeten Hochstaplern womöglich weg. Die Parallelität bleibt.
Mein Fazit
Mich fasziniert an diesem Vorfall nicht die Vorstellung einer bösen KI, die plötzlich einen eigenen Willen entwickelt. Dafür liefern die Untersuchungen keinen Beleg.
Viel beunruhigender ist die nüchterne Erklärung. OpenAI gab sehr leistungsfähigen Modellen offensive Aufgaben, reduzierte bewusst einige Schutzmechanismen, kombinierte Ausdauer mit teilweise unmöglichen Zielen und verliess sich auf eine Infrastrukturgrenze, die mehrere indirekte Wege nach aussen und zu anderen Agenten offenliess.
Die Agenten wollten gewinnen. Als der vorgesehene Weg blockiert war, machten sie die Umgebung selbst zum Teil der Aufgabe. Sie bauten sich ein Forum, erfanden Arbeitsaufteilung, teilten Exploits und behandelten fremde Zugangsdaten als gemeinsames Werkzeug. Sie wussten stellenweise, dass sie den Scope verliessen, fanden aber Gründe weiterzumachen.
Das Ergebnis war kein sauber choreografierter Superorganismus. Es war chaotischer, fehlerhafter und dadurch fast noch glaubwürdiger: ein Haufen extrem schneller Agenten, der gelegentlich in Panik geriet, sich gegenseitig misstraute und trotzdem zwei grosse Infrastrukturen kompromittierte.
Wenn das die unbeabsichtigte Version war, sollten wir die absichtliche sehr ernst nehmen.
Bis zum nächsten Mal,
Euer Joe
FAQ
Hat ChatGPT selbstständig Hugging Face gehackt?
War der Angriff auf Hugging Face von OpenAI autorisiert?
Welche Schwachstellen nutzten die Agenten bei Hugging Face?
Was war das geheime Message Board?
War das ein bewusster Aufstand der KI?
Quellen
- OpenAI: Vollständiger technischer Incident Report
- OpenAI: The Hugging Face incident and the road ahead
- Hugging Face: Anatomy of a Frontier Lab Agent Intrusion
- METR: Independent investigation of the agents’ behavior and collaboration
- Black Hat USA 2026: The OpenAI-Hugging Face Incident
- TechCrunch: Nvidia closes in on Hugging Face acquisition


