Cyberattacchi alimentati dall'intelligenza artificiale: Come individuare, prevenire e difendersi dalle minacce intelligenti

Leggi ora
Per le traduzioni dei siti utilizziamo l'intelligenza artificiale e, sebbene ci sforziamo di essere accurati, non sempre le traduzioni sono precise al 100%. La vostra comprensione è apprezzata.

Protezione dei sistemi OT dagli attacchi remoti: Come MetaDefender OT Security™ protegge il controllore Micrologix™ 1400 da CVE-2021-22659

da OPSWAT
Condividi questo post
Partecipanti al programma di borse di studio OPSWAT

La sicurezza dei sistemi di controllo industriale e degli ambienti OT dagli attacchi remoti è più che mai critica, soprattutto con vulnerabilità come CVE-2017-14469 e ora CVE-2021-22659 che hanno come obiettivo il controllore Micrologix 1400 di Rockwell Automation, ampiamente utilizzato. Gli studenti dell'OPSWAT Fellowship Program hanno testato questa vulnerabilità in un ambiente controllato, evidenziando la necessità di sicurezza. 

In questo blog esploriamo il modo in cui gli studenti hanno dimostrato come gli aggressori potrebbero sfruttare la vulnerabilità per causare il blocco dei sistemi e come la mancanza di un'adeguata convalida degli input potrebbe essere sfruttata per interrompere le operazioni del PLC. 

Che cos'è un PLC? Spiegazione di Micrologix 1400 di Rockwell Automation

Un PLC (Programmable Logic Controller) è un computer industriale progettato per automatizzare i processi controllando macchinari e altre operazioni industriali. Funziona in ambienti difficili ed è programmato per eseguire compiti specifici in base agli input dei sensori. Il controllore MicroLogix 1400 di Rockwell Automation è un PLC compatto e modulare comunemente utilizzato in applicazioni di piccole e medie dimensioni. Noto per la sua economicità e flessibilità, supporta diversi protocolli di comunicazione e offre opzioni di I/O digitali e analogici per l'interfacciamento con i dispositivi.

Immagine di un dispositivo OPSWAT utilizzato per il monitoraggio del sistema di controllo industriale

La programmazione avviene tipicamente tramite il software di Rockwell Automation attraverso la logica ladder, che consente agli utenti di creare sequenze di controllo. MicroLogix 1400 è versatile e adatto a compiti quali il controllo delle macchine e l'automazione dei processi. La sua modularità consente agli utenti di espandere e personalizzare il sistema in base a requisiti applicativi specifici.

Introduzione a CVE-2021-22659

Nel gennaio 2021, Rockwell Automation ha ricevuto una segnalazione da Parul Sindhwad e dal Dr. Faruk Kazi del COE-CNDS del Veermata Jijabai Technological Institute (VJTI), India, relativa a una vulnerabilità nel controllore MicroLogix™ 1400. Hanno identificato una falla di sicurezza nella versione 21.6 e precedenti che consente a un aggressore remoto non autenticato di inviare un pacchetto Modbus appositamente creato, consentendo all'aggressore di recuperare o modificare valori casuali nel registro. Se sfruttato con successo, questo potrebbe portare a un buffer overflow, con conseguente condizione di denial-of-service. Il LED FAULT lampeggia in ROSSO e le comunicazioni possono essere interrotte. Il ripristino della condizione di denial-of-service richiede la cancellazione dell'errore da parte dell'utente. 

NVD ha valutato questa vulnerabilità di sicurezza come di gravità elevata

Metriche CVSS 3.x che mostrano un punteggio di gravità elevato di 8,6 dal NIST NVD.

Fasi di attacco

Diagramma che illustra le fasi di un cyberattacco a PLC MicroLogix

Un aggressore remoto non autenticato con accesso alla rete del PLC MicroLogix 1400 vulnerabile potrebbe inviare un pacchetto appositamente creato per modificare i valori del registro. Ciò potrebbe causare una condizione di denial-of-service per il dispositivo, con conseguente corruzione del sistema e tempi di inattività. Un incidente di questo tipo può interrompere in modo significativo le operazioni di produzione e altre attività commerciali dell'organizzazione.

Protocollo Modbus

Sviluppato da Modicon nel 1979, il protocollo Modbus è una struttura di messaggistica progettata per stabilire una comunicazione client-server tra dispositivi intelligenti. Originariamente progettato per l'uso con i PLC di Modicon, da allora è diventato un protocollo di comunicazione standard per la comunicazione tra dispositivi elettronici industriali. 

