Scanare inteligentă. Gestionarea vulnerabilităților Gestionați setările de scanare inteligentă

23.02.2021 Siguranță

În prezent, un număr mare de instrumente au fost dezvoltate pentru a automatiza căutarea vulnerabilităților programelor. Acest articol va discuta unele dintre ele.

Introducere

Analiza codului static este analiza software, care este produs pe codul sursă al programelor și este implementat fără executarea efectivă a programului studiat.

Software-ul conține adesea diverse vulnerabilități din cauza erorilor din codul programului. Erorile făcute în timpul dezvoltării programelor, în unele situații, duc la o defecțiune a programului și, în consecință, funcționarea normală a programului este întreruptă: aceasta duce adesea la modificări și deteriorarea datelor, oprirea programului sau chiar a sistemului. Majoritatea vulnerabilităților sunt asociate cu prelucrarea incorectă a datelor primite din exterior sau cu verificarea insuficient de strictă a acestora.

Sunt folosite diverse instrumente pentru a identifica vulnerabilități, de exemplu, analizoare statice cod sursa programe, o prezentare generală a cărora este oferită în acest articol.

Clasificarea vulnerabilităților de securitate

Când este încălcată cerința ca un program să funcționeze corect pe toate datele de intrare posibile, devine posibilă apariția așa-numitelor vulnerabilități de securitate. Vulnerabilitățile de securitate pot însemna că un program poate fi utilizat pentru a depăși limitările de securitate ale unui întreg sistem.

Clasificarea vulnerabilităților de securitate în funcție de erorile software:

  • Buffer overflow. Această vulnerabilitate apare din cauza lipsei de control asupra matricei în afara limitelor din memorie în timpul execuției programului. Când un pachet de date prea mare depășește tamponul dimensiune limitată, conținutul celulelor de memorie străine este suprascris, iar programul se blochează și se blochează. Pe baza locației buffer-ului în memoria de proces, depășirile de buffer se disting pe stivă (depășire buffer stivă), heap (depășire buffer heap) și zona de date statice (debordare buffer bss).
  • Vulnerabilitatea de intrare contaminată. Vulnerabilitățile de intrare deteriorate pot apărea atunci când intrarea utilizatorului este transmisă interpretului unei limbi externe (de obicei un shell Unix sau SQL) fără un control suficient. În acest caz, utilizatorul poate specifica datele de intrare în așa fel încât interpretul lansat va executa o comandă complet diferită de cea intenționată de autorii programului vulnerabil.
  • Vulnerabilitatea șirurilor de format. Acest tip Vulnerabilitățile de securitate sunt o subclasă a vulnerabilității „input contaminat”. Apare din cauza controlului insuficient al parametrilor atunci când se utilizează funcțiile de format I/O printf, fprintf, scanf etc. ale bibliotecii standard C. Aceste funcții iau ca unul dintre parametrii lor un șir de caractere care specifică formatul de intrare sau de ieșire al argumentelor funcției ulterioare. Dacă utilizatorul poate specifica tipul de formatare, această vulnerabilitate ar putea rezulta din utilizarea nereușită a funcțiilor de formatare a șirurilor.
  • Vulnerabilități ca urmare a erorilor de sincronizare (condiții de cursă). Problemele asociate cu multitasking duc la situații numite „condiții de cursă”: un program care nu este conceput pentru a rula într-un mediu multitasking poate crede că, de exemplu, fișierele pe care le folosește nu pot fi modificate de un alt program. Drept urmare, un atacator care înlocuiește conținutul acestor fișiere de lucru la timp poate forța programul să efectueze anumite acțiuni.

Desigur, pe lângă cele enumerate, există și alte clase de vulnerabilități de securitate.

Revizuirea analizoarelor existente

Următoarele instrumente sunt utilizate pentru a detecta vulnerabilitățile de securitate din programe:

  • Depanare dinamice. Instrumente care vă permit să depanați un program în timpul execuției acestuia.
  • Analizoare statice (depanatoare statice). Instrumente care folosesc informații acumulate în timpul analizei statice a unui program.

Analizoarele statice indică acele locuri din program în care poate fi localizată o eroare. Aceste bucăți de cod suspecte pot fie să conțină o eroare, fie să fie complet inofensive.

Acest articol oferă o prezentare generală a mai multor analizoare statice existente. Să aruncăm o privire mai atentă la fiecare dintre ele.

