# JADEPUFFER Opérateur de ransomware agentique (piloté par LLM) · Première documentation : 1er juillet 2026 · ## Présentation JADEPUFFER est le nom donné par l'équipe Sysdig Threat Research à ce qu'elle considère comme la première opération de ransomware documentée pilotée de bout en bout par un grand modèle de langage, sans opérateur humain au clavier pendant l'intrusion ni l'extorsion. [Sysdig a publié ses premières conclusions le 1er juillet 2026](https://www.sysdig.com/blog/jadepuffer-agentic-ransomware-for-automated-database-extortion), décrivant un acteur de menace agentique, ou ATA : un opérateur dont la capacité d'attaque est fournie par un agent d'IA plutôt que par une boîte à outils pilotée par un humain ou un script d'exploitation fixe. L'opérateur a obtenu l'accès initial en exploitant CVE-2025-3248, une faille d'exécution de code à distance non authentifiée dans le terminal de validation de code de Langflow, un framework open source de création d'applications LLM. La CISA a ajouté cette faille à son catalogue Known Exploited Vulnerabilities en mai 2025. À partir de ce seul point d'appui, l'agent LLM a enchaîné de façon autonome reconnaissance, collecte d'identifiants, pivot latéral vers un serveur de production distinct et un scénario destructeur d'extorsion de bases de données contre Alibaba Nacos et MySQL, chiffrant plus de 1 300 enregistrements de configuration avec une clé affichée une seule fois et jamais stockée. Le 20 juillet 2026, [Sysdig a signalé le retour de JADEPUFFER sur la même instance Langflow](https://www.sysdig.com/blog/jadepuffer-evolves-the-agentic-threat-actor-deploys-ransomware-built-to-destroy-ai-models) avec une charge utile nettement améliorée. La première campagne utilisait du Python improvisé et la fonction de chiffrement native d'une base de données ; cette nouvelle campagne a déployé ENCFORGE, un binaire de ransomware compilé en Go spécialement conçu pour détruire les artefacts d'IA et de machine learning : points de contrôle de modèles, index vectoriels et jeux de données d'entraînement sur environ 180 extensions de fichiers. Le contact d'extorsion intégré au binaire correspond à celui de la première campagne, reliant les deux opérations au même acteur. **Pourquoi cela importe aux défenseurs :** la chaîne d'attaque de JADEPUFFER s'exécute presque entièrement dans des infrastructures cloud natives et conteneurisées plutôt que sur un poste Windows. Son importance ne tient ni à un nouvel exploit ni à une technique de chiffrement inédite. Sysdig précise qu'aucune technique individuelle n'était sophistiquée. La nouveauté réside dans le fait qu'un agent LLM a enchaîné des techniques ordinaires, une CVE connue, un contournement d'authentification Nacos documenté et une évasion via le socket Docker pour mener une opération d'extorsion complète et auto-corrective sans expert humain pilotant chaque étape. Cela abaisse le niveau de compétence nécessaire à ce type d'attaque au simple coût d'exploitation d'un agent. **À vérifier avant de s'y fier :** Sysdig n'a pas indiqué combien d'environnements victimes distincts ont été touchés ni si d'autres déploiements Langflow ont été ciblés par le même opérateur en dehors des deux sessions documentées. Considérez JADEPUFFER comme un opérateur unique suivi à travers deux campagnes publiées, et non comme une famille Ransomware-as-a-Service largement répandue. ### Profil de la menace | Type | Première détection | Charge utile | Modèle d'extorsion | |---|---|---|---| | Ransomware agentique | Juil. 2026 | ENCFORGE / lockd | Simple (sans site de fuite) | | Détails | Valeur | |---|---| | Documenté par | Sysdig Threat Research Team | | Vecteur d'entrée | CVE-2025-3248 (RCE Langflow) | | Cibles principales | Hôtes Langflow / d'orchestration IA exposés à Internet | | Cibles en aval | MySQL, Alibaba Nacos, hôtes Docker, stockage de modèles | | Outils associés | encfile (nom du projet) · keyforge (générateur de clés) | | Contact (deux campagnes) | e78393397[@]proton[.]me | ## Chaîne d'attaque opérationnelle : de Langflow à ENCFORGE 1. **RCE Langflow** - CVE-2025-3248, sans authentification. 2. **Empreinte hôte et collecte d'identifiants** - Piloté par agent, auto-commenté, exécution parallèle. 3. **Persistance MinIO / cron** - Identifiants par défaut, beacon toutes les 30 min via crontab. 4. **Pivot vers Nacos / MySQL** - Contournement d'authentification + insertion d'un administrateur backdoor. 5. **Évasion via le socket Docker** - Conteneur privilégié, montage de l'hôte, `nsenter`. - T1611 6. **Déploiement d'ENCFORGE** - Copié entre espaces de noms via le système de fichiers `/proc`. 7. **Chiffrement des actifs IA / ML** - ~180 extensions, AES-256-CTR + RSA-2048. 8. **Anti-récupération + note de rançon** - Appels vssadmin / bcdedit, liste de processus à arrêter, auto-suppression. - T1486, T1490 La première campagne s'est arrêtée à l'extorsion au niveau base de données dans MySQL et Nacos. Trois semaines plus tard, la seconde campagne est passée à un locker compilé et à un balayage du système de fichiers au niveau de l'hôte depuis le même point d'entrée. Aucune technique individuelle n'exigeait de vaincre un environnement durci ; la nouveauté réside dans le fait qu'un agent LLM les a enchaînées de bout en bout sans intervention humaine. Source : Sysdig Threat Research Team, 1er et 20 juillet 2026 ## Tactiques, techniques et procédures JADEPUFFER couvre onze des quatorze tactiques MITRE ATT&CK Enterprise, de l'accès initial à l'impact, sans qu'aucune technique ne soit particulièrement sophistiquée. La densité provient d'un agent qui enchaîne des techniques ordinaires de bout en bout, et non d'une nouvelle chaîne d'exploitation. ### Couverture MITRE ATT&CK | Tactique | Nombre | |---|---| | Reconnaissance | 0 | | Développement des ressources | 0 | | Accès initial | 1 | | Exécution | 2 | | Persistance | 1 | | Élévation de privilèges | 1 | | Évasion des défenses | 3 | | Accès aux identifiants | 2 | | Découverte | 3 | | Mouvement latéral | 1 | | Collecte | 1 | | Commande et contrôle | 1 | | Exfiltration | 0 | | Impact | 3 | ### Détail des techniques | Tactique | Techniques | Comportement observé / télémétrie de défense | |---|---|---| | Accès initial | [Exploitation d'une application exposée T1190](https://attack.mitre.org/techniques/T1190/) | Exécution Python non authentifiée via le terminal `/api/v1/validate/code` de Langflow (CVE-2025-3248). Télémétrie : journaux d'accès Web sur ce chemin, règles WAF pour les terminaux de validation de code, alertes CISA KEV. | | Exécution | [Python T1059.006](https://attack.mitre.org/techniques/T1059/006/), [Commande d'administration de conteneur T1609](https://attack.mitre.org/techniques/T1609/) | Python encodé en Base64 livré via le point d'exécution RCE ; appels à l'API Docker Engine émis depuis le même processus applicatif. Télémétrie : création de sous-processus sous le propriétaire du processus de l'application Web, journaux des appels API Docker. | | Persistance | [Tâche/Job planifié : Cron T1053.003](https://attack.mitre.org/techniques/T1053/003/) | Entrée crontab sur l'hôte Langflow envoyant un beacon sortant toutes les 30 minutes. Télémétrie : événements de modification crontab, connexions sortantes récurrentes à intervalle fixe depuis un hôte applicatif. | | Élévation de privilèges | [Évasion vers l'hôte T1611](https://attack.mitre.org/techniques/T1611/) | Repère le socket Docker exposé, crée un conteneur privilégié avec le système de fichiers racine de l'hôte monté et l'espace de noms PID partagé, puis utilise `nsenter` pour entrer dans l'espace de noms de l'hôte. Télémétrie : appels API Docker create/start avec `Privileged:true` et `PidMode:host`. | | Évasion des défenses | [Fichiers obfusqués T1027](https://attack.mitre.org/techniques/T1027/), [Désobfuscation / décodage T1140](https://attack.mitre.org/techniques/T1140/), [Masquage T1036](https://attack.mitre.org/techniques/T1036/) | ENCFORGE est compressé avec UPX et n'a déclenché aucune détection par les outils courants de veille sur les menaces, tant sur l'échantillon compressé que décompressé au moment de l'analyse Sysdig. Les charges utiles ultérieures passent au décodage Base64 en ligne dans un point exec() plutôt qu'à `base64 -d` au niveau shell. Une copie CPython préparée utilise un homoglyphe Unicode (un caractère pi mathématique préfixant « thon ») pour contourner les contrôles naïfs de noms de fichiers. | | Accès aux identifiants | [Identifiants dans des fichiers T1552.001](https://attack.mitre.org/techniques/T1552/001/), [Comptes valides T1078](https://attack.mitre.org/techniques/T1078/) | Recherche les clés de fournisseurs LLM, identifiants cloud, phrases de récupération de portefeuilles et configurations de bases de données ; récupère `credentials.json` et `.env` depuis une instance MinIO utilisant des identifiants par défaut ; forge une session Nacos à l'aide de sa clé de signature JWT par défaut largement documentée et insère directement un compte administrateur backdoor dans la base Nacos. | | Découverte | [Informations système T1082](https://attack.mitre.org/techniques/T1082/), [Découverte de services réseau T1046](https://attack.mitre.org/techniques/T1046/), [Découverte de conteneurs et ressources T1613](https://attack.mitre.org/techniques/T1613/) | Empreinte immédiate de l'hôte lors de l'exécution ; analyse de l'espace d'adresses interne et des services depuis l'hôte Langflow ; requêtes API Docker pour énumérer les conteneurs actifs et découvrir le PID de l'hôte avant de préparer l'évasion. | | Mouvement latéral | [Exploitation de services distants T1210](https://attack.mitre.org/techniques/T1210/) | Pivot depuis l'hôte Langflow vers un serveur MySQL et Alibaba Nacos distinct exposé à Internet à l'aide d'identifiants root MySQL, puis exploitation de la famille de contournements d'authentification Nacos (CVE-2021-29441). | | Collecte | [Données du système local T1005](https://attack.mitre.org/techniques/T1005/) | Extrait la base Postgres sous-jacente de Langflow, prépare la sortie dans des fichiers locaux, les examine puis supprime les fichiers de préparation, une étape de nettoyage rarement effectuée par un script fixe. | | Commande et contrôle | [Protocoles Web T1071.001](https://attack.mitre.org/techniques/T1071/001/) | Beacon HTTP piloté par cron vers l'infrastructure de l'attaquant ; binaire ENCFORGE et interpréteur CPython préparé récupérés en HTTP non chiffré depuis un serveur hébergé sur GCP. | | Impact | [Données chiffrées pour produire un impact T1486](https://attack.mitre.org/techniques/T1486/), [Neutralisation de la récupération système T1490](https://attack.mitre.org/techniques/T1490/), [Arrêt du service T1489](https://attack.mitre.org/techniques/T1489/) | La première campagne a chiffré directement les lignes de configuration Nacos. Le binaire ENCFORGE de la seconde campagne chiffre environ 180 types de fichiers IA/ML, invoque `vssadmin.exe` et `bcdedit.exe` sous Windows pour neutraliser la récupération et arrête les processus qui verrouillent des fichiers avant le chiffrement. | | Reconnaissance / Développement des ressources / Exfiltration | — | Aucune reconnaissance préalable ni préparation d'infrastructure n'a été observée avant l'exploitation initiale. Sysdig n'a identifié aucune capacité d'exfiltration, aucun canal de données sortant ni site de fuite dans le binaire ENCFORGE lui-même. | ### Étape 1 : Comment l'attaque commence JADEPUFFER ne s'appuie ni sur un leurre, ni sur un e-mail d'hameçonnage, ni sur une action de l'utilisateur. L'entrée se fait par une seule requête HTTP non authentifiée vers le terminal de validation de code de Langflow, `/api/v1/validate/code`, que Sysdig identifie comme une faille d'authentification manquante suivie sous CVE-2025-3248. Ce terminal sert à vérifier qu'un extrait de code soumis par l'utilisateur est syntaxiquement valide ; la faille le transforme en exécution de code à distance. Langflow est une cible attractive pour des raisons dépassant la faille elle-même. Ce framework open source largement déployé sert à créer des applications LLM et de nombreuses instances restent exposées sur des serveurs accessibles depuis Internet. Ces serveurs orchestrant des services d'IA connectés, ils contiennent souvent des clés API de fournisseurs LLM, des identifiants cloud et des connexions à des bases vectorielles et stockages d'objets directement dans leur environnement d'exécution. Ils sont aussi fréquemment déployés rapidement sans contrôles réseau. La CISA a ajouté CVE-2025-3248 à son catalogue Known Exploited Vulnerabilities en mai 2025, et la faille est restée le vecteur d'entrée de JADEPUFFER lors des deux campagnes documentées. Toutes les charges utiles des deux campagnes ont été livrées de la même manière : du Python encodé en Base64 soumis via ce canal RCE unique. Aucun programme d'installation n'est déposé, aucune macro ni astuce de presse-papiers n'est utilisée. Toute l'opération passe par un seul terminal d'une seule application. ### Étape 2 : Ce qui s'exécute sur le terminal Immédiatement après l'exécution, l'agent établit l'empreinte de l'hôte : contexte utilisateur, version du noyau et de l'OS, nom d'hôte, interfaces réseau et liste des processus actifs. Il parcourt ensuite l'environnement en parallèle à la recherche de secrets dans plusieurs catégories : clés API de fournisseurs LLM de plusieurs éditeurs, identifiants de fournisseurs cloud avec prise en compte explicite des préfixes de variables d'environnement de clouds chinois aux côtés d'AWS, GCP et Azure, portefeuilles de cryptomonnaies et phrases de récupération, ainsi que chaînes de connexion de bases de données. Il extrait ensuite la base Postgres sous-jacente de Langflow, collecte les identifiants et enregistrements utilisateurs stockés dans des fichiers locaux, les examine puis supprime les fichiers de préparation. Il sonde ensuite l'espace d'adresses interne et, après avoir trouvé une API de stockage d'objets MinIO réactive, s'authentifie avec la paire d'identifiants par défaut bien connue et déroule un scénario complet d'énumération des buckets : liste de tous les buckets, priorité à celui contenant l'état Terraform et à un bucket de configuration interne, puis récupération de fichiers d'identifiants nommés par leur chemin. Pour assurer la persistance sur ce premier hôte, il écrit une seule entrée crontab qui envoie un beacon sortant vers l'infrastructure de l'attaquant toutes les 30 minutes en utilisant uniquement la bibliothèque standard Python. Dans la seconde campagne, après avoir localisé un socket Docker, le même agent a construit une chaîne d'évasion de conteneur fonctionnelle au cours d'une session active, découvert le PID de l'hôte via l'API Docker, copié le binaire ENCFORGE à travers la frontière du conteneur via le système de fichiers `/proc` de l'hôte et l'a lancé directement sur l'hôte, en dehors de l'isolation du conteneur initial. Chaque étape, y compris la récupération après un échec, a été générée et exécutée par le même agent dans une seule session continue. ### Étape 3 : Comment le malware échappe à la détection L'évasion de cette opération est architecturale plutôt que fondée sur l'obfuscation des fichiers. Chaque charge utile arrive via la surface légitime d'exécution de code de l'application elle-même : aucun dropper externe, aucune pièce jointe d'e-mail et aucun téléchargement suspect à signaler lors de la livraison. L'application constitue elle-même le mécanisme de livraison. ENCFORGE est compressé avec UPX et n'a généré aucune détection dans les outils courants de veille sur les menaces, sur l'échantillon compressé comme sur l'échantillon décompressé, au moment de l'analyse Sysdig. Dans la session RCE, la technique de l'agent a mûri au fil des itérations : un premier script construisait sa logique ligne inerte par ligne inerte afin d'éviter de déclencher une signature sur une requête unique, puis il est passé à une charge utile Base64 en ligne à exécution unique, décodée directement dans un point `exec()`, invisible pour les outils recherchant uniquement des motifs `base64 -d` au niveau du shell. L'artefact d'évasion le plus évident est un homoglyphe. En plus de deux interpréteurs CPython nommés normalement, le serveur de préparation de l'opérateur hébergeait un troisième binaire dont le nom remplaçait la lettre p par un caractère pi mathématique Unicode, conçu pour contourner les vérifications de nom de fichier telles que `basename in ("python","python3")` ou une commande d'arrêt de processus ne correspondant qu'à la chaîne littérale. L'évasion via le socket Docker est en elle-même une technique d'évasion : plutôt que de tenter une action détectable dans le conteneur restreint, l'agent créait pour chaque commande un conteneur privilégié temporaire monté sur l'hôte, puis le détruisait immédiatement, réduisant l'empreinte laissée par chaque artefact. ### Étape 4 : Ce qu'il tente d'accéder ou de modifier Sur l'hôte Langflow, l'objectif est d'obtenir des identifiants et un accès de préparation : données applicatives du stockage d'objets MinIO, sauvegardes et buckets d'artefacts de machine learning, ainsi que tout fichier `.env` ou `credentials.json` accessible. Rien de cela n'est la cible finale ; ce sont des accessible. Rien de cela n'est la cible finale ; ce sont des moyens d'atteindre un serveur de base de données de production distinct. Sur ce second serveur, l'agent modifie directement la base du service de configuration Nacos : il insère un compte administrateur backdoor dans les tables users et roles, corrige le compte lorsque la première tentative d'insertion échoue, puis utilise la session obtenue pour chiffrer directement les éléments de configuration du service avec la fonction de chiffrement propre à la base, supprimer les tables originales et historiques et les remplacer par une table d'extorsion contenant une demande de paiement. Dans la campagne ENCFORGE, la cible s'étend au système de fichiers lui-même : environ 180 extensions couvrant les points de contrôle et poids de modèles (formats PyTorch, TensorFlow, HuggingFace, llama.cpp), les fichiers d'index vectoriels et les formats colonnaires de jeux de données d'entraînement. Une option de ligne de commande permet à l'opérateur d'ajouter des extensions personnalisées par campagne, et le texte d'aide du binaire cite comme exemples les adaptateurs de fine-tuning LoRA et les anciens poids de modèles, preuve que le ciblage est volontairement conçu autour de l'infrastructure IA. Le binaire compilé contient également du code anti-récupération propre à Windows, avec des appels littéraux à `vssadmin.exe` et `bcdedit.exe`, indiquant qu'un build Windows existe ou est prévu même si la session observée par Sysdig s'exécutait sous Linux. ### Flux d'exécution À quoi ressemble la chaîne d'attaque dans la télémétrie des processus et API : ```text gunicorn / uvicorn (langflow) [web app process] └─ python3 -c "exec(base64.b64decode(...))" [Anomalous child of app process · T1059.006] ├─ id / uname / hostname // host fingerprint · T1082 ├─ curl / urllib → minio.internal:9000 [Default-cred bucket enum · T1552.001] └─ crontab */30 * * * * python3 -c "urlopen(...)" [Persistence · T1053.003] mysqld (production Nacos backend) [separate host] └─ root session, external source [Unscoped admin exposure] ├─ INSERT INTO users/roles // backdoor admin, self-corrected on failure └─ SELECT ... INTO OUTFILE / LOAD_FILE docker.sock, /proc/1/cgroup escape pre-check Docker Engine API [unix socket] └─ POST /containers/create Privileged:true, PidMode:host, Binds:["/:/host:rw"] [T1611] └─ nsenter --target 1 ... cp lockd across namespace via /proc └─ lockd --lock --task-id gcp_h1 // ENCFORGE live run ├─ vssadmin.exe / bcdedit.exe // anti-recovery calls (Windows build path) [T1490] └─ *.gguf / *.safetensors / *.ckpt → *.locked [T1486] ``` ## Rôle de Malware Protection Plus JADEPUFFER commence dans une infrastructure Linux et cloud compromise, mais son activité de ransomware peut atteindre les terminaux Windows via des stockages partagés ou mappés. [Malware Protection Plus](https://www.manageengine.com/fr/malware-protection/) se concentre sur les comportements côté Windows visibles dans cette zone d'impact. Les indicateurs clés comprennent vssadmin.exe et bcdedit.exe utilisés pour désactiver la récupération, l'arrêt malveillant de processus et le renommage massif de fichiers en .locked. Malware Protection Plus peut détecter ces comportements, isoler les terminaux affectés et fournir une visibilité sur la filiation des processus pour l'investigation et la réponse. La compromission Langflow en amont, l'exploitation du socket Docker et l'activité du conteneur vers l'hôte exigent des contrôles de sécurité des workloads cloud, du runtime de conteneurs et du réseau. Malware Protection Plus complète ces couches en protégeant les terminaux Windows où l'attaque devient visible. ## Indicateurs de compromission Les indicateurs durables décrivent des comportements qui devraient persister malgré la reconstruction de l'infrastructure. Les indicateurs volatils (adresses IP, hachages, adresses de contact) sont propres aux deux campagnes documentées et devraient évoluer si l'opérateur recommence. ### Modèles de processus et d'API Durables · 6 modèles Chaînes comportementales susceptibles de réapparaître indépendamment de la reconstruction de l'infrastructure. - `python3 -c "exec(base64.b64decode(...))" under a Langflow / uvicorn / gunicorn process owner` - RCE-channel execution pattern — entry vector indicator - `Docker API POST /containers/create with Privileged:true + PidMode:host` - Host-escape signature, high confidence - `nsenter --target 1 invoked from inside a container` - Namespace-crossing — not legitimate for application containers - `MinIO ListBuckets → GetObject(credentials.json / .env) using minioadmin:minioadmin` - Default-credential object-store enumeration - `crontab beacon: */30 * * * * python3 -c "urlopen(...)"` - Fixed-interval beacon persistence - `Mass *.locked creation in .gguf / .safetensors / .ckpt / .faiss / .parquet paths` - AI/ML-targeted encryption impact ### Artefacts du système de fichiers et de rançon Durables · 5 indicateurs Noms et structures réutilisés par l'opérateur sur plusieurs builds et campagnes. - `Ransom notes: README, HOW_TO_DECRYPT, README_DECRYPT` - ENCFORGE campaign — filesystem drop - `README_RANSOM extortion table inserted into targeted database` - First campaign — database-native extortion - `Internal project names: encfile (locker), keyforge (keygen companion)` - Toolchain identifiers — survive recompilation - `Deployed binary filename: lockd (staged under /tmp/.sk/)` - Observed session staging path - `Staged CPython copy with U+1D70B homoglyph in filename` - String-evasion tell — staged but not deployed in observed session ### Infrastructure réseau Volatile · rotation attendue Utile actuellement, non pérenne. Récupérez en temps réel les valeurs les plus récentes dans les listes d'IoC publiées par Sysdig. - `45.131.66[.]106 (AS49453, NL)` - First campaign source / cron beacon target (port 4444) - `34.153.223[.]102:9191 (GCP)` - ENCFORGE and CPython delivery — second campaign C2 - `e78393397[@]proton[.]me` - Extortion contact — same in both campaigns; strongest attribution link ### Hachages propres au build Volatils · changent à la recompilation Liés à cet échantillon compilé précis. Utilisez-les comme éléments de confirmation, et non comme règles de détection principales. - `8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2` - SHA-256 — lockd (UPX-packed) - `ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328` - SHA-256 — lockd (unpacked, Go 1.22.12) - `2378bf45bb54fb2defc460063c9b43e09870741b62692b7f6acbc3cd7898bb3` - SHA-256 — embedded RSA-2048 public key DER (changes if operator regenerates keypair) ## Recommandations de détection Les techniques propres à JADEPUFFER n'ont rien d'exceptionnel prises séparément. La détection consiste ici à repérer une séquence inhabituelle, et non une signature inédite unique : un processus applicatif lançant des interpréteurs de scripts, une application communiquant avec le socket Docker et une frontière d'espace de noms franchie depuis un conteneur. Ces schémas comportementaux ne dépendent pas du fait de savoir que l'opérateur utilise un LLM. 1. ### Exécution d'un interpréteur de script sous le propriétaire d'un processus d'application Web **Télémétrie des processus d'exécution** À surveiller : `python3`, `sh` ou des interpréteurs similaires lancés comme enfants d'un processus worker Langflow, uvicorn ou gunicorn, en particulier avec des motifs base64 ou exec() dans la ligne de commande. **Pourquoi cela fonctionne :** un appel légitime de validation de code ne devrait jamais lancer lui-même un shell ou un sous-processus lisant des secrets ou écrivant sur le disque. Cette détection intercepte le vecteur d'entrée quelle que soit la charge utile suivante. 2. ### Accès anormal au socket Docker **Télémétrie conteneur / API** À surveiller : tout processus applicatif autre qu'un système d'orchestration émettant des appels vers `/var/run/docker.sock`, en particulier `/containers/create` ou `/containers/{id}/start`. **Pourquoi cela fonctionne :** Langflow, comme la plupart des serveurs applicatifs, n'a aucune raison légitime de créer des conteneurs. Correctement limitée aux processus hors orchestration, cette détection génère presque aucun faux positif. 3. ### Création d'un conteneur privilégié lié à l'hôte **Télémétrie du runtime de conteneurs** À surveiller : requêtes de création de conteneur combinant `Privileged: true` avec `PidMode: host` ou un montage bind du système de fichiers racine (/:/host). **Pourquoi cela fonctionne :** cette combinaison n'a pratiquement aucun cas d'usage légitime en dehors d'agents système spécialisés et constitue la signature directe d'une tentative d'évasion de conteneur. 4. ### nsenter depuis l'intérieur d'un conteneur **Télémétrie des processus** À surveiller : `nsenter --target 1` ou des appels équivalents de franchissement d'espace de noms émis depuis un processus conteneurisé. **Pourquoi cela fonctionne :** cette action franchit délibérément la frontière d'isolation que le conteneur est censé faire respecter. Une application conteneurisée ne devrait jamais l'effectuer légitimement. 5. ### Énumération d'un stockage d'objets avec identifiants par défaut **Journaux applicatifs / d'accès** À surveiller : appels ListBuckets séquentiels suivis de requêtes GetObject ciblées vers des fichiers nommés `credentials.json` ou `.env`, authentifiés avec une paire d'identifiants par défaut connue telle que `minioadmin:minioadmin`. **Pourquoi cela fonctionne :** ce schéma d'énumération large qui se resserre immédiatement sur des fichiers nommés comme des identifiants se distingue des lectures applicatives normales et reste cohérent avec les comportements connus de JADEPUFFER. 6. ### Chiffrement massif sur les chemins d'actifs IA / ML **Télémétrie intégrité des fichiers / EDR** À surveiller : création massive et rapide de fichiers suffixés .locked, concentrée dans des répertoires contenant des poids de modèles, index vectoriels ou jeux de données d'entraînement. Alertez séparément sur tout processus renommant plus qu'un seuil de fichiers sur une courte période. **Pourquoi cela fonctionne :** la concentration sur des extensions propres à l'IA/ML, plutôt qu'un balayage large et indiscriminé, signale que l'opérateur comprend et cible volontairement l'infrastructure IA au lieu d'exécuter un locker générique. 7. ### Exécution de commandes anti-récupération Windows **Télémétrie EDR / processus** À surveiller : suppression de clichés instantanés via `vssadmin.exe` ou modifications de la récupération de démarrage via `bcdedit.exe` exécutées par un binaire inconnu ou récemment déposé, surtout sur les systèmes proches du stockage de modèles ou des cibles de sauvegarde. **Pourquoi cela fonctionne :** l'utilisation légitime de ces outils d'administration est rare et passe généralement par des processus connus de gestion des changements. Une invocation non planifiée depuis un nouveau processus, surtout hors des chemins de déploiement normaux, est un indicateur fort de ransomware, quel que soit le vecteur de compromission initial. 8. ### Cadence de beacon à intervalle fixe **Télémétrie réseau / DNS** À surveiller : connexions sortantes se répétant à un intervalle fixe précis (30 minutes dans le cas observé) depuis un processus lancé par cron sur un serveur applicatif. **Pourquoi cela fonctionne :** le trafic piloté par un humain ou une application légitime produit rarement une cadence aussi exacte. Les beacons lancés par tâche planifiée constituent un signal durable de persistance même si la charge utile change, car le mécanisme cron lui-même reste identique. ## Recommandations de durcissement Toutes les campagnes JADEPUFFER documentées jusqu'à présent ont reposé sur l'exposition à Internet et des configurations par défaut, et non sur la capacité à vaincre un environnement durci. **Gain rapide** = une seule modification de configuration, déployable en quelques jours. **Standard** = nécessite un déploiement ou un changement d'architecture, réalisable en quelques semaines. 1. ### Corriger Langflow et ne jamais exposer les terminaux de validation de code à Internet **Critique** Mettez à jour vers une version de Langflow corrigeant CVE-2025-3248. Ce terminal figure dans le catalogue Known Exploited Vulnerabilities de la CISA avec une échéance de remédiation dépassée depuis mai 2025. Le seul état des correctifs ne suffit pas : placez Langflow et les serveurs d'orchestration IA similaires derrière une authentification et des contrôles d'accès réseau, quelle que soit leur version. **À faire :** considérez comme inacceptable l'exposition Internet d'un terminal d'exécution de code, quel que soit son état de correction. Confirmez que CVE-2025-3248 apparaît dans votre système de gestion des correctifs et qu'elle est corrigée sur toutes les instances Langflow gérées. 2. ### Ne jamais exposer un compte administrateur de base de données à Internet **Gain rapide** Le serveur MySQL et Nacos en aval était accessible depuis un hôte externe avec des identifiants root. Appliquez des identifiants forts et uniques ainsi que des restrictions d'adresses IP source sur chaque port d'administration de base de données. **À faire :** vérifiez qu'aucune base de données de production n'accepte de connexion administrative en dehors d'un réseau de gestion défini. Auditez MySQL, Nacos, Postgres et tout service acceptant des connexions d'administration à distance. 3. ### Restreindre l'accès au socket Docker **Standard** Si `/var/run/docker.sock` doit être accessible depuis un conteneur applicatif, placez-le derrière un proxy de socket n'autorisant que les appels API strictement nécessaires à l'application. Langflow n'en nécessite aucun. **À faire :** exécutez les conteneurs applicatifs sans privilèges root et alertez sur tout appel à l'API Docker Engine provenant d'un processus hors orchestration. Supprimez le montage du socket des conteneurs applicatifs qui n'en ont pas besoin. 4. ### Durcir Nacos et les plateformes de découverte de services configurées par défaut **Standard** Remplacez la valeur token.secret.key par défaut plutôt que de conserver la valeur documentée, mettez à niveau vers une version imposant une clé personnalisée et ne connectez jamais Nacos à sa base sous le compte root. **À faire :** auditez toute instance Nacos, MinIO ou service similaire utilisant encore des identifiants fournisseur par défaut. MinIO avec identifiants par défaut a été directement exploité dans les deux campagnes sans vulnérabilité supplémentaire. 5. ### Ne pas stocker de clés API fournisseur ni d'identifiants cloud dans un runtime d'orchestration IA **Gain rapide** La première campagne JADEPUFFER confirme que ces secrets sont collectés immédiatement après l'obtention de l'exécution. Placez-les dans un gestionnaire de secrets dédié, hors de portée des processus accessibles depuis le Web. **À faire :** auditez et renouvelez tout identifiant accessible à un processus Langflow sur un hôte ayant exécuté une version vulnérable. Considérez les clés API LLM et identifiants cloud des environnements applicatifs comme compromis si CVE-2025-3248 n'a pas été corrigée. 6. ### Conserver des snapshots hors ligne ou immuables des artefacts de modèles de production **Standard** Les données métier chiffrées peuvent généralement être restaurées depuis une sauvegarde. Les points de contrôle de modèles, index vectoriels et jeux de données d'entraînement chiffrés ne peuvent souvent pas être reproduits sans plusieurs semaines de réentraînement. Sysdig estime le coût de récupération entre 75 000 et 500 000 dollars par modèle. **À faire :** appliquez des contrôles d'accès au niveau du système de fichiers sur les répertoires de poids de modèles afin qu'ils ne soient pas lisibles par tous depuis le processus de l'application Web. Incluez les artefacts de modèles dans la planification de sauvegarde et de récupération au même titre que les bases de données, avec au moins une copie hors ligne ou immuable. Aucune technique individuelle de JADEPUFFER n'exigeait de vaincre un environnement durci. Les contrôles 1 à 5 ferment les expositions spécifiques utilisées par l'opérateur dans les deux campagnes documentées. Le contrôle 6 limite les dégâts si un opérateur similaire obtient l'accès par un autre vecteur. ## Références principales Sources de cette page. Dernière vérification par rapport aux rapports de Sysdig Threat Research Team jusqu'au 20 juillet 2026. - [Sysdig Threat Research Team — JADEPUFFER : ransomware agentique pour l'extorsion automatisée de bases de données](https://www.sysdig.com/blog/jadepuffer-agentic-ransomware-for-automated-database-extortion) — 1er juil. 2026 - [Sysdig Threat Research Team — JADEPUFFER évolue : l'acteur agentique déploie un ransomware conçu pour détruire les modèles IA](https://www.sysdig.com/blog/jadepuffer-evolves-the-agentic-threat-actor-deploys-ransomware-built-to-destroy-ai-models) — 20 juil. 2026 - [Infosecurity Magazine — Des chercheurs revendiquent le premier ransomware entièrement agentique : JadePuffer](https://www.infosecurity-magazine.com/news/researchers-first-agentic/) — 6 juil. 2026 - [Infosecurity Magazine — JadePuffer revient avec un ransomware conçu pour effacer les modèles IA](https://www.infosecurity-magazine.com/news/jadepuffer-ai-model-ransomware/) — 20 juil. 2026 - [MITRE ATT&CK — Référence du framework Enterprise](https://attack.mitre.org/) — À jour