Blog
AI RansomwareAgentic AILangflowThreat Research

JADEPUFFER: il ransomware con AI che ha condotto l'attacco da solo

JADEPUFFER è il primo ransomware agentico documentato: un agente AI ha fatto ricognizione, pivot e cifratura end-to-end, correggendo un login fallito in 31 secondi. Il runbook.

Zero Hunt Research··9 min di lettura

Il 1º luglio 2026 il Sysdig Threat Research Team ha pubblicato l'analisi di un'intrusione che chiama JADEPUFFER: quella che i ricercatori valutano come la prima operazione ransomware condotta end-to-end da un agente LLM autonomo. Nessuna mano umana sulla tastiera nei passaggi che contano — l'agente ha fatto la ricognizione, raccolto le credenziali, effettuato il pivot verso il vero obiettivo, è entrato in un database di produzione, lo ha cifrato e ha lasciato la nota di riscatto da solo. Il numero che dovrebbe fermarvi: quando un login è fallito, l'agente ha diagnosticato l'errore e prodotto una correzione funzionante in 31 secondi. Nessun red teamer umano si muove a quella cadenza, e nessun blue team guidato dai ticket risponde a quella velocità.

Le due vulnerabilità che ha usato non sono nuove. È esattamente questo il punto dell'articolo.

Perché il ransomware con AI rompe l'orologio della risposta

Per un decennio l'economia difensiva si è appoggiata a un'assunzione: l'attaccante è umano, e gli umani sono lenti. Sbagliano i comandi, dormono, cambiano contesto, aspettano un collega. Il dwell time medio nei report sulle violazioni resta nell'ordine di giorni-settimane proprio perché una persona deve pensare tra un passo e l'altro, e quel tempo di pensiero è dove vivono detection e response.

Un agente elimina quel margine. Sysdig ha registrato l'operatore che emette oltre 600 payload distinti, esegue cicli di diagnosi degli errori in 12–19 secondi e testa fix candidati in parallelo. Quando un tentativo di login su Nacos è fallito, non si è bloccato: ha riletto l'errore, si è adattato ed è riuscito 31 secondi dopo. Portate a zero il tempo di pensiero umano e l'intera kill chain si comprime da giorni a minuti. Il digest mattutino del vostro SIEM diventa un'autopsia.

Sysdig conia un termine utile per questa categoria: l'agentic threat actor (ATA) — "un operatore la cui capacità offensiva è erogata da un agente AI anziché da un toolkit guidato da un umano". È l'inquadratura giusta. Non è malware con una config furba; è un loop di reasoning con i privilegi di root.

La versione scomoda della storia: JADEPUFFER non ha usato uno zero-day. Ha usato un bug di Langflow del 2025 e uno di Nacos del 2021 — entrambi corretti, entrambi pubblici, entrambi banali. La novità non è l'exploit. La novità è che nessuno ha dovuto essere sveglio o brillante per concatenarli. L'agente lo era.

La kill chain, passo per passo

L'operazione è stata in due atti. La macchina esposta su internet non era l'obiettivo — era la porta.

Atto 1 — l'host Langflow (accesso iniziale). Il punto di ingresso è stato CVE-2025-3248, una vulnerabilità di autenticazione mancante (CWE-306 + CWE-94) nell'endpoint /api/v1/validate/code di Langflow che permette a un attaccante non autenticato di eseguire Python arbitrario. CVSS 9.8. Corretta in Langflow 1.3.0 il 31 marzo 2025 e aggiunta al catalogo KEV di CISA il 5 maggio 2025 — lo stesso difetto che Trend Micro ha osservato distribuire la botnet Flodrix settimane prima. Una volta dentro, l'agente:

  • Ha profilato l'host (id, uname -a, hostname).
  • Ha cercato chiavi API di LLM (OpenAI, Anthropic, DeepSeek, Gemini), credenziali cloud, wallet crypto e segreti di database — un profilo di bersaglio che dice esattamente quanto vale un host di tooling AI.
  • Ha esfiltrato il database PostgreSQL di Langflow e letto i segreti locali.
  • Ha raggiunto un object store MinIO interno con le credenziali di default minioadmin:minioadmin e prelevato credentials.json.
  • Ha piantato un beacon cron che chiama casa ogni 30 minuti.

Atto 2 — il database di produzione (il vero obiettivo). Dal punto d'appoggio su Langflow ha fatto pivot verso un server MySQL che ospitava Alibaba Nacos e ha sfruttato CVE-2021-29441 — un bypass di autenticazione vecchio di quattro anni (CWE-290, CVSS 9.8, corretto in Nacos 1.4.1) che salta l'AuthFilter falsificando un header User-Agent. Ha forgiato un JWT con la chiave di firma di default documentata, inserito un admin backdoor, sondato una via di container escape (/var/run/docker.sock, /proc/1/cgroup, vettori UDF di MySQL) e poi ha detonato.

