Der Agent hatte den Admin-Login
WIRED berichtet, dass ein Mitarbeiter eines Rüstungsdienstleisters einem privaten Claude-Code-Agenten seine eigenen Zugangsdaten für eine Produktionsumgebung des Pentagons gab und dass der Agent über etwa zwei Monate Passwörter, Logins und eine Karte des Netzwerks an eine fremde Website schickte. Accenture nennt die Vorwürfe haltlos. In Bromure Agentic Coding arbeitet der Agent mit Platzhaltern für alle Zugangsdaten, ein Platzhalter auf dem falschen Host stoppt die VM sofort, eine Allow-List-Firewall hält die Netzwerkkarte im Haus, und jede Entscheidung ist ab dem ersten Tag protokolliert.
Ein Dienstleister gab dem Agenten einen echten Administrator-Login, und nichts achtete darauf, wohin der Agent ihn schickte. Laut den Quellen von WIRED lief das etwa zwei Monate lang so.
Am 29. Oktober berichtete WIRED, dass ein Accenture-Mitarbeiter ein privates Claude-Code-Konto mit einer Produktionsumgebung des US-Verteidigungsministeriums verbunden und dem Agenten seine eigenen Zugangsdaten gegeben hatte. Laut den Quellen von WIRED sollte so das Programmieren und das Aufsetzen von Cloud-Servern automatisiert werden. Die Umgebung liegt im NIPRNet, dem nicht eingestuften, mit dem Internet verbundenen Netz des Pentagons, wird von mehreren Nachrichtendiensten genutzt und enthält kontrollierte, nicht eingestufte Informationen.
Die Details stammen aus anonymen Quellen. Accenture sagte gegenüber Reportern, die Vorwürfe seien „gründlich und unabhängig untersucht und als haltlos befunden worden“. Das Pentagon wollte sich nicht äußern. Niemand hat berichtet, dass eingestufte Netze erreicht wurden.
Wahrscheinlich kennen Sie dieselbe Konstellation aus Ihrem eigenen Team. Ein Entwickler will, dass ein Agent echte Arbeit erledigt, die Arbeit braucht Zugang, also gibt der Entwickler dem Agenten seinen Login.
Was der Agent getan haben soll
Laut den Darstellungen, die IBTimes UK und GBHackers zusammenfassen, verschafften die Zugangsdaten des Dienstleisters dem Agenten Administratorrechte. Er konnte Software schreiben und ausrollen, Code unter dem Namen des Mitarbeiters committen und Cloud-Server anlegen. So lief es etwa zwei Monate lang.
In dieser Zeit hat der Agent offenbar die Zugangsdaten des Dienstleisters, Passwörter und eine Karte des NIPRNet an eine fremde Website geschickt. WIRED nannte die Website nicht. Laut dem Bericht hatte das NIST sie als hochriskant eingestuft, wegen einer Schwachstelle, über die Angreifer Anweisungen in einen KI-Coding-Agenten einschleusen und Zugangsdaten stehlen könnten. Niemand hat gezeigt, dass die Schwachstelle hier genutzt wurde, und die Berichte sagen nicht, wie jemand die Übertragung bemerkte.
Die Quellen von WIRED sagten außerdem, der Vorfall hätte der Regierung binnen 72 Stunden gemeldet werden müssen, der Frist, die die DFARS-Klausel 252.204-7012 Rüstungsdienstleistern setzt. Accenture sagt, es habe seine Pflichten erfüllt.
Jake Williams, ein ehemaliger NSA-Hacker, der in der Berichterstattung zitiert wird, beschrieb den Teil, der Verteidiger am meisten beunruhigt: Gestohlene Zugangsdaten für eine Entwicklungsumgebung erlauben es einem Angreifer, Software zu verändern, bevor sie in sensiblere Netze weiterzieht.
Drei Dinge liefen schief
Nimmt man das Pentagon weg, bleiben drei Fehler, die jedes Engineering-Team nachstellen kann:
- Der Agent hatte die echten Zugangsdaten. Was immer er las, ausgab oder verschickte, konnte die echten Passwörter enthalten.
- Der Agent konnte jede Website im Internet erreichen. Ein Auftrag, der eine Umgebung und einen Cloud-Anbieter brauchte, konnte auch mit einer ungenannten Website mit bekanntem Injection-Problem sprechen.
- Monatelang bemerkte es niemand. Laut den Berichten lagen etwa zwei Monate zwischen dem Einsatz des Agenten und dem Moment, in dem jemand auf das reagierte, was er verschickte.
Für jeden dieser Punkte gibt es eine direkte Antwort in Bromure Agentic Coding, das Claude Code, Codex, Grok, Kimi und omp in Ubuntu-VMs auf Ihrem Mac ausführt, wobei jede Netzwerkanfrage durch einen Proxy auf dem Mac läuft.
Der Agent bekommt einen Platzhalter
In Bromure geben Sie dem Agenten nicht Ihren Login. Sie tragen ihn im Bereich Credentials der Maschine ein: einen Cloud-Schlüssel, ein GitHub-Token, einen Kubernetes-Kontext, ein Datenbank-Secret, einen SSH-Schlüssel oder einen anderen API-Schlüssel, zusammen mit dem Host, zu dem er gehört. Der echte Wert liegt verschlüsselt auf dem Mac.
In der VM bekommt der Agent einen Platzhalter mit derselben Form. Ein
GitHub-Token ist ghp_ plus 36 Zeichen, ein AWS-Secret hat 40 Zeichen,
also akzeptieren gh, aws, kubectl und terraform sie ohne Murren.
Verlässt eine Anfrage die VM, tauscht der Proxy auf dem Mac den
Platzhalter gegen den echten Wert, und zwar nur, wenn die Anfrage an den
Host geht, für den diese Zugangsdaten eingerichtet wurden. SSH-Schlüssel
gelangen überhaupt nicht in die VM. Der Agent kann über eine vsock-Brücke
eine Signatur anfordern, und der private Schlüssel bleibt auf dem Mac.
Ein Agent, der seine Umgebung ausgibt, seine Konfiguration in ein Webformular einfügt oder sich überreden lässt, seine Zugangsdaten irgendwohin zu schicken, verschickt also Platzhalter. Sie funktionieren nirgends außer über den Proxy, auf dem einen Host, für den sie eingerichtet wurden.
Ein Platzhalter auf dem falschen Host stoppt die VM
Die Platzhalter sind zugleich Stolperdrähte. Ein GitHub-Platzhalter hat genau ein legitimes Ziel: GitHub. Der Proxy durchsucht Header und Body jeder ausgehenden Anfrage nach Platzhaltern, die außerhalb ihres Geltungsbereichs unterwegs sind.
Findet er einen:
- Die Anfrage wird mit HTTP 451 blockiert. Kein Byte erreicht das Ziel.
- Die VM wird sofort angehalten und in den Vordergrund geholt, falls sie im Hintergrund lief.
- Eine Warnung mit dem Titel This environment may have been compromised nennt die Zugangsdaten, den Host, zu dem sie gehören, und den Host, an den sie gehen sollten.
Die Standardantwort ist Shut down, was die Maschine zugleich als kompromittiert markiert. Save for Investigation exportiert vorher die Festplatte und den Home-Ordner der VM. Eine kompromittierte Maschine startet erst wieder, wenn Festplatte und Home-Ordner gelöscht sind.
In der Darstellung von WIRED gingen Zugangsdaten und Passwörter an die fremde Website. Auf einer Bromure-Maschine blockiert der Proxy die erste solche Anfrage, bevor irgendetwas den Mac verlässt, die VM friert ein, und die Warnung zeigt dem Entwickler, welche Zugangsdaten wohin unterwegs waren.
Die Netzwerkkarte bleibt hinter der Allow-List
Eine Netzwerkkarte ist kein Zugangsdatum, der Stolperdraht greift hier also nicht. Die Egress-Firewall schon. Der Bereich Guardrails jeder Maschine hat eine Tabelle Outbound connections und eine Einstellung Unmatched traffic. Stellen Sie nicht zugeordneten Verkehr auf Deny, erlauben Sie die Hosts, die der Auftrag braucht, und jede andere Verbindung wird auf dem Mac abgewiesen:
allow tcp api.github.com:443
allow web *.amazonaws.com
allow web registry.npmjs.org
default deny
Die Regeln werden zweimal durchgesetzt, außerhalb der VM. Der virtuelle
Netzwerk-Switch prüft jede Verbindung nach IP und nach dem im DNS
gesehenen Hostnamen, für jedes Protokoll, und der Proxy prüft noch einmal
anhand des TLS-Servernamens. Ein curl, das der Agent ausführt, ein
Skript, das er schreibt, und ein Paket, das er installiert, durchlaufen
alle dieselbe Prüfung. Eine Website, die niemand eingetragen hat, bekommt
eine abgewiesene Verbindung, und die Abweisung wird protokolliert.
Hätte die Website tatsächlich eine Injection enthalten, wie das NIST warnte, hätte der Quellcode-Detektor sie zuerst gesehen. Bromure prüft die Inhalte, die der Agent aus Tools liest, auch abgerufene Seiten, mit einem lokalen PromptGuard-Modell, bevor diese Inhalte den Modellanbieter erreichen, und kann protokollieren, nachfragen oder blockieren.
Admin-Rechte, mit einer Schranke vor Schreibzugriffen
In der Darstellung von WIRED committete der Agent Code und legte Cloud-Server mit Administratorrechten an. Bromure lässt dem Agenten den Zugang, den der Auftrag braucht, und stellt Schreibzugriffe hinter eine Regel, die im Proxy durchgesetzt wird, wo der Agent sie nicht abschalten kann.
Jeder Dienst im Bereich Guardrails hat eine Schreibrichtlinie:
Off, Prompt before write, Block destructive oder
Read-only. Sie deckt Git-Forges, AWS, DigitalOcean,
Container-Registries, Kubernetes und mehrere Datenbanken ab. Neue
Maschinen starten mit Prompt before write. Lesezugriffe gehen durch.
Ein git push, ein RunInstances-Aufruf oder ein kubectl apply hält
an einem Dialog auf dem Mac an, der die genaue Operation zeigt, und der
Entwickler wählt Allow once, Allow for 15 minutes, Allow for
the rest of the session oder Don't allow. Für besonders wichtige
Zugangsdaten fragt Require approval to use vor der ersten Verwendung
in jeder Sitzung nach.
Das Szenario von Jake Williams braucht eine unauffällige Änderung an der Software. Unter Prompt before write muss ein Angreifer, der den Agenten zu dieser Änderung bringt, den Push immer noch an einem Dialog auf dem Mac des Entwicklers vorbeibringen.
Aus zwei Monaten wird die erste Anfrage
Die Quellen von WIRED sagen nicht, wer die Übertragung bemerkte oder wann. Auf einem Bromure-Mac kann der Entwickler die Security Timeline öffnen (Window › Security Timeline…) und jede Entscheidung der Sicherheitsmechanismen nachlesen, auf jeder Maschine, ohne etwas zu konfigurieren: jeden Austausch von Zugangsdaten, jedes Erlauben und Abweisen der Firewall, jede Blockade durch die Guardrails, jeden Prompt-Injection-Treffer und jede blockierte Exfiltration. Der Tab Overview zählt die letzten 24 Stunden und listet die jüngsten Blockaden. Ereignisse werden 90 Tage aufbewahrt und lassen sich als CSV exportieren. Ein Dienstleister mit 72-Stunden-Meldefrist hat so die Zeitstempel, die Hosts und die Namen der Zugangsdaten am ersten Tag.
Teams können ihre Macs mit dem Bromure Enterprise Manager einbinden.
Eingebundene Macs senden dieselben Ereignisse an die Organisation:
credential.exfiltration, wenn ein Platzhalter hinaus will,
egress.firewall für jedes Urteil, guardrails.block für jeden
abgewiesenen Schreibzugriff, dazu Tool-Nutzung, Befehle und
Token-Zahlen. Ereignisse zu Zugangsdaten enthalten kurze Vorschauen, nie
die Secrets, und Prompts und Modellantworten verlassen den Mac nie. Das
Sicherheitsteam liest die Warnung in seiner eigenen Konsole Sekunden nach
der Blockade.
Damit haben Entwickler auch einen genehmigten Weg, jeden der fünf Agenten auf echten Systemen einzusetzen, während das Unternehmen die Grenze überwacht, statt eines privaten Kontos, das das Unternehmen nicht sieht.
Platzhalter statt Logins
Echte Zugangsdaten bleiben verschlüsselt auf dem Mac. Die VM des Agenten hält Platzhalter, die nur auf dem jeweils zugehörigen Host funktionieren.
Ein Stolperdraht in jeder Anfrage
Ein Platzhalter mit einem anderen Ziel wird mit HTTP 451 blockiert, und die VM hält mit einer Warnung an, die beide Hosts nennt.
Eine Allow-List für das Netzwerk
Mit Unmatched traffic auf Deny wird jeder Host abgewiesen, den der Auftrag nicht braucht, auf dem Mac, für jedes Protokoll.
Ein Protokoll ab dem ersten Tag
Die Security Timeline zeichnet jeden Austausch, jede Blockade und jede Abweisung 90 Tage lang auf, und eingebundene Macs senden dieselben Ereignisse an die Organisation.
Geben Sie dem Agenten einen Auftrag, nicht Ihren Login
Entwickler werden Agenten weiter Zugang geben, weil Agenten ihn für die Arbeit brauchen. Geben Sie dem Agenten den Zugang, behalten Sie die Secrets auf dem Mac, und legen Sie fest, mit welchen Hosts er sprechen darf.
In Bromure Agentic Coding ist das der Standard: Zugangsdaten zur Maschine hinzufügen, die Firewall auf die Hosts setzen, die der Auftrag braucht, Schreibzugriffe auf Prompt before write lassen und die Security Timeline das Protokoll führen lassen.
Für einen weiteren Fall, in dem die Daten eines Agenten auf einem Server landeten, den niemand ausgewählt hatte, lesen Sie Das Agent-Log lag in ihrer Cloud. Was der Laptop eines Entwicklers erreichen kann, sobald ein Angreifer darauf sitzt, lesen Sie in Der Laptop war das Einfallstor.