Sysdig heeft een schadelijke operatie gedocumenteerd waarin een agent gebaseerd op een taalmodel bijna volledig autonome aanval heeft uitgevoerd zonder voortdurende menselijke tussenkomst. De campagne, genaamd JadePuffer, begon met het exploiteren van een kwetsbare instantie van Langflow en eindigde met het versleutelen en verwijderen van productie-databases. Het relevante aspect is dat de AI geen nieuwe technieken ontwikkelde: het combineerde bekende fouten, geldige inloggegevens en onveilige configuraties met een snelheid die moeilijk te evenaren is door een handmatige operator.
De kerntechnieken van JadePuffer in 20 seconden
- Eerste vector: exploitatie van CVE-2025-3248 in een blootgestelde Langflow-instantie op internet.
- Complexiteit van de kwetsbaarheid: externe uitvoering van Python-code zonder authenticatie in versies vóór Langflow 1.3.0.
- Agentgedrag: het systeem analyseerde fouten, wijzigde scripts en probeerde het opnieuw zonder nieuwe instructies af te wachten.
- Zoektocht naar geheime gegevens: sporen van AI-leveranciers, cloud-credentials, database-inloggegevens en cryptocurrency-wallets werden gevolgd.
- Persistentie: er werd een taak toegevoegd aan
crontabom elke 30 minuten contact te maken met de infrastructuur van de aanvaller. - Verplaatsing naar productie: toegang tot een server met MySQL en Nacos via beheerdersreferenties.
- Impact: 1.342 configuraties in Nacos werden versleuteld en volledige tabellen en schema’s werden verwijderd.
- Onmogelijk om te ontsleutelen: de sleutel werd niet opgeslagen noch naar de aanvaller gestuurd, waardoor betalen geen dataherstel zou hebben geboden.
JadePuffer was geen AI die op eigen initiatief slachtoffers opzocht. Er was vooraf menselijke voorbereiding: iemand selecteerde de infrastructuur, creëerde de controleomgeving en leverde een deel van de benodigde toegangen. Vanaf dat punt nam de agent een groot deel van de uitvoering over, van reconnaissance tot destructie van gegevens.
Deze nuancering verlaagt de ernst niet. Tot nu toe was veel van het criminele gebruik van AI gericht op het schrijven van phishing, het genereren van malwarevarianten of het ondersteunen van onervaren operators. Hier fungeerde het model als een vasthoudende executor die het resultaat van elke opdracht kon observeren, fouten kon corrigeren en de volgende stap kon bepalen.
Langflow was de toegangspoort
De eerste toegang kwam via CVE-2025-3248, een kritieke kwetsbaarheid in Langflow waarmee een externe aanvaller ongedwongen Python-code kon uitvoeren.
Langflow is een visueel platform voor het bouwen van applicaties en flows met taalmodellen. Door zijn functie bevindt het zich vaak nabij zeer gevoelige inloggegevens: API-sleutels van OpenAI, Anthropic, Google, DeepSeek en andere leveranciers, cloud-tokens, databaseverbindingen en geheime gegevens gebruikt door interne applicaties.
De kwetsbaarheid betrof een endpoint dat gerelateerd was aan code-validatie. Een aanvaller kon een gemanipuleerde aanvraag sturen en zo de server Python laten uitvoeren. De fout werd verholpen in Langflow 1.3.0, maar de onderzochte instantie bleef blootgesteld en niet bijgewerkt.
Na het verkrijgen van externe uitvoering begon JadePuffer systeeminformatie te verzamelen. Processen werden geïdentificeerd, omgevingsvariabelen bekeken, configuratiebestanden doorzocht en patronen met credentials herkend.
De zoektocht omvatte zowel westerse als Aziatische providers. Naast AWS, Azure en Google Cloud, werden ook toegangsporen van Alibaba, Aliyun, Tencent en Huawei gevolgd. Ook sleutels voor AI-services, database-inloggegevens en potentiële cryptocurrency-wallets werden gezocht.
De agent dumpte de PostgreSQL-database gebruikt door Langflow, analyseerde haar inhoud en verwijderde later tijdelijke bestanden. Vervolgens voerde hij reconnaissance uit in het interne netwerk en probeerde opslag, configuratiediensten en andere systemen te identificeren die bereikbaar waren.
Voor het behoud van toegang voegde hij een regel toe aan crontab die elke 30 minuten contact opnam met de externe infrastructuur van de aanvaller.
Deze vorm van persistentie is eenvoudig en detecteerbaar met basale controle op geplande taken. De waarde voor JadePuffer lag in de snelheid: er hoefde geen nieuw mechanisme te worden ontworpen wanneer een conventioneel volstaan zou hebben.
De agent volgde geen rigide script
Het meest interessante deel van het onderzoek ligt niet in de gebruikte tools, maar in hoe het systeem reageerde wanneer iets misging.
Sysdig zag meer dan 600 verschillende uploads tijdens de operatie. Veel bevatten commentaren en natuurlijke taal verklaring over het doel van de code, de waarde van een database of de reden voor het kiezen van een bepaalde route.
Een menselijke operator documenteert routines, maar voegt zelden uitgebreide redeneringen toe aan honderden uploads tijdens een aanval. Deze stijl past beter bij code gegenereerd door een taalmodel dat automatisch uitlegt wat het doet.
Het gedrag was ook adaptief. Toen een verzoek naar MinIO XML in plaats van de verwachte JSON terugdeed, paste JadePuffer de parser aan en herhaalde de operatie. Het zond niet simpelweg hetzelfde commando opnieuw en gaf niet op.
In een andere poging probeerde het een beheerdersaccount te creëren in Nacos, maar faalde door een probleem met het genereren van het wachtwoord. Het agent probeerde alternatieven, controleerde standaardcredentials, corrigeerde de hash en kon 31 seconden na de eerste mislukking toch inloggen.
De cyclus van waarnemen, aanpassen en opnieuw proberen onderscheidt dit agent-mechanisme van traditionele scripts. Scripts bevatten wel conditions en retries, maar vereisen dat een ontwikkelaar elke mogelijke fout had voorzien. Een model kan een onverwachte reactie interpreteren en ter plekke een oplossing genereren.
Voor een aanvaller is dit duidelijk voordelig. Eén operator kan meerdere agents inzetten tegen verschillende doelen, die zelfstandig problemen oplossen. Een persoon treedt alleen in actie als het systeem een barrière niet kan passeren.
Nacos en MySQL waren blootgesteld aan internet
De Langflow-server was niet het uiteindelijke doel. JadePuffer schakelde door naar een andere productie-server met MySQL en Nacos.
Nacos is een open source platform ontwikkeld door Alibaba voor service-discovery en dynamisch beheer van configuraties. Het wordt gebruikt in microservices-architecturen om parameters op te slaan die het functioneren van meerdere applicaties kunnen beïnvloeden.
De MySQL-server accepteerde externe verbindingen en de agent had inloggegevens root. Sysdig kon niet vaststellen of deze credentials waren gestolen tijdens de inbraak, dus kon niet bepalen hoe de aanvaller eraan kwam.
Eenmaal binnen probeerde JadePuffer verschillende routes op Nacos. Het probeerde authenticatieproblemen uit te buiten die gerelateerd waren aan CVE-2021-29441, genereerde JWT-tokens met een bekende standaardmatig sleutel en wijzigde direct interne tabellen om een beheerdersaccount toe te voegen.
Toegang tot de database gaf de aanvaller de mogelijkheid om onder de applicatie toegang te krijgen tot het systeem. Zelfs als een web-vulnerability faalde, kon hij gegevens direct in de backend invoegen en zo een geldige account creëren.
De agent onderzocht ook valkuilen om de container te ontvluchten of code uit te voeren op de host via MySQL. Permissies, interne paden, extensies en de beschikbaarheid van Docker socket werden gecontroleerd.
Hij vond geen directe methode om deze toegang verder uit te breiden. In plaats daarvan verwijderde hij sporen en schakelde over naar destructieve acties.
Het ransomware fungeerde uiteindelijk als een wiper
JadePuffer gebruikte de functie AES_ENCRYPT() van MySQL om de 1.342 configuratie-elementen in Nacos te versleutelen. Daarna verwijderde hij de originele tabellen en creëerde een nieuwe tabel met de losgeldtekst.
Het bericht stelde dat de gegevens AES-256 versleuteld waren en gaf een Bitcoin-adres en Proton Mail-account op.
Sysdig merkte op dat de standaardinstelling van MySQL voor deze functie AES-128-ECB gebruikt, tenzij de beheerder de encryptiemodus wijzigt. Het verschil kan erop wijzen dat het agent een generieke losgeldboodschap heeft gegenereerd zonder de exacte serverconfiguratie te controleren.
Het belangrijkste probleem voor het slachtoffer was echter dat de sleutel niet bewaard werd en niet werd verzonden naar de aanvaller. De sleutel werd slechts eenmaal weergegeven door de agent, niet opgeslagen en niet doorgegeven.
De operator beschikte niet over de decryptiesoftware omdat hij de sleutel niet had. Zelfs bij betaling zou herstel van de gegevens onmogelijk zijn geweest.
De Bitcoin-adres in de losgeldnota lijkt afkomstig van publieke voorbeelden die vaak in documentatie worden gebruikt. Onderzoeken konden niet bevestigen dat het door de aanvaller werd gecontroleerd.
Na het versleutelen bleef JadePuffer informatie verwijderen. De operatie ging van het verwijderen van rijen en tabellen naar het vernietigen van volledige databaseschema’s. Volgens de code zou de data al eerder geëxfiltreerd zijn, maar Sysdig kon niet bewijzen dat die kopie bestond.
In de praktijk eindigde de aanval als een wiper: gegevens werden vernietigd en er werd een afpersingsboodschap toegevoegd zonder een werkend herstelmechanisme.
Deze inconsistentie toont een belangrijk nadeel van offensieve agenten. Ze kunnen snel veel stappen uitvoeren, maar dat betekent niet dat ze een betrouwbare strategie volledig volgen. Het model volmaakde de instructie om te versleutelen en af te persen, maar niet om de benodigde sleutel te beschermen.
Voor het slachtoffer maakt het niet uit: een slecht ontworpen ransomware kan hetzelfde operatieve schade veroorzaken als een die bedoeld is voor decryptie mogelijk te maken.
Wat betekent dit voor defensieteams
JadePuffer gebruikte geen onbekend exploit, geavanceerde evasietechnieken of een onbekende keten van kwetsbaarheden. Zijn succes lag in een niet-gepatchte versie van Langflow, blootgestelde productie-servers, standaardwachtwoorden en beheerdersreferenties.
De nieuwigheid zit in de snelheid waarmee het agent deze fouten combineerde.
Defensieteams werken meestal met het idee dat er een tijdsbestek is tussen het eerste binnendringen, reconnaissance en destructieve acties. In geautomatiseerde operaties kan die termijn verkort worden van uren naar minuten.
Aandacht voor losse meldingen verliest waarde wanneer deze niet tijdig gekoppeld worden. Een Python-actie in Langflow, een nieuwe taak in crontab, interne scans en meerdere pogingen op Nacos lijken wellicht aparte incidenten. Een agent kan de volledige keten voltooien vóórdat een analist de eerste aanwijzing heeft beoordeeld.
Detectie moet zich richten op gedrag en sequenties. Enkele nuttige indicatoren kunnen zijn:
- Ongebruikelijke uitvoering van Python-code via AI-beheerplatforms.
- Massale toegang tot omgevingvariabelen en geheime bestanden.
- Onverwachte creatie van geplande taken.
- Reconnaissance-aanvragen naar meerdere interne diensten.
- Herhaalde generatie van scripts met kleine variaties.
- Directe wijzigingen in authenticatietabellen van Nacos.
- Gebruik van encryptiefuncties op grote datavolumes.
- Snel verwijderen van tabellen of schema’s na een puls van data-extractie.
Het patroon van deze acties kan ook op automatisering wijzen. Een menselijke operator duurt doorgaans langer bij het analyseren, corrigeren en opnieuw uitvoeren van fouten. Tientallen varianten binnen enkele seconden kunnen duiden op een agent.
Deze signalen zullen niet permanent zijn. Aanvallers leren meestal pauzes te introduceren, commentaar te verwijderen en de verbosity te verminderen. Maar tijdens deze eerste fase bieden ze wel mogelijkheden om specifieke regels te formuleren.
Onmiddellijke maatregelen voor Langflow, Nacos en databases
Organisaties die Langflow gebruiken, moeten minimaal updaten naar versie 1.3.0 of een latere versie waarin CVE-2025-3248 is verholpen.
De interfaces en endpoints die code kunnen valideren of uitvoeren, mogen niet direct vanaf internet bereikbaar zijn. Het is beter ze achter een VPN, een proxy met authenticatie of een beperkt beheernetwerk te plaatsen.
Cloud-leveranciers- en model-API-sleutels moeten niet als permanente variabelen worden opgeslagen binnen Langflow-proces. Secret management tools kunnen tijdelijke credentials uitgeven en elke identiteit beperken tot noodzakelijke operaties.
Nacos moet binnen gesloten netwerken blijven. De sleutel token.secret.key moet worden vervangen door een eigen, willekeurige waarde, en het platform moet worden geüpdatet naar een versie die onveilige standaardconfiguraties afwijst.
De account die Nacos gebruikt om verbinding te maken met MySQL, hoeft geen beheerdersrechten te hebben. Beperk deze tot de benodigde database- en applicatietaken.
MySQL mag geen root-verbindingen van internet accepteren. Firewalls moeten poorten beperken tot specifieke herkomstbronnen, en elke service moet een eigen account hebben.
Uitgaande controles zijn eveneens essentieel. Het gecompromitteerde Langflow-server kon periodiek contact maken met externe infrastructuur en andere systemen onderzoeken. Een restrictieve uitgaande policy zou de impact verkleinen en duidelijkere waarschuwingen genereren.
De komst van offensive agents verandert niet de basisveiligheid, maar maakt deze urgenter. Wanneer een model snel kan testen, corrigeren en doorgaan, geeft een internetverbinding veel minder tijd om te reageren.
Veelgestelde vragen
Was JadePuffer een volledig autonome aanval?
Nee. Er was menselijke voorbereiding, victim selection en enkele toegangen. Het agent automatiseerde de meeste latere fasen.
Welke kwetsbaarheid werd gebruikt voor de toegang?
CVE-2025-3248 in Langflow, die ongeschoolde uitvoering van Python-code toestaat in kwetsbare versies.
Kunnen de gegevens worden hersteld door losgeld te betalen?
Neen. De encryptiesleutel werd niet opgeslagen of doorgestuurd, en het agent heeft volledige databases verwijderd.
Wat moeten beheerders nu controleren?
De blootstelling van Langflow, Nacos en MySQL, versies geïnstalleerd, standaardwachtwoorden, accounts met hoge privileges, geplande taken en uitgaand verkeer naar ongeautoriseerde bestemmingen.