Managementul vulnerabilităților este identificarea, evaluarea, clasificarea și selectarea unei soluții pentru a aborda vulnerabilitățile. Fundamentul managementului vulnerabilităților îl reprezintă depozitele de informații despre vulnerabilități, dintre care unul este Sistemul de management al vulnerabilităților „Monitorizare în avans”.

Soluția noastră controlează apariția informațiilor despre vulnerabilități în sisteme de operare(Windows, Linux/Unix), software de birou și aplicații, software pentru echipamente, instrumente de securitate a informațiilor.

Surse de date

Baza de date a Sistemului de management al vulnerabilităților software de monitorizare a perspectivei este actualizată automat din următoarele surse:

  • Banca de date a amenințărilor la securitatea informațiilor (BDU BI) FSTEC din Rusia.
  • National Vulnerability Database (NVD) NIST.
  • Red Hat Bugzilla.
  • Debian Security Bug Tracker.
  • Listă de corespondență CentOS.

De asemenea, folosim metoda automatizata completarea bazei de date a vulnerabilităților noastre. Am dezvoltat un crawler web și un analizator de date nestructurat care analizează mai mult de o sută diferite și străine surse rusești consecutiv Cuvinte cheie- grupuri din rețelele sociale, bloguri, microbloguri, media dedicate tehnologia de informațieși asigurarea securității informațiilor. Dacă aceste instrumente găsesc ceva care se potrivește cu criteriile de căutare, analistul verifică manual informațiile și le introduce în baza de date a vulnerabilităților.

Monitorizarea vulnerabilității software

Folosind sistemul de management al vulnerabilităților, dezvoltatorii pot monitoriza prezența și starea vulnerabilităților detectate în componentele terțe ale software-ului lor.

De exemplu, în modelul Secure Software Developer Life Cycle (SSDLC) de la Hewlett Packard Enterprise, controlul bibliotecilor terță parte este central.

Sistemul nostru monitorizează prezența vulnerabilităților în versiunile/build-urile paralele ale aceluiași produs software.

Funcționează așa:

1. Dezvoltatorul ne oferă o listă de biblioteci și componente terțe care sunt utilizate în produs.

2. Verificăm zilnic:

b. dacă au apărut metode pentru a elimina vulnerabilitățile descoperite anterior.

3. Notificăm dezvoltatorul dacă starea sau punctajul vulnerabilității s-a schimbat, în conformitate cu modelul de rol specificat. Aceasta înseamnă că diferite echipe de dezvoltare din cadrul aceleiași companii vor primi alerte și vor vedea starea de vulnerabilitate doar pentru produsul la care lucrează.

Frecvența alertelor Sistemului de management al vulnerabilităților este configurabilă, dar dacă este detectată o vulnerabilitate cu un scor CVSS mai mare de 7,5, dezvoltatorii vor primi o alertă imediată.

Integrare cu ViPNet TIAS

Sistemul software și hardware ViPNet Threat Intelligence Analytics System detectează automat atacuri informaticeși identifică incidente pe baza evenimentelor primite din diverse surse securitatea informatiei. Principala sursă de evenimente pentru ViPNet TIAS este ViPNet IDS, care analizează traficul de rețea de intrare și de ieșire folosind baza de reguli de decizie AM Rules dezvoltată de Perspective Monitoring. Unele semnături sunt scrise pentru a detecta exploatarea vulnerabilităților.

Dacă ViPNet TIAS detectează un incident de securitate a informațiilor în care a fost exploatată o vulnerabilitate, atunci toate informațiile legate de vulnerabilitate, inclusiv metodele de eliminare sau compensare a impactului negativ, sunt introduse automat în cardul de incident din sistemul de management.

Sistemul de management al incidentelor ajută și la investigarea incidentelor de securitate a informațiilor, oferind analiștilor informații despre indicatorii de compromis și nodurile potențiale ale infrastructurii informaționale afectate de incident.

Monitorizarea prezenței vulnerabilităților în sistemele informaționale

Un alt scenariu pentru utilizarea unui sistem de management al vulnerabilităților este scanarea la cerere.

Clientul generează independent, folosind instrumente încorporate sau un script dezvoltat de noi, o listă de software de sistem și aplicații și componente instalate pe nod (stație de lucru, server, DBMS, pachet software, echipament de rețea), transmite această listă către control. sistem și primește un raport privind vulnerabilitățile detectate și notificări periodice despre starea acestora.

