Aanvallers gebruiken LLM-agent voor post-exploitatie na Marimo CVE-2026-39987-exploit

Er is waargenomen dat een onbekende bedreigingsacteur een Large Language Model (LLM)-agent gebruikt om post-compromisacties uit te voeren na het verkrijgen van initiële toegang na de exploitatie van een openbaar toegankelijk Marimo-netwerk met behulp van een onlangs onthulde kwetsbaarheid.

“De aanvaller heeft via CVE-2026-39987 een op internet bereikbare Marimo-notebook gecompromitteerd, twee cloudreferenties van de gecompromitteerde host geëxtraheerd, deze afgespeeld via een uitgewaaierde uitgaande pool om een ​​SSH-privésleutel uit AWS Secrets Manager op te halen, en gebruikte die sleutel om acht korte SSH-sessies tegen een downstream SSH-bastionserver aan te sturen”, aldus Sysdig.

“De bastionfase heeft het schema en de volledige inhoud van een interne PostgreSQL-database in minder dan twee minuten geëxfiltreerd.”

CVE-2026-39987 verwijst naar een kritieke, vooraf geverifieerde kwetsbaarheid voor het uitvoeren van externe code die gevolgen heeft voor alle versies van Marimo vóór en inclusief 0.20.4. Hiermee kan een niet-geverifieerde aanvaller willekeurige systeemopdrachten uitvoeren. Het probleem is verholpen in versie 0.23.0, die vorige maand werd uitgebracht.

Het beveiligingsfoutje wordt sindsdien actief uitgebuit, waarbij bedreigingsactoren het gebruiken om handmatige verkenningen tegen honeypot-systemen te initiëren en te proberen gevoelige gegevens te verzamelen.

De laatste door Sysdig gedocumenteerde activiteit volgt hetzelfde patroon, met als voornaamste verschil dat een LLM-agent werd gebruikt om de post-exploitatie-activiteit aan te sturen. Het incident werd volgens het cloudbeveiligingsbedrijf geregistreerd op 10 mei 2026, waarbij de aanvaller inloggegevens uit de omgeving verzamelde en vervolgens de verzamelde AWS-toegangssleutel gebruikte om API-aanroepen tegen AWS Secrets Manager uit te voeren en een privé-SSH-sleutel op te halen.

Minuten later zou de bedreigingsacteur de eerste SSH-authenticatie op de SSH-bastionserver hebben uitgevoerd met behulp van de opgehaalde sleutel, gevolgd door acht parallelle SSH-sessies tegen de downstream-server om een ​​interne PostgreSQL-database over te hevelen. De end-to-end aanvalsketen duurde iets meer dan een uur.

Sysdig zei dat het vier aanwijzingen had gevonden dat een LLM-agent achter de activiteit zat. Eerst improviseerde de aanvaller een databasedump zonder enige voorafgaande kennis van het schema. Ten tweede lekte een Chineestalige planningsopmerking, “看还能做什么”, wat zich vertaalt naar “Kijk wat we nog meer kunnen doen”, rechtstreeks in de opdrachtstroom bij het uitvoeren van een zoekopdracht naar inloggegevens.

“De hostnaam van de database was ondoorzichtig, er stond geen applicatie-ID op de schijf en er was geen vooraf geënsceneerde schemadump, maar toch belandde de keten binnen enkele minuten op een referentietabel”, aldus Sysdig. “De aanvaller hoeft uw omgeving niet langer te zien om daarin te kunnen opereren.”

Het derde teken is dat elke opdracht is ontworpen voor machinegebruik, waarbij elke opdracht wordt gescheiden door een “—” scheidingsteken, samen met begrensde uitvoeropnamen, waarbij de opdracht “less” wordt uitgeschakeld en de foutenstroom (stderr) wordt genegeerd om ruis te minimaliseren.

Ten slotte worden de waardeoverdrachten verkregen uit eerdere gereedschapsuitvoer. Met andere woorden, de manier waarop bepaalde waarden, bijvoorbeeld databasewachtwoorden, werden geëxtraheerd impliceert dat een AI-agent zijn eigen eerdere uitvoer (een cat-opdracht van het bestand “~/.pgpass” uitvoert) in de volgende actie invoert.

In een ander geval wordt een cat-opdracht om de inhoud van een specifiek bestand af te drukken (“cat ~/.ssh/id_ed25519”) voorafgegaan door een ls (“list”)-opdracht die hetzelfde bestandspatroon doorgeeft als invoer (“ls -la ~/.ssh/id_ed25519*”) om te bevestigen dat de SSH-sleutel bestaat.

“Wanneer een scriptoperator een playbook per doel bouwt en dit opnieuw gebruikt, is de barrière voor het toevoegen van een nieuw doel de engineeringtijd”, concludeerde Sysdig. “Een agent-operator heeft echter algemene inzichten over een klasse applicaties en stelt de keten live samen om het beste bij zijn doel te passen. Hier wordt de balk het gevolgtrekkingsbudget, niet het auteurschap van het draaiboek.”

“De voor de verdediger relevante eigenschap van een agent-in-the-loop is aanpassingsvermogen. Een aanvaller met een script treft een ontbrekend bestand, een onverwacht schema of een authenticatiefout en breekt af of valt over op een hardgecodeerde fallback. Een agent leest de verrassing, besluit wat hij vervolgens moet proberen en gaat door.”

Om deze dreiging tegen te gaan, wordt aanbevolen dat gebruikers updaten naar de nieuwste versie van Marimo, omgevingen controleren op openbaar toegankelijke instanties en inloggegevens, API-sleutels en SSH-sleutels rouleren.

Thijs Van der Does