Autor: Vinh T. Nguyen - Șef de echipă
Introducere
O vulnerabilitate a unui sistem informatic este o slăbiciune pe care un atacator o poate exploata pentru a utiliza sistemul respectiv într-un mod neautorizat [1]. Vulnerabilitatea Software , în special, reprezintă o provocare de securitate cibernetică cu care organizațiile trebuie să se confrunte în mod regulat, din cauza naturii în continuă schimbare și a complexității software-ului.
Cele mai comune metode pe care organizațiile le folosesc pentru a evalua riscul de vulnerabilități în rețelele lor de calculatoare pot fi grupate în două categorii majore: bazate pe rețea și bazate pe gazdă [2]. Metodele bazate pe rețea sondează rețeaua fără să se conecteze la fiecare gazdă, pentru a detecta serviciile, dispozitivele și datele vulnerabile în tranzit. Metodele bazate pe gazdă se conectează la fiecare gazdă și adună o listă de software, componente și configurații vulnerabile. Fiecare categorie gestionează riscul în moduri diferite, însă niciuna dintre ele nu poate detecta vulnerabilitățile decât dacă software-ul vulnerabil este deja implementat pe o gazdă.
În practică, evaluările sunt de obicei programate astfel încât să nu afecteze operațiunile normale. Acest lucru lasă o fereastră de oportunitate între momentul în care software-ul vulnerabil este implementat și momentul în care începe o evaluare, fereastră pe care atacatorii o pot folosi pentru a compromite o gazdă și, prin urmare, o rețea.
Această situație necesită o metodă de scanare care poate închide această fereastră și reduce riscul general de vulnerabilitate. Tehnologia OPSWAT file-based vulnerability assessment face acest lucru prin asocierea fișierelor binare (cum ar fi instalatorul, executabilul, biblioteca dinamică etc.) cu vulnerabilitățile raportate. Această metodă poate detecta componentele software vulnerabile înainte ca acestea să fie implementate, astfel încât analiștii de securitate și administratorii de sistem să poată lua rapid măsurile corespunzătoare, închizând astfel fereastra.
În secțiunile următoare, explicăm mai detaliat tehnologia și cazurile de utilizare a acesteia și oferim exemple de atacuri cunoscute care au legătură cu aceste cazuri de utilizare. Apoi, prezentăm o demonstrație de exploatare și concluzionăm cu privire la tehnologie și la potențialul acesteia.
De ce este nevoie de o altă metodă de detecție
Limitările metodelor tradiționale
Metodele tradiționale de detectare a vulnerabilităților software operează la un nivel abstract. Atunci când scanarea bazată pe rețea sondează o rețea de calculatoare, iar scanarea bazată pe gazdă colectează date de la o mașină, acestea determină, de obicei, ce verificări să ruleze în funcție de mediul sistemului, pentru a asigura o performanță ridicată (timp de scanare, lățime de bandă a rețelei, utilizare a memoriei etc.) și pentru a filtra rezultatele irelevante. Uneori, metodele de evaluare se bazează atât de mult pe mediul unui sistem pentru informații, încât nu efectuează verificările corespunzătoare, din cauza idiosincrasiilor din același mediu pe care se bazează.
De exemplu, dacă un serviciu de rețea vulnerabil este oprit înainte de o evaluare (accidental sau intenționat), scanarea nu va detecta nicio vulnerabilitate în acest serviciu. De asemenea, ștergerea cheii de registru Windows care conține calea de instalare a unei aplicații poate lăsa aplicația însăși și vulnerabilitățile sale intacte și nedetectate de scanarea bazată pe gazdă. În ambele cazuri, metodele de scanare sunt mai puțin eficiente, deoarece se bazează pe amprenta produsului instalat.
Un produs instalat este o colecție de fișiere (cum ar fi un executabil, o bibliotecă, o bază de date etc.) împachetate împreună și combinate cu o logică de implementare. Logica de desfășurare urmează, de obicei, o convenție pentru scrierea amprentei produsului într-o locație (de exemplu, Registrul pe sistemul de operare Windows, portul 3306 pentru MySQL). Această amprentă nu definește produsul în sine și poate fi schimbată oricând în timpul duratei de viață a produsului. Prin urmare, bazându-se pe amprenta (așa cum o fac atât scanarea bazată pe rețea, cât și cea bazată pe gazdă) pentru a detecta produsul și vulnerabilitatea acestuia, există riscul unei detecții greșite.
Introducerea scanării pe bază de fișiere
File-based vulnerability assessment este diferită de metodele tradiționale de evaluare. După cum sugerează și numele său, aceasta operează fișier cu fișier și ignoră toate abstracțiunile de produs de nivel înalt. Analizând fiecare vulnerabilitate raportată și punându-le în corespondență cu instalatoarele produselor și cu fișierele componentelor principale (brevet U.S. 9749349 B1), file-based vulnerability assessment poate detecta dacă un fișier binar este asociat cu o vulnerabilitate, expunând astfel vulnerabilitățile chiar și atunci când produsul nu rulează sau când amprenta acestuia a fost modificată.
În timp ce diferența dintre scanarea bazată pe fișiere și scanarea bazată pe rețea este clară, diferența dintre scanarea bazată pe fișiere și scanarea bazată pe gazdă nu este la fel de clară. S-ar putea argumenta că scanarea bazată pe gazdă nu se bazează în totalitate pe amprenta produsului, ci verifică și versiunea de fișier a componentei (componentelor) principale a produsului. Prin urmare, logica de scanare poate fi modificată pentru a efectua doar această verificare a versiunii de fișier, ceea ce face ca scanarea bazată pe fișiere să fie un subset al scanării bazate pe gazdă.
Acest lucru nu este cazul, deoarece:
- Scanarea bazată pe gazdă este adesea programată să utilizeze atât mediul sistemului, cât și amprenta produsului pentru a filtra verificările care trebuie efectuate.
- Prin concentrarea pe găsirea și analiza fișierelor care cauzează vulnerabilități, scanarea bazată pe fișiere poate detecta unele vulnerabilități care sunt greu de detectat cu metoda bazată pe gazdă și este potrivită pentru mai multe cazuri de utilizare.
Scanarea bazată pe fișiere poate fi utilizată pentru a detecta instalatorii vulnerabili, pachetele de firmware, fișierele de bibliotecă, fișierele de componente de produs etc. care intră și ies din rețele prin intermediul gateway-urilor sau care ajung la și pleacă de la punctele finale (prin e-mail, unități flash etc.). Acest lucru permite administratorilor de sistem și utilizatorilor să verifice vulnerabilitatea unui produs înainte de a-l utiliza și să asigure protecția atunci când gazda nu este susținută de metodele de scanare bazate pe gazdă sau pe rețea pe care organizația le utilizează în prezent.