Esistono protocolli Modbus per Ethernet (Modbus TCP) e per linee seriali (Modbus RTU e Modbus ASCII). Il Modbus RTU (Remote Terminal Unit) trasmette direttamente i dati in forma binaria attraverso la comunicazione seriale, mentre il Modbus TCP (Transmission Control Protocol) incorpora i dati del protocollo Modbus in pacchetti TCP per la trasmissione su reti TCP/IP. 

Tabella di confronto dello stack Modbus e dei livelli OSI per i protocolli di comunicazione

Struttura dei messaggi Modbus

Modbus è un protocollo richiesta-risposta in cui il client trasmette una richiesta a un dispositivo Modbus e il dispositivo fornisce successivamente una risposta.

Diagramma che mostra la comunicazione della transazione Modbus tra client e server

Un messaggio Modbus inviato da un primario a un secondario contiene l'indirizzo del secondario, il "comando" (ad esempio "read register" o "write register"), i dati e una somma di controllo (LRC o CRC).

Struttura del messaggio Modbus RTU con intestazioni e codici funzione

Gli indirizzi dei dati sono utilizzati nei messaggi di interrogazione Modbus quando si leggono o modificano i dati. Modbus definisce quattro tipi di dati: Coil, Input Status, Input Register e Holding Register. Due di questi memorizzano valori on-off (1 bit), chiamati Coil e Discrete Inputs, e due memorizzano valori numerici come parole a 16 bit, chiamati Registers. Ciascuno di essi è di sola lettura o di lettura/scrittura.

Tipo di datiAccessoDescrizione
BobinaLettura-scritturaUscite a bit singolo.
Ingresso discretoSolo letturaIngressi a bit singolo.
Registro di ingressoSolo letturaRegistri di ingresso a 16 bit.
Registro di mantenimentoLettura-scritturaRegistri di uscita a 16 bit.

Esistono tre categorie di codici funzione Modbus:

  • Codici funzione pubblica - Da 1 a 127, ad eccezione dei codici definiti dall'utente. 
  • Codici funzione definiti dall'utente - in due intervalli, da 65 a 72 e da 100 a 110. 
  • Codici funzione riservati - Utilizzati da alcune aziende per i prodotti legacy e non disponibili per l'uso pubblico.
Tipo di funzioneNome della funzioneCodice funzione
Accesso ai datiAccesso ai bitIngressi discreti fisiciLettura degli ingressi discreti2
Bit interni o bobine fisiche

Leggere le bobine

Scrivere la bobina singola

Scrivere più bobine

1

5

15

Accesso a 16 bitRegistri di ingresso fisicoLettura dei registri di ingresso4
Registri interni o registri di uscita fisici

Lettura di più registri di mantenimento

Scrittura di un singolo registro di mantenimento

Scrittura di più registri di mantenimento

Lettura/Scrittura di più registri

Registro di scrittura della maschera

Coda FIFO di lettura

3

6

16

23

22

24

Accesso ai record dei file

Leggere il record del file

Scrivere il record del file

20

21

Diagnostica

Leggere lo stato di eccezione

Diagnostica

Ottenere il contatore di eventi Com 

Ottenere il registro eventi Com 

Segnala l'ID dello slave 

Leggere l'identificazione del dispositivo 

7

8

11

12

17

43