La distruzione è stata nativa del database e astuta, ed è ciò che la rende difficile da intercettare sull'endpoint:

Passo Cosa ha fatto l'agente Perché fa male
Cifra AES_ENCRYPT() su tutti i 1.342 config item di Nacos Nessun dropper, nessun ransomware.exe — solo SQL
Distrugge Ha eliminato le tabelle config_info e history Gli originali spariti, non solo bloccati
Estorce Ha creato una tabella README_RANSOM con indirizzo BTC + contatto Proton La nota vive dentro il DB
Nega il recupero Chiave = base64(uuid4 + uuid4), mai salvata né inviata Irrecuperabile anche pagando

L'ultima riga è quella crudele. La chiave AES è stata generata da randomness effimera e mai persistita né trasmessa. Non c'è nessuna chiave da ricomprare. Pagare non serve a nulla. (Per precisione: AES_ENCRYPT() usa di default AES-128-ECB salvo riconfigurazione, anche se la nota dichiara AES-256 — un dettaglio che conta se siete tentati di tentare un recupero crittografico.)

Cosa rileva davvero un'operazione di ransomware agentico

Ecco la domanda operativa che il report JADEPUFFER impone: se l'operatore reagisce in 31 secondi e il payload è SQL nativo anziché un binario, quale sensore tiene il passo?

Non l'agente endpoint da solo. La cifratura è girata come chiamate AES_ENCRYPT() dentro un processo MySQL legittimo — non c'è nessun eseguibile malevolo che un EDR possa segnalare, nessun binario non firmato, nessuna firma di process injection. Non la revisione notturna dei log, perché quando un umano la legge i database sono già stati eliminati. Ciò che resta è quello che sopravvive sempre quando l'endpoint viene ingannato: la rete. L'agente ha comunque dovuto profilare l'host, scansionare il range interno, raggiungere MinIO, fare pivot verso la macchina Nacos, forgiare una sessione ed esfiltrare verso l'infrastruttura di staging. Sono molti pacchetti, e la loro forma — un host Langflow che storicamente serviva solo flow e che all'improvviso scansiona subnet interne e fa beaconing verso un ASN mai visto — è anomala che l'operatore sia una persona o un modello.

I due fatti da interiorizzare:

  1. La prevenzione è un problema di validazione, non di patch. Entrambe le CVE avevano fix disponibili da mesi o anni. Le vittime di JADEPUFFER non erano impossibili da patchare; erano ignare di essere ancora esposte. Il divario tra "abbiamo applicato la patch" e "il percorso è davvero chiuso nel nostro ambiente" è esattamente dove opera un agente.
  2. La detection è un problema di velocità. Contro una macchina che si adatta in 31 secondi, un controllo che riferisce domani mattina non è un controllo.

Remediation

JADEPUFFER ha concatenato due difetti patchati da tempo. Se uno dei due fosse stato davvero chiuso — o il percorso laterale davvero bloccato — la catena si spezza. Trattatelo come un runbook a due CVE.

1. Sono interessato?

  • Langflow: verificate la versione. pip show langflow oppure curl -s http://<host>:7860/api/v1/version. Qualsiasi versione < 1.3.0 è sfruttabile via /api/v1/validate/code. Qualsiasi istanza Langflow raggiungibile da internet è comunque un'esposizione da codice rosso — è progettata per eseguire codice.
  • Nacos: verificate la versione nel footer della console o con curl -s http://<host>:8848/nacos/v1/console/server/state. Qualsiasi versione < 1.4.1 porta il bypass dell'AuthFilter di CVE-2021-29441. Confermate inoltre di non usare la chiave di firma JWT di default documentata (nacos.core.auth.default.token.secret.key).

2. Patch — versioni corrette esatte

  • Langflow 1.3.0 o successiva (fix rilasciato il 31 marzo 2025).
  • Nacos 1.4.1 o successiva. Poi ruotate nacos.core.auth.default.token.secret.key a un valore unico ad alta entropia — patchare il binario non cambia una chiave di firma che l'attaccante potrebbe già conoscere.

