Claude adatta un exploit RCE a un PLC WAGO: shellcode ARM eseguito senza autenticazione
Vulnerabilità

Immagine illustrativa generata con AI

Claude adatta un exploit RCE a un PLC WAGO: shellcode ARM eseguito senza autenticazione

Claude adatta exploit RCE CVE-2021-31886 da WAGO 750-852 a 750-831: overflow FTP Nucleus NET senza autenticazione, shellcode ARM eseguito su hardware.

Testo generato da intelligenza artificiale, pubblicato senza revisione umana. Trasparenza IA

Dall’exploit esistente al codice eseguito su hardware reale

Forescout Research, attraverso Vedere Labs, ha adattato con l’assistenza di Claude un exploit di remote code execution da un PLC WAGO a un modello differente. La prova ha funzionato su hardware reale, consentendo l’esecuzione di shellcode ARM controllato dal ricercatore senza autenticazione preventiva.

Il punto di partenza era un exploit già sviluppato per il WAGO 750-852. Il bersaglio scelto per il porting era invece un WAGO 750-831, equipaggiato con firmware V01.04.16.

A Claude sono stati messi a disposizione tre elementi: il vecchio exploit, il binario del firmware da analizzare e il controller fisico. Il modello poteva utilizzare un terminale, il reverse engineering tool Ghidra e interagire direttamente con il PLC.

Le sessioni sono iniziate con Claude Sonnet 4.6. Dopo che i primi tentativi di ottenere l’RCE si erano arenati, il lavoro è proseguito con Claude Opus 4.6.

Non si è trattato di un processo autonomo. Il ricercatore ha dovuto guidare continuamente il modello, valutare i risultati e correggere la direzione dell’analisi. La fase finale è durata 8 ore e 32 minuti, consumando 535,74 dollari di API.

Forescout ha inoltre rilevato un aspetto poco favorevole all’AI: lo stesso ricercatore avrebbe forse potuto completare il porting iniziale più rapidamente, spendendo meno e senza distruggere il dispositivo durante gli esperimenti successivi.

CVE-2021-31886 colpisce il comando FTP USER

L’exploit sfrutta CVE-2021-31886, una vulnerabilità critica nel server FTP del componente Nucleus NET, integrato nel sistema operativo real-time Nucleus RTOS.

Il difetto consiste in uno stack-based buffer overflow causato dalla validazione insufficiente della lunghezza del comando FTP USER. Siemens lo classifica anche come CWE-170, cioè gestione impropria della terminazione NULL.

La vulnerabilità è raggiungibile attraverso TCP/21 prima dell’autenticazione. Un aggressore non deve quindi possedere credenziali né convincere un operatore a compiere un’azione. Il punteggio è CVSS 9.8, con vettore:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Le conseguenze previste comprendono denial of service ed esecuzione remota di codice, con impatto potenziale su riservatezza, integrità e disponibilità.

CVE-2021-31886 appartiene al gruppo di 13 vulnerabilità chiamato NUCLEUS:13, reso pubblico nel novembre 2021. L’advisory Siemens ProductCERT SSA-044112 è stato pubblicato il 2021-11-09 e aggiornato il 2021-12-14 alla versione V1.1.

Non sono disponibili indicazioni sull’inserimento di CVE-2021-31886 nel catalogo Known Exploited Vulnerabilities della CISA, né su un’eventuale scadenza federale di remediation. La dimostrazione prova comunque l’esistenza di un exploit funzionante in laboratorio.

Una ricerca eseguita il 1 settembre non ha trovato repository GitHub identificati dal nome o dalla descrizione con CVE-2021-31886. Non risultavano risultati neppure in Exploit-DB o Packet Storm. Il controllo sui metadati GitHub non esclude, tuttavia, che codice pertinente sia contenuto in repository con nomi diversi.

La modifica decisiva: da QUIT a CWD, senza CRLF

Il porting richiedeva di superare una differenza nel comportamento del WAGO 750-831. Durante la normale gestione della sessione FTP, il dispositivo azzerava 256 byte del buffer controllato dall’attaccante. Il payload veniva quindi cancellato prima di poter essere eseguito.

L’exploit originario per il 750-852 utilizzava una sequenza composta da USER e QUIT. Claude ha modificato il flusso sostituendo il secondo comando con CWD e rimuovendo il terminatore CRLF.

Questa combinazione alterava il percorso di elaborazione del server FTP. La richiesta non veniva completata secondo il comportamento consueto e il buffer rimaneva integro abbastanza a lungo da consentire l’esecuzione del payload.

Dopo il primo risultato, basato su un semplice shellcode NOP, Claude ha prodotto in 12 minuti due payload ARM con effetti osservabili:

  1. invio di richieste ICMP echo verso un sistema controllato dal ricercatore;
  2. trasmissione di un datagramma UDP contenente la stringa PWNED.

L’esecuzione avveniva nel contesto della callback di ricezione Ethernet. La prova dimostra quindi controllo del flusso di esecuzione e capacità di generare traffico di rete dal PLC.

Non dimostra invece, da sola, la manipolazione del processo industriale, della ladder logic o delle funzioni applicative complete del controller. Quel passaggio richiederebbe ulteriori capacità e una conoscenza specifica dell’impianto.

Durante l’analisi, Claude ha anche segnalato un possibile difetto separato nel ciclo di estrazione dei comandi FTP. La revisione umana ha ritenuto plausibile l’esistenza di una vulnerabilità distinta, ma il problema non possiede un identificativo CVE e non ne è stata dimostrata la sfruttabilità.