AltroTrasporto di interfaccia incapsulata43
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso ai bit
Categoria: Ingressi discreti fisici
Nome funzione: Lettura ingressi discreti
Codice funzione: 2
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso ai bit
Categoria: Bit interni o bobine fisiche
Nome della funzione: Lettura bobine
Codice funzione: 1
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso ai bit
Categoria: Bitinterni o bobine fisiche Bit interni o bobine fisiche
Nome funzione: Scrivi bobina singola
Codice funzione: 5
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso ai bit
Categoria: Bitinterni o bobine fisiche Bit interni o bobine fisiche
Nome della funzione: Scrittura di bobine multiple
Codice funzione: 15
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri di ingresso fisico
Nome della funzione: Lettura dei registri di ingresso
Codice funzione: 4
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Lettura di più registri di mantenimento
Codice funzione: 3
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Write Single Holding Register
Codice funzione: 6
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Scrittura di registri di mantenimento multipli
Codice funzione: 16
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Lettura/Scrittura di registri multipli
Codice funzione: 23
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Mask Write Register
Codice funzione: 22
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a 16 bit
Categoria: Registri interni o registri fisici di uscita
Nome della funzione: Lettura coda FIFO
Codice funzione: 24
Tipo di funzione: Accesso ai dati
Sottotipo: Accesso a record di file
Nome della funzione: Read File Record
Codice funzione: 20
Tipo difunzione: Accesso ai dati
Sottotipo:Accesso ai record di file Accesso a record di file
Nome della funzione: Scrivi record di file
Codice funzione: 21
Tipo di funzione: Diagnostica
Nome della funzione: Read Exception Status
Codice funzione: 7
Tipo di funzione: Diagnostica
Nome funzione: Diagnostica
Codice funzione: 8
Tipo di funzione: Diagnostica
Nome funzione: Get Com Event Counter
Codice funzione: 11
Tipo di funzione: Diagnostica
Nome funzione: Get Com Event Log
Codice funzione: 12
Tipo di funzione: Diagnostica
Nome della funzione: Report Slave ID
Codice funzione: 17
Tipo di funzione: Diagnostica
Nome della funzione: Read Device Identification
Codice funzione: 43
Tipo di funzione: Altro
Nome funzione: Encapsulated Interface Transport
Codice funzione: 43

Sfruttamento

Analisi delle vulnerabilità

Attraverso l'analisi, i nostri borsisti OPSWAT hanno scoperto che durante la comunicazione Modbus TCP, il protocollo manca di autenticazione e crittografia per i pacchetti trasmessi. Inoltre, la convalida dell'input nel PLC MicroLogix 1400 non è implementata correttamente. Di conseguenza, un aggressore remoto può analizzare il pacchetto Modbus TCP tramite packet sniffing e inviare qualsiasi richiesta al PLC senza autenticazione tramite il protocollo Modbus TCP. A causa della mancanza di convalida dell'input del dispositivo PLC MicroLogix 1400, un aggressore remoto autenticato potrebbe inviare un gran numero di pacchetti con valori casuali, causando potenzialmente un arresto anomalo del PLC.

Sovrascrittura del registro

Inizialmente, abbiamo cercato di catturare i pacchetti Modbus TCP utilizzati per leggere o scrivere i registri del PLC. A tal fine, abbiamo esaminato i pacchetti generati da un'applicazione denominata Modbus Poll, che facilita la lettura e la scrittura dei registri sul PLC MicroLogix 1400.

Schermata che mostra l'interfaccia del tool Modbus Poll per la scrittura di singoli registri

Utilizzando Wireshark per catturare tutti i pacchetti dall'interfaccia di rete, è stato possibile identificare il pacchetto Modbus TCP per la scrittura di un singolo registro:

Acquisizione del pacchetto che mostra una transazione Modbus con codice funzione per la scrittura di un singolo registro
Disaggregazione dettagliata del payload Modbus TCP, compresi gli identificatori di transazione e di protocollo

Sulla base della struttura dei pacchetti sniffati, abbiamo sviluppato un semplice script Python per inviare pacchetti TCP che richiedono la scrittura di un registro sul PLC di destinazione. In questo scenario, l'indirizzo IP del PLC è 192.168.93.89.

Esempio di codice Python per l'avvio di una connessione Modbus TCP e l'invio di un payload

Il registro del PLC è stato modificato dopo aver ricevuto il nostro pacchetto malevolo non autenticato. 

Acquisizione del pacchetto che mostra il protocollo Modbus/TCP con un codice funzione di scrittura di registri multipli
Schermata di un diagramma logico ladder con un blocco funzione ADD per l'aggiunta di valori sorgente

In Micro Logix 1400, la maggior parte delle istruzioni matematiche utilizza tre parametri: Sorgente A, Sorgente B e Destinazione

I valori per le sorgenti A e B possono provenire da due registri a 16 bit denominati N13:3 e N13:4. Inoltre, i valori di questi registri a 16 bit, come N13:3 e N13:4, sono limitati all'interno di un intervallo compreso tra -32.768 e +32.767. Se i valori di N13:3 e N13:4 sono grandi, il risultato dell'istruzione match può superare l'intervallo massimo del tipo di dati, causando potenzialmente un arresto anomalo del PLC. Di conseguenza, per indurre un crash nel PLC, è necessario scrivere valori casuali di grandi dimensioni in tutti i registri, compresi N13:3 e N13:4. Per ottenere questo risultato, abbiamo modificato il nostro script Python come segue: 