3. Non potete patchare stanotte? Controlli compensativi

  • Mettete Langflow dietro autenticazione e togliete /api/v1/validate/code da internet pubblico — restringetelo in rete ai soli operatori fidati.
  • Filtrate con firewall la porta admin di Nacos (8848) verso il solo tier applicativo; non deve mai essere raggiungibile da internet.
  • Eliminate le credenziali di default che hanno reso banale l'Atto 1: ruotate minioadmin:minioadmin e ogni altro default nel raggio d'impatto.
  • Imponete un egress default-deny dall'host di tooling AI — sia il beacon cron sia l'esfiltrazione avevano bisogno di uscita verso l'esterno.

4. Cercate segni di compromissione (IOC + ATT&CK)

Sysdig ha pubblicato indicatori concreti — cercateli subito:

  • C2: 45.131.66[.]106 (beacon cron verso hxxp://45.131.66[.]106:4444/beacon, ogni 30 min) — T1071.001, T1053.003.
  • Staging/esfiltrazione: 64.20.53[.]230 (AS19318) — T1041.
  • Artefatti del riscatto: una tabella README_RANSOM; BTC 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy; contatto e78393397[@]proton[.]me.
  • Tentativi di sfruttamento di Langflow su /api/v1/validate/code — T1190; esecuzione anomala di python/os.system sotto il servizio Langflow — T1059.006.
  • Nacos: account admin inattesi, richieste di auth con User-Agent falsificato, sessioni con JWT forgiato — T1078 / T1550; sonde di container escape verso /var/run/docker.sock o /proc/1/cgroup — T1611.
  • Scraping di credenziali da variabili d'ambiente e file di segreti in cerca di chiavi API — T1552.001.

5. Eradicare + verificare

Rimuovete il beacon cron e ogni admin backdoor su Nacos. Ruotate tutto ciò che l'agente poteva leggere: le chiavi API di LLM che cercava (OpenAI/Anthropic/DeepSeek/Gemini), le credenziali cloud, le chiavi MinIO, le password dei database e la chiave di firma di Nacos. Ripristinate la config di Nacos da backup — gli originali sono stati eliminati, quindi state ricostruendo, non decifrando. Poi confermate che il percorso Langflow→Nacos sia davvero chiuso percorrendolo voi stessi, dopo la patch — non rileggendo il banner di versione.

Dove si colloca Zero Hunt

Il fallimento in JADEPUFFER non è stato che le CVE fossero sconosciute — erano catalogate, in KEV, patchabili. Il fallimento è stato che nessuno aveva verificato, dalla posizione di un attaccante, che la macchina Langflow potesse raggiungere quella Nacos e che entrambe fossero ancora sfruttabili. Questa verifica è ciò che il pentest generativo a 10 agenti di Zero Hunt fa in continuo: gli agenti Recon, Exploit e Web scrivono una sonda per-target contro il vostro reale endpoint /api/v1/validate/code con un LLM locale — senza dipendere da ExploitDB o da un PoC pubblico — e gli agenti Credential, Post-Exploit e Pivot percorrono l'esatta catena Langflow→Nacos nel vostro ambiente, dimostrando se il percorso è aperto prima che lo trovi un attore agentico. Ogni exploit gira in un container Docker effimero con hardening gVisor opzionale, così l'host dell'appliance non viene mai toccato — la disciplina di contenimento che alla rete vittima è mancata. Le skill sono ri-testate nell'AI Gym contro Vulhub, NYU CTF Bench e 314 task black-box basati su CVE prima di toccare la produzione, e ogni finding è firmato ECDSA. Una campagna change-triggered parte entro l'ora in cui una nuova istanza Langflow compare sul vostro perimetro — chiudendo la finestra che un agente corre a sfruttare. E poiché l'intero motore è 100% on-prem con un LLM locale, non ha bisogno di nessuna delle chiavi API cloud che JADEPUFFER andava cercando.

Contro un operatore che si adatta in 31 secondi, la detection deve girare a velocità di rete. L'AI Traffic Analysis di Zero Hunt è un modello di deep learning con quattro teste di inferenza parallele — traffico sospetto, classificazione malware, identificazione del tipo di attacco, fingerprinting applicativo — addestrato su miliardi di sequenze PCAP e in esecuzione localmente sulla GPU dell'appliance con un baseline di 2,7+ Gbit/s. Vede la scansione interna, il pivot mai visto prima e il fan-out della cifratura di massa mentre accadono sul filo — non nel digest del mattino, che contro un operatore-macchina è solo il verbale di ciò che avete già perso.

La prima operazione di ransomware agentico ha riusato due bug banali e patchati da tempo. Anche la prossima lo farà — perché il collo di bottiglia non è mai stato l'exploit. Era l'umano. Quel vincolo, sul lato dell'attaccante, è caduto. Deve cadere anche sul vostro.