Securizarea sistemelor de control industrial și a mediilor OT împotriva atacurilor de la distanță este mai critică ca niciodată, în special cu vulnerabilități precum CVE-2017-14469 și acum CVE-2021-22659 care vizează controlerul Micrologix 1400 al Rockwell Automation, utilizat pe scară largă. Studenții din cadrul programului de burse OPSWAT au testat această vulnerabilitate într-un mediu controlat, subliniind nevoia de securitate.
În acest blog, explorăm modul în care studenții au demonstrat cum atacatorii ar putea exploata vulnerabilitatea pentru a provoca blocarea sistemelor și cum lipsa validării corespunzătoare a intrărilor ar putea fi utilizată pentru a întrerupe operațiunile PLC.
Ce este un PLC? Explicații Rockwell Automation Micrologix 1400
Un PLC (Programmable Logic Controller) este un computer industrial conceput pentru automatizarea proceselor prin controlul utilajelor și al altor operațiuni industriale. Acesta funcționează în medii dificile și este programat să execute sarcini specifice pe baza datelor de intrare ale senzorilor. Controlerul MicroLogix 1400 de la Rockwell Automation este un PLC compact și modular utilizat în mod obișnuit în aplicații de dimensiuni mici și medii. Cunoscut pentru rentabilitatea și flexibilitatea sa, acesta suportă diverse protocoale de comunicare și oferă opțiuni I/O digitale și analogice pentru interfațarea cu dispozitivele.
Programarea se face de obicei folosind software-ul Rockwell Automation prin intermediul logicii ladder, permițând utilizatorilor să creeze secvențe de control. MicroLogix 1400 este versatil, potrivit pentru sarcini precum controlul mașinilor și automatizarea proceselor. Modularitatea sa permite utilizatorilor să extindă și să personalizeze sistemul pe baza cerințelor specifice ale aplicației.
Introducere la CVE-2021-22659
În ianuarie 2021, Rockwell Automation a primit un raport de la Parul Sindhwad și Dr. Faruk Kazi de la COE-CNDS de la Veermata Jijabai Technological Institute (VJTI), India, cu privire la o vulnerabilitate în controlerul MicroLogix™ 1400. Aceștia au identificat un defect de securitate în versiunea 21.6 și versiunile anterioare care permite unui atacator neautenticat de la distanță să trimită un pachet Modbus special creat, permițând atacatorului să recupereze sau să modifice valori aleatorii în registru. Dacă este exploatat cu succes, acest lucru ar putea duce la o depășire a bufferului, ducând la o condiție de negare a serviciului. LED-ul FAULT va clipi ROȘU și comunicațiile pot fi pierdute. Recuperarea din starea de negare a serviciului necesită ștergerea defecțiunii de către utilizator.
NVD a evaluat această vulnerabilitate de securitate ca fiind de severitate ridicată.
Fazele atacului
Un atacator de la distanță, neautentificat, cu acces la rețeaua PLC-ului MicroLogix 1400 vulnerabil ar putea trimite un pachet special creat pentru a modifica valorile din registru. Acest lucru ar putea provoca o stare de negare a serviciului pentru dispozitiv, ducând la coruperea sistemului și la întreruperea activității. Un astfel de incident poate perturba semnificativ operațiunile de producție și alte activități comerciale ale organizației.
Protocolul Modbus
Dezvoltat de Modicon în 1979, protocolul Modbus este o structură de mesagerie concepută pentru a stabili comunicarea client-server între dispozitive inteligente. Conceput inițial pentru a fi utilizat cu PLC-urile Modicon, acesta a devenit de atunci un protocol de comunicare standard pentru comunicarea între dispozitivele electronice industriale.
Există protocoale Modbus pentru Ethernet (Modbus TCP) și linii seriale (Modbus RTU și Modbus ASCII). Modbus RTU (Remote Terminal Unit) transmite direct date în formă binară prin comunicare serială, iar Modbus TCP (Transmission Control Protocol) include datele protocolului Modbus în pachete TCP pentru transmiterea prin rețele TCP/IP.
Structura mesajului Modbus
Modbus este un protocol cerere-răspuns în care clientul transmite o cerere către un dispozitiv Modbus, iar dispozitivul furnizează ulterior un răspuns.
Un mesaj Modbus trimis de la un primar la un secundar conține adresa secundarului, "comanda" (de exemplu, "citire registru" sau "scriere registru"), datele și o sumă de verificare (LRC sau CRC).
Adresele de date sunt utilizate în mesajele de interogare Modbus la citirea sau modificarea datelor. Modbus definește patru tipuri de date: Coil, Input Status, Input Register și Holding Register. Două dintre acestea stochează valori on-off (1 bit) numite bobine și intrări discrete, iar două stochează valori numerice sub formă de cuvinte pe 16 biți numite registre. Fiecare este fie numai citire, fie citire/scriere.
Tip de date | Acces | Descriere |
Bobină | Citire-scriere | Ieșiri cu un singur bit. |
Intrare discretă | Doar pentru citire | Intrări cu un singur bit. |
Registru de intrare | Doar pentru citire | Registre de intrare pe 16 biți. |
Registru de menținere | Citire-scriere | Registre de ieșire pe 16 biți. |
Există trei categorii de coduri de funcții Modbus:
- Coduri de funcții publice - De la 1 la 127, cu excepția codurilor definite de utilizator.
- Coduri de funcții definite de utilizator - în două intervale, de la 65 la 72 și de la 100 la 110.
- Coduri de funcții rezervate - Utilizate de unele companii pentru produse vechi și nu sunt disponibile pentru uz public.
Tip de funcție | Denumirea funcției | Codul funcției | ||
Accesul la date | Acces la biți | Intrări fizice discrete | Citiți intrările discrete | 2 |
Biți interni sau bobine fizice | Citiți bobinele Scrieți o singură bobină Scrierea mai multor bobine | 1 5 15 | ||
Acces pe 16 biți | Registre de intrare fizică | Citiți registrele de intrare | 4 | |
Registre interne sau registre fizice de ieșire | Citiți mai multe registre de menținere Scrierea unui singur registru de menținere Scrierea mai multor registre de menținere Citire/Scriere registre multiple Registrul de scriere a măștii Coada FIFO de citire | 3 6 16 23 22 24 | ||
Acces la înregistrări de fișiere | Citiți înregistrarea fișierului Scrierea înregistrării fișierului | 20 21 | ||
Diagnosticare | Citiți starea excepției Diagnostic Obțineți contorul de evenimente Com Obțineți jurnalul evenimentelor Com Raportați ID-ul sclavului Citiți identificarea dispozitivului | 7 8 11 12 17 43 | ||
Altele | Transport de interfață încapsulată | 43 |
Tip funcție: Acces la date Subtip: Acces la biți Categorie: Intrări discrete fizice Denumirea funcției: Citire intrări discrete Cod funcție: 2 |
Tip funcție: Acces la date Subtip: Acces la biți Categorie: Bits interni sau bobine fizice Denumirea funcției: Read Coils Cod funcție: 1 |
Tip funcție: Acces la date Subtip: Acces la biți Categorie: Biți interni sau bobine fizice Denumirea funcției: Write Single Coil Codul funcției: 5 |
Tip funcție: Acces la date Subtip: Acces la biți Categorie: Biți interni sau bobine fizice Denumirea funcției: Scriere bobine multiple Codul funcției: 15 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Physical Input Registers Denumirea funcției: Read Input Registers Cod funcție: 4 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Read Multiple Holding Registers Cod funcție: 3 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Write Single Holding Register Codul funcției: 6 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Write Multiple Holding Registers Codul funcției: 16 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Citire/Scriere registre multiple Cod funcție: 23 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Mask Write Register Codul funcției: 22 |
Tip funcție: Acces la date Subtip: Acces pe 16 biți Categorie: Registre interne sau registre fizice de ieșire Denumirea funcției: Read FIFO Queue Cod funcție: 24 |
Tip funcție: Acces la date Subtip: File Record Access Denumirea funcției: Read File Record Cod funcție: 20 |
Tip funcție: Acces la date Subtip: File Record Access Denumirea funcției: Write File Record Codul funcției: 21 |
Tip funcție: Diagnosticare Denumirea funcției: Citire stare excepție Cod funcție: 7 |
Tip funcție: Diagnosticare Denumirea funcției: Diagnostic Codul funcției: 8 |
Tip funcție: Diagnostics Denumirea funcției: Get Com Event Counter Codul funcției: 11 |
Tip funcție: Diagnostics Denumirea funcției: Get Com Event Log Codul funcției: 12 |
Tip funcție: Diagnosticare Denumirea funcției: Report Slave ID Cod funcție: 17 |
Tip funcție: Diagnosticare Denumirea funcției: Citește identificarea dispozitivului Cod funcție: 43 |
Tip funcție: Altele Denumirea funcției: Encapsulated Interface Transport Codul funcției: 43 |
Exploatare
Analiza vulnerabilității
Prin analiză, bursierii noștri absolvenți OPSWAT au descoperit că în timpul comunicării Modbus TCP, protocolul nu dispune de autentificare și criptare pentru pachetele transmise. În plus, validarea intrărilor în PLC-ul MicroLogix 1400 nu este implementată corespunzător. În consecință, un atacator de la distanță poate analiza pachetul Modbus TCP prin "packet sniffing" și poate trimite orice solicitare către PLC fără autentificare prin protocolul Modbus TCP. Din cauza lipsei validării intrărilor în dispozitivul PLC MicroLogix 1400, un atacator autentificat de la distanță ar putea trimite un număr mare de pachete cu valori aleatorii, putând provoca blocarea PLC-ului.
Suprascrierea registrului
Inițial, am încercat să captăm pachetele Modbus TCP utilizate pentru citirea sau scrierea registrelor pe PLC. Pentru a realiza acest lucru, am examinat pachetele generate de o aplicație numită Modbus Poll, care facilitează citirea și scrierea registrelor pe PLC-ul MicroLogix 1400.
Folosind Wireshark pentru a captura toate pachetele de la interfața de rețea, am putut identifica pachetul Modbus TCP pentru scrierea unui singur registru:
Pe baza structurii pachetelor adulmecate, am dezvoltat un script Python simplu pentru a trimite pachete TCP care solicită scrierea unui registru pe PLC-ul țintă. În acest scenariu, adresa IP a PLC-ului este 192.168.93.89.
Registrul PLC-ului a fost modificat după primirea pachetului nostru neautentificat malițios.