Script Python che mostra la creazione di un payload Modbus TCP per la scrittura di più registri

Simulare l'attacco

Per simulare un attacco reale, i nostri borsisti OPSWAT hanno cercato di indurre un crash nel PLC MicroLogix 1400 situato nei laboratori CIP OPSWAT , partendo dal presupposto che sia l'attaccante che il PLC siano sulla stessa rete e in grado di comunicare tra loro. 

Nello stato operativo normale del PLC MicroLogix 1400 presso i laboratori OPSWAT , con il PLC in modalità REMOTE RUN, tutti i valori dei registri sono validi e rientrano nell'intervallo designato per i rispettivi tipi di dati, a indicare che il programma utente funziona correttamente. 

Schermata del file di dati RSLogix 500 che mostra i valori dei dati N13 in formato decimale

All'esecuzione del nostro script Python, verranno inviati numerosi pacchetti Modbus TCP al PLC, richiedendo la scrittura di grandi valori casuali in tutti i registri senza autenticazione:

Acquisizione di pacchetti che mostrano ripetute richieste di scrittura di registri multipli Modbus TCP

Dopo aver ricevuto queste richieste di pacchetti malevoli, i valori di tutti i registri, compresi N13:3 e N13:4, vengono impostati a 16.990. Il risultato dell'operazione ADD sui registri N13:3 e N13:4 supera l'intervallo valido di un registro a 16 bit. Questo problema causa un overflow di numeri interi, che provoca un errore e interrompe il funzionamento del PLC, come indicato dallo stato FAULTED.

RSLogix 500 che mostra una condizione di errore e i valori dei dati per gli indirizzi N13

I nostri borsisti OPSWAT sono riusciti a bloccare il PLC MicroLogix 1400 sfruttando CVE-2021-22659.

Bonifica

Schermata di un dashboard delle vulnerabilità dei PLC che mostra i dettagli CVE e le vulnerabilità critiche per MicroLogix di Rockwell Automation.

Di fronte a vulnerabilità come CVE-2021-22659, una bonifica completa è fondamentale per proteggere i sistemi OT e cyber-fisici. Di seguito sono riportate alcune delle strategie chiave che possono essere impiegate per prevenire la diffusione degli attacchi:

  1. Rilevamento di CVE note: Eseguire regolarmente una scansione delle reti alla ricerca di vulnerabilità come CVE-2021-22659.
  2. Monitoraggio di comportamenti anomali: Segnalazione di aumenti insoliti della frequenza di comunicazione con il PLC Micrologix 1400, che potrebbero suggerire un attacco in corso di trasferimento non autorizzato di dati.
  3. Identificazione delle connessioni di nuovi dispositivi: Il sistema deve rilevare quando un nuovo dispositivo si collega al PLC. 
  4. Segmentazione della rete: L'isolamento dei dispositivi colpiti può aiutare a prevenire la diffusione laterale degli attacchi, riducendo così al minimo l'impatto.

MetaDefender OT Security di OPSWATrisponde a queste esigenze rilevando i CVE, monitorando continuamente la rete per individuare comportamenti insoliti e identificando le connessioni non autorizzate. Utilizzando l'intelligenza artificiale, il sistema apprende i normali modelli di traffico, stabilisce un comportamento di base e implementa criteri per segnalare le anomalie. Ciò consente di reagire in modo istantaneo e consapevole alle potenziali minacce. 

Nel caso di un attacco che sfrutta CVE-2021-22659, MetaDefender OT Security si integra con MetaDefender Industrial Firewall per bloccare le comunicazioni sospette in base alle regole impostate. Il firewall utilizza l'intelligenza artificiale per apprendere i modelli di traffico regolari e applicare le policy per impedire le connessioni non autorizzate. 

Combinando queste funzionalità di rilevamento, avviso e segmentazione della rete, MetaDefender OT Security diventa il meccanismo di difesa ideale per gli ambienti industriali, riducendo in modo significativo il rischio e l'impatto delle minacce informatiche negli ambienti tecnologici operativi.

Scoprite come la piattaforma di cybersecurity di OPSWATpuò migliorare e maturare la vostra postura. Parlate con un esperto oggi stesso per una demo gratuita.

Rimanete aggiornati con OPSWAT!

Iscriviti oggi stesso per ricevere gli ultimi aggiornamenti sull'azienda, storie, informazioni sugli eventi e altro ancora.