I dispositivi WAGO coinvolti e l’assenza di aggiornamenti

L’elenco dei prodotti vulnerabili comprende numerosi PLC e fieldbus coupler WAGO basati su Nucleus V1 RTOS:

Dispositivo Versioni interessate
WAGO 750-829 FW16 e precedenti
WAGO 750-831/000-00x FW14 e precedenti
WAGO 750-852 FW16 e precedenti
WAGO 750-880/0xx-xxx FW16 e precedenti
WAGO 750-881 FW16 e precedenti
WAGO 750-882 FW16 e precedenti
WAGO 750-885/0xx-xxx FW16 e precedenti
WAGO 750-889 FW16 e precedenti
WAGO 750-331 FW16 e precedenti
WAGO 750-352/xxx-xxx FW16 e precedenti

Per questi prodotti basati su Nucleus V1 RTOS non sono disponibili aggiornamenti. Esiste inoltre una lacuna documentale: i modelli 750-882 e 750-885/0xx-xxx figurano tra i dispositivi vulnerabili, ma non nella tabella di remediation e nella relativa sezione sulle mitigazioni. Il loro stato di correzione non è specificato.

La situazione varia per altri prodotti Nucleus. Siemens indica di aggiornare Nucleus ReadyStart V3 a V2017.02.4 o successiva. Per CVE-2021-31886, una correzione era già inclusa nelle release V2013.08.1 e successive.

Per Nucleus NET, invece, risultano coinvolte tutte le versioni e non è prevista una remediation generale. Gli utilizzatori devono rivolgersi al supporto Siemens o al team Nucleus. Per Nucleus Source Code, tutte le versioni richiedono analogamente un contatto diretto per patch e aggiornamenti.

Il test C2 che ha reso inutilizzabile il PLC

Una sessione successiva mirava a trasformare l’exploit in un impianto di command-and-control. Durante il tentativo, il codice ha scritto in una regione di memoria mappata sulla flash e ha reso il PLC permanentemente inutilizzabile.

L’incidente evidenzia una differenza sostanziale tra l’uso di agenti AI sul software tradizionale e l’interazione con sistemi fisici. Una scrittura errata non produce necessariamente soltanto un crash recuperabile: può compromettere firmware, memoria persistente o funzionamento dell’apparecchiatura.

Il rischio immediato non è quindi soltanto quello di un modello che conduce autonomamente un attacco. Anche un agente autorizzato, guidato da un operatore, può interpretare male una struttura di memoria ed eseguire azioni irreversibili.

Parallelamente, l’advisory congiunto AA26-231A di CISA, NSA, FBI, DOE ed EPA descrive una minaccia attiva contro PLC, non limitata al solo ecosistema Siemens. Gli attori osservati impiegano script di exploitation generati o assistiti dall’AI, talvolta mascherati da strumenti legittimi di monitoraggio OT.

Servizi come Censys e ZoomEye vengono usati per individuare controller esposti a Internet. Nel caso dei Siemens S7, gli strumenti combinano Python con snap7.dll o python-snap7, ottenendo capacità di lettura e scrittura attraverso S7comm.

L’attività, segnalata nell’advisory del 19 agosto, è stata valutata come probabilmente orientata alla ricognizione persistente e allo sviluppo di capacità. Non è stata attribuita a uno specifico gruppo.

Difese immediate e segnali da cercare sulla rete OT

Per i WAGO privi di aggiornamenti, la misura prioritaria è disabilitare FTP quando non indispensabile. In alternativa, occorre bloccare o filtrare TCP/21, impedendo soprattutto qualsiasi esposizione diretta verso Internet.

I gestori dovrebbero inoltre:

  • inventariare PLC, firmware e servizi attivi;
  • separare reti IT, OT e workstation di engineering;
  • limitare gli accessi remoti di fornitori e system integrator;
  • monitorare le modifiche fuori dalle finestre autorizzate;
  • predisporre procedure di ripristino compatibili con i controller installati;
  • verificare l’integrità delle configurazioni e dei programmi industriali.

Sul traffico FTP meritano attenzione richieste USER anormalmente lunghe, sequenze insolite con QUIT o CWD e terminatori CRLF assenti o manipolati. Richieste ICMP verso host esterni e datagrammi UDP contenenti PWNED sono indicatori specifici della prova di laboratorio, non di una campagna criminale conosciuta.

Negli ambienti Siemens S7 vanno cercati anche accessi S7comm da host non autorizzati, scansioni sequenziali sulla porta 102, enumerazioni della CPU e scritture sui data block fuori orario. La presenza di Snap7.dll o script Python con funzioni S7comm su sistemi diversi dalle workstation di engineering approvate richiede verifica immediata.

La dimostrazione WAGO non prova che l’AI possa sostituire un ricercatore esperto. Mostra però che un modello, se dotato di strumenti, firmware e accesso al bersaglio, può contribuire a trasformare una vulnerabilità documentata in codice funzionante su un PLC reale.

Leggi anche

Fonti

Questo articolo è una rielaborazione originale basata sulle fonti seguenti.

CVE trattate in questo articolo

Argomenti correlatiClaude AIexploit RCEPLC WAGOCVE-2021-31886shellcode ARMNucleus NETbuffer overflow
Torna alla home