File-based vulnerability assessment poate fi, de asemenea, utilizată pentru a descoperi vulnerabilități potențiale în mașinile existente. Deoarece metodele tradiționale de scanare efectuează, de obicei, verificări ale vulnerabilităților pe baza unor rapoarte vagi, de nivel înalt, din surse de divulgare publică, scanarea în sine se oprește adesea la un nivel înalt (amprenta produsului) și nu intră în detaliile vulnerabilității sau ale produsului raportat.
Cu toate acestea, având în vedere că produsele reutilizează adesea componente ale altora (bibliotecile dinamice și serviciile partajate sunt câteva exemple), actualizarea unui produs vulnerabil sau chiar eliminarea acestuia nu garantează întotdeauna că fișierele care cauzează vulnerabilitatea au dispărut. Este posibil ca acestea să se afle încă undeva în sistemul de fișiere și să ofere atacatorilor o platformă pentru a reconecta acele componente și a face ravagii. Aceste fișiere au adesea toată integritatea pe care o putem cere. Au un scop clar, sunt cunoscute pe scară largă, provin din surse de încredere, au semnături valide și încă există în unele dintre cele mai recente pachete software. Tehnologia File-based vulnerability assessment permite administratorilor de sistem să scaneze mașinile și să găsească fișierele vulnerabile ascunse înainte ca atacatorii să aibă șansa de a le utiliza.