În Micro Logix 1400, majoritatea instrucțiunilor matematice utilizează trei parametri: Sursa A, Sursa B și Destinația
Valorile pentru sursa A și sursa B pot proveni din două registre pe 16 biți numite N13:3 și N13:4. În plus, valorile din aceste registre pe 16 biți, cum ar fi N13:3 și N13:4, sunt limitate în intervalul de la -32,768 la +32,767. În cazul în care valorile din N13:3 și N13:4 sunt mari, rezultatul instrucțiunii match poate depăși intervalul maxim al tipului de date, ceea ce poate cauza blocarea PLC-ului. În consecință, pentru a induce un crash în PLC, este necesar să scriem valori aleatorii mari în toate registrele, inclusiv N13:3 și N13:4. Pentru a realiza acest lucru, am modificat scriptul nostru Python după cum urmează:
Simulați atacul
Pentru a simula un atac din lumea reală, bursierii noștri absolvenți OPSWAT au încercat să provoace o defecțiune la PLC-ul MicroLogix 1400 situat în laboratoarele CIP OPSWAT , presupunând că atât atacatorul, cât și PLC-ul sunt în aceeași rețea și pot comunica între ele.
În starea normală de funcționare a PLC-ului MicroLogix 1400 de la OPSWAT Labs, cu PLC-ul în modul REMOTE RUN, toate valorile registrelor sunt valide și se încadrează în intervalul desemnat pentru tipurile lor de date, indicând faptul că programul utilizatorului funcționează corect.
La executarea scriptului nostru Python, numeroase pachete Modbus TCP vor fi trimise către PLC, solicitând scrierea unor valori aleatorii mari în toate registrele fără autentificare:
După primirea acestor cereri de pachete malițioase, valorile tuturor registrelor, inclusiv N13:3 și N13:4, sunt setate la 16.990. Rezultatul operației ADD pe registrele N13:3 și N13:4 depășește intervalul valid al unui registru pe 16 biți. Această problemă provoacă o depășire a numărului întreg, ceea ce duce la o eroare și întrerupe funcționarea PLC-ului, după cum indică starea FAULTED.
Bursierii noștri absolvenți OPSWAT au reușit să blocheze PLC-ul MicroLogix 1400 prin exploatarea CVE-2021-22659.
Remediere
În fața unor vulnerabilități precum CVE-2021-22659, remedierea cuprinzătoare este esențială pentru protejarea sistemelor OT și ciberfizice. Mai jos sunt prezentate câteva dintre strategiile-cheie care pot fi utilizate pentru a preveni răspândirea atacurilor:
- Detectarea CVE-urilor cunoscute: Scanarea regulată a rețelelor pentru vulnerabilități precum CVE-2021-22659.
- Monitorizarea comportamentelor anormale: Evidențierea creșterilor neobișnuite ale frecvenței în comunicarea cu PLC-ul Micrologix 1400, care ar putea sugera un atac în curs de desfășurare de transfer neautorizat de date.
- Identificarea conexiunilor noilor dispozitive: Sistemul trebuie să detecteze momentul în care un dispozitiv nou se conectează la PLC.
- Segmentarea rețelei: Izolarea dispozitivelor afectate poate ajuta la prevenirea răspândirii laterale a atacurilor, minimizând astfel impactul.
MetaDefender OT Security de la OPSWATrăspunde acestor nevoi prin detectarea CVE-urilor, monitorizarea continuă a rețelei pentru comportamente neobișnuite și identificarea conexiunilor neautorizate. Utilizând inteligența artificială, acesta învață tiparele normale de trafic, stabilește un comportament de bază și implementează politici pentru a alerta anomaliile. Acest lucru permite răspunsuri instantanee și informate la potențialele amenințări.
În cazul unui atac care exploatează CVE-2021-22659, MetaDefender OT Security se integrează cu MetaDefender Industrial Firewall pentru a bloca comunicațiile suspecte pe baza regulilor stabilite. Firewall-ul utilizează inteligența artificială pentru a învăța modelele regulate de trafic și pentru a aplica politici de prevenire a conexiunilor neautorizate.
Prin combinarea acestor capabilități de detectare, alertă și segmentare a rețelei, MetaDefender OT Security devine mecanismul de apărare ideal pentru mediile industriale, reducând semnificativ riscul și impactul amenințărilor cibernetice în mediile tehnologice operaționale.
Explorați modul în care platforma de securitate cibernetică de apărare în profunzime a OPSWATvă poate îmbunătăți și maturiza postura. Discutați astăzi cu un expert pentru o demonstrație gratuită.