Onderzoekers van Sysdig hebben een tweede aanval op dezelfde Langflow-server gekoppeld aan JADEPUFFER, de AI-agentgestuurde operator die eerder deze maand voor het eerst werd gedocumenteerd.
Dezelfde operator is nu in actie gezien ENCVERGETENeen nieuw gecompileerde Go-ransomware die is ontworpen om modelgewichten, vectorindexen, trainingsdatasets en andere AI-infrastructuurbestanden in het hele hostbestandssysteem te versleutelen.
Het instappunt veranderde niet. Langflow-versies vóór 1.3.0 leggen de /api/v1/validate/code eindpunt zonder authenticatie, waardoor elke externe aanvaller willekeurige Python op de server kan uitvoeren. Het gebrek, CVE-2025-3248heeft een CVSS-score van 9,8 en staat sinds 5 mei 2025 in de catalogus van Known Exploited Vulnerabilities van CISA.
Zoals The Hacker News eerder deze maand meldde, werd bij de eerdere operatie gebruik gemaakt van wegwerp Python-code en MySQL AES_ENCRYPT() functie voor het coderen en vernietigen van gegevens in Nacos (de configuratieserver van Alibaba) en productiedatabases.
De nieuwe ENCFORGE-payload vervangt die geïmproviseerde scripts door gecompileerde tooling gericht op de modelwinkels, vectordatabases en trainingspijplijnen die in de eerste campagne naar inloggegevens werden geveegd.
De ENCFORGE-lading
Onderzoekers hebben het binaire bestand opgehaald van de command-and-control-server van de aanvaller, waar het verborgen was /.lockd; een rechtstreeks verzoek aan /lockd retourneert 404, en de leidende punt houdt het buiten een gewone directorylijst. Het bestand is een UPX 5.20-verpakte statische Go 1.22.12 ELF.
Bedreigingsinformatieplatforms retourneerden geen detecties op de ingepakte of uitgepakte hash op het moment van de analyse van Sysdig. De interne projectnaam is encfile; de fouttekst van het binaire bestand verwijst naar een begeleidende keygen-tool met de naam keyforge. Beide strings overleven de hercompilatie van dezelfde codebase en dienen als stabiele detectieankers.
De standaardextensielijst omvat PyTorch- en TensorFlow-controlepunten, Hugging Face SafeTensors, ONNX-uitwisselingsformaat, GGUF (de huidige standaard voor lokaal geïmplementeerde LLM’s) en zijn voorganger GGML, FAISS-vectorindexen, Parquet- en Arrow-trainingsdatasets, NumPy-arrays en TensorFlow-records.
Een --include Met flag kan de operator extra bestandsglobs toevoegen; de ingebouwde helptekst gebruikt LoRA-fijnafstemmingsadapters en oudere GGML-gewichten als voorbeelden. De volledige lijst omvat ongeveer 180 extensies. Deze voorbeelden wijzen rechtstreeks op AI-omgevingen; een generieke bestandskluis zou weinig reden hebben om LoRA-adapters of oudere GGML-gewichten te noemen. Onderzoekers interpreteren de keuze als doelbewuste targeting en niet als incidentele berichtgeving.
ENCFORGE gebruikt AES-256-CTR voor bestandsgegevens, waarbij de symmetrische sleutel per run is verpakt onder een ingebedde openbare RSA-2048-sleutel die in deze build is gecompileerd. In plaats van hele bestanden te coderen, worden geselecteerde regio’s gecodeerd, met dezelfde snelheidsoptimalisatie die LockBit- en BlackCat-klasse lockers gebruiken.
Elk verwerkt bestand wordt hernoemd met een .locked verlenging. Het binaire bestand doodt processen die bestanden openhouden voordat ze worden gecodeerd, zorgt voor herstart zonder voltooide bestanden opnieuw te coderen, laat losgeldbriefjes achter als README, HOW_TO_DECRYPTEn README_DECRYPTen verwijdert zichzelf na het uitvoeren.