Provocări legate de tehnologie
Totuși, operarea la nivel de fișier are limitele sale. Acesta poate marca un fișier ca fiind vulnerabil atunci când vulnerabilitatea necesită încărcarea mai multor fișiere împreună pentru a fi declanșată (fals pozitiv). Acest lucru se datorează, în parte, lipsei contextului (prin scanarea unui singur fișier) și neclarității rapoartelor de dezvăluire. De asemenea, este posibil să marcheze un fișier cu adevărat vulnerabil ca fiind curat (fals negativ), din cauza caracterului incomplet al bazei de date a fișierelor și, din nou, a neclarității rapoartelor.
La OPSWAT, înțelegem acest lucru și îmbunătățim constant tehnologia noastră de file-based vulnerability assessment , astfel încât să acopere mai multe vulnerabilități, reducând în același timp ratele fals pozitive/negative. Am integrat această tehnologie în multe dintre produsele din familia noastră MetaDefender (cum ar fi MetaDefender Core, MetaDefender Cloud, Drive, Kiosk, ICAP Server etc.), pentru a ajuta organizațiile să asigure o apărare aprofundată a rețelelor lor critice [3].
Exploatări cunoscute
Este destul de greu pentru administratorii de sistem să monitorizeze rapoartele de dezvăluire a tuturor programelor informatice utilizate de organizație, ca să nu mai vorbim de cunoașterea și monitorizarea tuturor componentelor din cadrul acestor programe. Ceea ce face posibil ca software-ul care utilizează componente vechi care conțin vulnerabilități să nu fie detectat și să pătrundă în interiorul organizațiilor. Acest lucru poate face din componentele vulnerabile o mare problemă.
Un exemplu este CVE-2019-12280 [4], vulnerabilitatea de căutare necontrolată a căii de căutare a bibliotecilor din Dell SupportAssist. Aceasta permite unui utilizator cu privilegii reduse să execute cod arbitrar cu privilegii SYSTEM și să obțină controlul complet asupra unei mașini. Inițial, provine de la o componentă furnizată de PC-Doctor pentru a diagnostica mașinile. Ambii furnizori au lansat patch-uri pentru a remedia problema.
Un alt exemplu este CVE-2012-6706 [5], o vulnerabilitate critică de corupție a memoriei care ar putea duce la executarea arbitrară a codului și la compromiterea unei mașini la deschiderea unui fișier special creat. Inițial, s-a raportat că această vulnerabilitate afecta produsele antivirus Sophos, dar ulterior s-a constatat că provine de la o componentă numită UnRAR, care se ocupă de extragerea fișierelor [6].
Adesea, aceste tipuri de vulnerabilități nu pot fi raportate în totalitate, deoarece există prea multe produse care utilizează componentele vulnerabile. Prin urmare, chiar și atunci când administratorii de sistem cunosc fiecare produs utilizat și îl monitorizează îndeaproape în ceea ce privește sursele comune de dezvăluire, există încă mult spațiu de manevră pentru ca un atacator să treacă.
Demo
Să analizăm mai îndeaproape un caz în care o componentă vulnerabilă cauzează probleme pe o gazdă. Vom folosi o versiune veche a Total Commander [7] care conține o UnRAR.DLL [8] care este afectată de CVE-2012-6706 [5]. Observați că acest CVE nu raportează Total Commander. Utilizatorii puternici cu privilegii de administrare folosesc adesea acest software, astfel încât exploatarea cu succes a vulnerabilității poate ajuta un atacator să folosească o gazdă pentru a prelua controlul asupra rețelei unei organizații.
Specificații demonstrative:
- Sistem de operare: Windows 10 1909 x64.
- Software: Total Commander v8.01 x86 cu biblioteca UnRAR v4.20.1.488.
- Datele artizanale sunt create de grupul Google Security Research pe Exploit-DB [9].
Coruperea memoriei are loc atunci când Total Commander utilizează UnRAR.DLL pentru a extrage un fișier special creat. Atacatorul poate executa apoi cod arbitrar pe mașină cu privilegiul utilizatorului Total Commander. Atacatorii sofisticați pot amplasa mai multe fișiere aparent legitime, dar vulnerabile, în toată mașina pentru atacuri ulterioare.

Versiunile recente ale Total Commander nu prezintă această vulnerabilitate, deoarece utilizează o versiune mai nouă a UnRAR.DLL. Așadar, ca întotdeauna, utilizatorii ar trebui să își mențină software-ul actualizat, chiar dacă nu există niciun raport de dezvăluire cu privire la acestea și mai ales dacă nu au efectuat o actualizare de mult timp (această versiune a Total Commander a fost lansată în 2012).
Concluzie
Vulnerabilitățile Software permit atacatorilor să obțină acces sau să preia controlul asupra resurselor organizației. Două metode comune de detectare a vulnerabilităților sunt scanarea bazată pe rețea și scanarea bazată pe gazdă. Acestea operează de obicei la un nivel ridicat de abstractizare și pot pierde informații importante, din cauza schimbărilor din mediul unui computer.
Tehnologia OPSWATde file-based vulnerability assessment funcționează la nivel de fișier pentru a alerta administratorii de sistem cu privire la instalatoarele și componentele software vulnerabile care intră și ies din organizație, reducând riscul de securitate atât înainte de implementare, cât și în timpul utilizării. Tehnologia a fost integrată în produsele MetaDefender precum Core, Cloud API, Drive, Kiosk etc. pentru a acoperi o gamă largă de cazuri de utilizare.
Detectarea vulnerabilităților pe bază de fișier cu fișier este diferită de metodele tradiționale și are un nou potențial, noi cazuri de utilizare, precum și provocări. La OPSWAT, ne îmbunătățim în mod constant tehnologia pentru a depăși provocările și a ajuta la protejarea rețelelor critice ale organizațiilor împotriva amenințărilor de securitate cibernetică în continuă evoluție.
Referințe
[1] "Vulnerabilitate (informatică)," [Online].
[2] "Vulnerability scanner," [Online].
[3] "MetaDefender - Platforma de prevenire avansată a amenințărilor," [online].
[4] "CVE-2019-12280 - MetaDefender," [Online].
[5] "CVE-2012-6706 - MetaDefender," [Online].
[7] "Total Commander - acasă," [Online].
[8] "WinRAR archiver - RARLAB," [Online].
[9] "unrar 5.40 - 'VMSF_DELTA' Filter Arbitrary Memory Write," [Online].