Diferențele dintre sistem și scanerele comune de vulnerabilitate:

  • Nu necesită instalarea agenților de monitorizare pe noduri.
  • Nu creează o încărcare în rețea, deoarece arhitectura soluției în sine nu oferă agenți de scanare și servere.
  • Nu creează o sarcină pe echipament, deoarece este creată lista de componente comenzile sistemului sau un script open source ușor.
  • Elimină posibilitatea scurgerii de informații. „Monitorizarea prospectivă” nu poate afla nimic în mod fiabil despre locația fizică și logică sau scopul funcțional al unui nod din sistemul informațional. Singura informatie, care părăsește perimetrul controlat al clientului - un fișier txt cu o listă de componente software. Acest fișier este verificat pentru conținut și încărcat în sistemul de control de către client însuși.
  • Pentru ca sistemul să funcționeze, nu avem nevoie de conturi pe noduri controlate. Informațiile sunt colectate de administratorul site-ului în nume propriu.
  • Schimbul de informații securizat prin ViPNet VPN, IPsec sau https.

Conectarea la serviciul de management al vulnerabilităților Perspective Monitoring ajută clientul să îndeplinească cerința ANZ.1 „Identificarea și analiza vulnerabilităților Sistem informaticși eliminarea promptă a vulnerabilităților nou identificate” ale comenzilor FSTEC din Rusia nr. 17 și 21. Compania noastră este licențiată a FSTEC din Rusia pentru activități legate de protecția tehnică a informațiilor confidențiale.

Preț

Cost minim - 25.000 de ruble pe an pentru 50 de noduri conectate la sistem dacă există un contract valabil pentru conectarea la

Un alt mod de a privi această problemă este că companiile trebuie să reacționeze rapid atunci când o aplicație are o vulnerabilitate. Acest lucru necesită ca departamentul IT să poată urmări definitiv aplicații instalate, componente și patch-uri folosind automatizări și instrumente standard. Există un efort al industriei de a standardiza etichetele software (19770-2), care sunt fișiere XML instalate cu o aplicație, componentă și/sau patch care identifică software-ul instalat și, în cazul unei componente sau a unui patch, care aplicație sunt acestea. parte din. Etichetele au informații despre autoritatea editorului, informații despre versiune, o listă de fișiere cu numele fișierului, hash și dimensiunea fișierului securizat, care pot fi utilizate pentru a confirma că aplicația instalată este în sistem și că fișiere binare nu au fost modificate de un terț. Aceste etichete sunt semnate semnatura digitala editor.

Când se cunoaște o vulnerabilitate, departamentele IT își pot folosi software-ul de gestionare a activelor pentru a identifica imediat sistemele cu software vulnerabil și pot lua măsuri pentru a actualiza sistemele. Etichetele pot face parte dintr-un patch sau o actualizare care poate fi folosită pentru a verifica dacă patch-ul a fost instalat. În acest fel, departamentele IT pot folosi resurse precum NIST National Vulnerability Database ca mijloc de a-și gestiona instrumentele de gestionare a activelor, astfel încât, odată ce o vulnerabilitate este transmisă la NVD de către o companie, IT-ul să poată compara imediat noile vulnerabilități cu ale lor.

Există un grup de companii care lucrează printr-o organizație non-profit IEEE/ISTO numită TagVault.org (www.tagvault.org) cu guvernul SUA pentru o implementare standard a ISO 19770-2 care va permite acest nivel de automatizare. La un moment dat, aceste etichete corespunzătoare acestei implementări vor fi probabil obligatorii pentru software-ul vândut guvernului SUA la un moment dat în următorii doi ani.

Deci, la sfârșitul zilei, este o practică bună să nu postați despre aplicațiile și versiunile specifice de software pe care le utilizați, dar acest lucru poate fi dificil, așa cum am menționat mai devreme. Doriți să vă asigurați că aveți un inventar de software precis și actualizat, că acesta este comparat în mod regulat cu o listă de vulnerabilități cunoscute, cum ar fi NVID de la NVD, și că IT poate lua măsuri imediate pentru a remedia amenințarea. cu cea mai recentă detectare Intruziunile, scanarea antivirus și alte tehnici de blocare a mediului vor face cel puțin dificil ca mediul dumneavoastră să fie compromis și, dacă/când se întâmplă, nu va fi detectat pentru o perioadă lungă de timp.

În unele cazuri, vulnerabilități apar din cauza utilizării instrumentelor de dezvoltare de diverse origini, care cresc riscul apariției unor defecte de tip sabotaj în codul programului.