Het herstelde ENCFORGE-binaire bestand heeft geen exfiltratiemogelijkheid. Het bevat geen netwerkcode, cloudopslagclient of stagingmechanisme, en onderzoekers vonden geen bewijs van data-exfiltratie, een leksite of een Tor-betalingsportaal tijdens de sessie die het observeerde. Het enige hefboomeffect zijn de gecodeerde gegevens.
Het afpersingscontact dat is opgenomen in de losgeldbriefjes is [email protected]hetzelfde Proton Mail-adres dat in de vorige campagne werd gebruikt. Sysdig beschrijft dit als het sterkste attributieverband tussen de twee operaties.
Onderzoekers maakten één geobserveerde sessie bekend, noemden de organisatie niet en verstrekten geen aantal slachtoffers of bewijs van een andere ENCFORGE-inzet.
Van Langflow tot de gastheer
Nadat hij de uitvoering van de code had bevestigd, doorzocht JADEPUFFER de container op zoek naar inloggegevens en vond de Docker-socket op /var/run/docker.sock. De eerste poging om ENCFORGE van de GCP command-and-control-server te halen mislukte. In plaats van te stoppen, paste het zich aan.
In vijf minuten en 24 seconden creëerde en reviseerde de operator zes Python-scripts via hetzelfde Langflow RCE-kanaal totdat het een werkpad naar de host had. Het eerste script werd regel voor regel gebouwd, waardoor elk afzonderlijk verzoek inert bleef voor op handtekeningen gebaseerde inspectie.
Beginnend met de tweede codeerde de operator elk volledig script in base64 en decodeerde het in een exec() call, waardoor zoekopdrachten op shell-niveau naar opdrachten zoals base64 -d. De definitieve versie gebruikte de Docker API om een bevoorrechte container op te zetten met de host-PID-naamruimte en het rootbestandssysteem aangekoppeld, lokaliseerde het doelproces en kopieerde ENCFORGE via /proc/en voerde het vervolgens uit op de host via nsenter.
In alle iteraties zijn de containers gemaakt met Privileged: true, PidMode: host, NetworkMode: hosten het rootbestandssysteem dat is gekoppeld aan lezen en schrijven. Dat is de hostroot.
Vóór de live-run lanceerde de operator --try-run om vervolgens het bestandssysteem te scannen --lock voor de live-coderingspas. Het laatste script controleerde de processtatus, las het vergrendelingslogboek en telde de bestanden die eindigden op .locked.
Onderzoekers publiceerden de resulterende telling niet; Uit het openbaar gemaakte bewijsmateriaal blijkt dat er sprake is van een live-versleutelingspoging, en niet hoeveel model- of datasetbestanden met succes zijn versleuteld.
Sysdig beoordeelde de --task-id gcp_h1 markeren als bewijs dat de operator deze host volgde als GCP-doelwit binnen een bredere campagne; een try-run eerder in de sessie gebruikte taak-ID gcp_test. Het rapport maakte geen melding van extra slachtoffers of inzetlocaties.
Onderzoekers documenteerden dat de eerdere JADEPUFFER-campagne een mislukte Nacos-login in 31 seconden corrigeerde. Hetzelfde patroon hield hier stand tegen een moeilijker probleem: de operator bouwde een host-uitbraak via de blootliggende Docker-socket toen de gewenste bezorgroute werd geblokkeerd.
Patch Langflow en bescherm vervolgens de modellen
Onderzoekers schatten dat het opnieuw opbouwen van een productie-AI-model nadat het is gecodeerd, tussen de $75.000 en $500.000 per model aan cloud-GPU-reken- en engineeringtijd kan kosten.
Productieomgevingen draaien vaak meerdere gespecialiseerde varianten op gedeelde opslag, dus een enkele ENCFORGE-run kan meerdere varianten coderen die zijn opgeslagen op hetzelfde toegankelijke bestandssysteem. Als trainingsgegevens zich op dezelfde host bevinden, moet de organisatie deze reconstrueren voordat er met hertraining kan worden begonnen.
Binaire SHA-256: verpakt 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2; uitgepakt ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328.
Sysdig heeft de bron- en C2-adressen, de ingebedde RSA-2048-sleutelvingerafdruk en een YARA-regel in zijn volledige rapport gepubliceerd.
- Upgrade Langflow naar 1.9.1 of een huidige ondersteunde release. Versie 1.3.0 gesloten
CVE-2025-3248de toegangsvector voor deze campagne, maar CISA heeft sindsdien nog twee Langflow-kwetsbaarheden aan zijn KEV-catalogus toegevoegd:CVE-2026-33017een niet-geverifieerde RCE-fout opgelost in 1.9.0, toegevoegd aan KEV op 25 maart 2026; EnCVE-2026-55255een omzeiling van autorisatie tussen meerdere gebruikers, opgelost in 1.9.1, toegevoegd op 7 juli 2026. - Roteer AI-providersleutels, cloudreferenties, databasegeheimen en andere tokens die toegankelijk zijn voor het Langflow-proces. Bij het patchen worden de inloggegevens die al via een kwetsbaar exemplaar zijn verzameld, niet ingetrokken.
- Verwijderen
/var/run/docker.sockuit elke container die dit niet nodig heeft. Als sockettoegang onvermijdelijk is, kun je dit via een nauw geconfigureerde proxy uitvoeren; bij een standaard Langflow-implementatie hoeven er over het algemeen geen containers te worden gemaakt, en onbeperkte Docker-sockettoegang moet worden behandeld als een verkeerde configuratie. - Waarschuwing voor applicatieprocessen die Docker-API’s voor het maken van containers aanroepen, containers gelanceerd met
Privileged: trueofPidMode: hosthost-root-bindkoppelingen, ennsenteruitvoering vanuit een container. - Bewaar modelgewichten, vectorindexen en trainingsgegevenssets in offline of onveranderlijke momentopnamen. Controleer deze mappen op massa
.lockedbestand aanmaken.
The Hacker News nam contact op met het Threat Research Team van Sysdig voor meer informatie over de reikwijdte van de vlootcampagne en het vertrouwen in de toeschrijving; Sysdig had niet gereageerd door middel van publicatie.
Modelartefacten horen nu in dezelfde herstellaag als broncode- en productiedatabases. Een organisatie die de applicatie opnieuw kan opbouwen, maar de gewichten, indexen of trainingsstatus niet kan herstellen, heeft geen schone route terug.