Vulnerabilitățile apar din cauza adăugării de componente terțe sau a codului distribuit gratuit (sursă deschisă) la software. Codul altcuiva este adesea folosit „ca atare” fără analize amănunțite și testare de securitate.

Nu trebuie exclusă prezența programatorilor din interior în echipă care introduc în mod deliberat funcții sau elemente suplimentare nedocumentate în produsul creat.

Clasificarea vulnerabilităților programului

Vulnerabilitățile apar ca urmare a erorilor care apar în timpul etapei de proiectare sau codare.

În funcție de stadiul de apariție, acest tip de amenințare este împărțit în vulnerabilități de proiectare, implementare și configurare.

  1. Erorile făcute în timpul proiectării sunt cele mai dificil de detectat și eliminat. Acestea sunt inexactități în algoritmi, marcaje, inconsecvențe în interfața dintre diferite module sau în protocoale pentru interacțiunea cu hardware-ul și introducerea unor tehnologii suboptime. Eliminarea acestora este un proces foarte intensiv în muncă, inclusiv pentru că pot apărea în cazuri neevidente - de exemplu, atunci când volumul de trafic prevăzut este depășit sau când este conectată o cantitate mare de echipamente suplimentare, ceea ce complică furnizarea necesarului. nivelul de securitate și duce la apariția unor modalități de a ocoli firewall-ul.
  2. Vulnerabilitățile de implementare apar în etapa de scriere a unui program sau de implementare a algoritmilor de securitate în acesta. Aceasta este o organizare incorectă a procesului de calcul, defecte sintactice și logice. Există riscul ca defecțiunea să ducă la o depășire a tamponului sau la alte probleme. Detectarea lor necesită mult timp, iar eliminarea lor implică corectarea anumitor părți ale codului mașinii.
  3. Erori de configurare hardware și software sunt destul de comune. Motivele lor comune sunt dezvoltarea de calitate insuficientă și lipsa testelor pentru funcționarea corectă. funcții suplimentare. Parolele prea simple și lăsate neschimbate pot fi incluse și în această categorie. Conturi Mod implicit.

Conform statisticilor, vulnerabilitățile sunt descoperite în special în produsele populare și răspândite - sisteme de operare desktop și mobile, browsere.

Riscuri de utilizare a programelor vulnerabile

Programele care conțin cel mai mare număr de vulnerabilități sunt instalate pe aproape toate computerele. Din partea infractorilor cibernetici, există un interes direct de a găsi astfel de defecte și de a scrie pentru ei.

Deoarece trece destul de mult timp din momentul în care este descoperită o vulnerabilitate până la publicarea unei remedieri (patch), există un număr destul de mare de oportunități de a infecta sisteme informatice prin lacune în securitatea codului programului. În acest caz, utilizatorul trebuie să deschidă, de exemplu, un fișier PDF rău intenționat cu un exploit o singură dată, după care atacatorii vor avea acces la date.

În acest din urmă caz, infecția are loc conform următorului algoritm:

Cercetările efectuate de diverse companii (Kaspersky Lab, Positive Technologies) arată că există vulnerabilități în aproape orice aplicație, inclusiv în antivirusuri. Prin urmare, probabilitatea de a stabili software, care conțin defecte de diferite grade de criticitate, este foarte mare.

Pentru a minimiza numărul de lacune în software, este necesar să utilizați SDL (Security Development Lifecycle, secure ciclu de viață dezvoltare). Tehnologia SDL este utilizată pentru a reduce numărul de erori în aplicații în toate etapele creării și suportului acestora. Astfel, atunci când proiectează software, specialiștii și programatorii în securitatea informațiilor modelează amenințările cibernetice pentru a găsi vulnerabilități. În timpul programării, instrumentele automate sunt incluse în proces pentru a raporta imediat eventualele defecte. Dezvoltatorii se străduiesc să limiteze semnificativ funcționalitatea disponibilă pentru utilizatorii neîncrezători, ceea ce ajută la reducerea suprafeței de atac.

Pentru a minimiza impactul vulnerabilităților și daunele cauzate de acestea, trebuie să respectați câteva reguli:

  • Instalați imediat corecțiile (correcțiile) lansate de dezvoltatori pentru aplicații sau (de preferință) activați modul de actualizare automată.
  • Dacă este posibil, nu instalați programe dubioase a căror calitate și suport tehnic ridica intrebari.
  • Utilizați scanere speciale pentru vulnerabilități sau funcții specializate ale produselor antivirus care vă permit să căutați erori de securitate și, dacă este necesar, să actualizați software-ul.