Patch me if you can

Tradus din engleza, cuvantul patch inseamna plasture. In domeniul medical, punem un plasture peste o rana cu scopul de a impiedica infectarea acelei rani si sa ii dam timp sa se vindece. Similar in domeniul IT, putem pune un plasture peste o vulnerabilitate astfel incat aceasta sa nu duca la infectarea sistemului. O vulnerabilitate este o eroare software care poate face un sistem sau o aplicatie sa se comporte intr-un mod care nu a fost prevazut de cei care au dezvoltat codul sursa. In unele cazuri, o vulnerabilitate este pur si simplu determinata de modul in care functioneaza un protocol (de exemplu TCP si TCP Syn Flood, WPA2 si KRACK).

Hackerii cauta intotdeauna vulnerabilitati in sistemele de operare si in aplicatiile populare (precum Microsoft Office, Adobe, browser-e, etc.) pe care sa le exploateze in folosul lor. Unele vulnerabilitati sunt cunoscute si producatorii de software au facut disponibil un patch care sa rezolve problema. Cu toate acestea, nu toata lumea aplica patch-ul intr-un interval de timp decent. De exemplu, in 2014 vulnerabilitatea Heartbleed din soft-ul OpenSSL a fost folosita pentru a decripta traficul SSL dintre servere si clienti, lucru care a anulat orice caracter confidential al conversatiilor dintre sistemele care foloseau respectiva aplicatie si utilizatori. La acea data, peste jumatate de milion de servere web foloseau libraria OpenSSL pentru criptarea traficului, ceea ce inseamna o cantitate semnificativa de informatie vulnerabila. Multe site-uri au inceput imediat procesul de patching, dar multe altele sunt vulnerabile chiar si in prezent, ceea ce subliniaza faptul ca desi exista un patch pentru o problema cunoscuta si exploatata in mod activ de hackeri, din pacate nu ne grabim sa luam masurile corespunzatoare, ceea ce mareste fereastra de timp in care ne expunem inutil unui atac care are are mari sanse de reusita.

Si mai problematice sunt vulnerabilitatile de tipul “zero day”. O astfel de vulnerabilitate este cunoscuta doar celui care a descoperit-o si pentru care nu exista nicio rezolvare. Acum, daca respectiva persoana este un cercetator cu o busola morala, acesta va raporta bug-ul producatorului si ii va acorda acestuia timpul necesar pentru a remedia problema, dupa care va face publica vulnerabilitatea. Utilizatorii vor putea folosi patch-ul disponibil imediat pentru a-si pastra sistemele in siguranta. Daca persoana care gaseste vulnerabilitatea este o persoana rau-intentionata, aceasta o poate folosi in favoarea sa. Poate santaja producatorul software-ului, poate “vinde” vulnerabilitea pe “dark web” celui care liciteaza mai mult sau o poate folosi chiar el. In orice caz, vulnerabilitatea este “out in the wild” si este exploatata in mod activ, ceea ce face din orice sistem vulnerabil o potentiala victima. Producatorul de software trebuie sa se miste rapid si sa ofere clientilor sai un patch care sa remedieze problema. Exemple semnificative de vulnerabilitati zero day sunt PrintNightmare si vulnerabilitatea din martie 2021 care a afectat sistemele de email Microsoft Exchange.

Organizatiile pot preveni exploatarea vulnerabilitatilor cunoscute si pot minimiza impactul vulnerabilitatilor zero day daca:

– sunt la zi cu update-urile de sistem si daca aplica patch-urile in mod constiincios. Multi vendori publica regulat informatii despre patch-urile pe care elibereaza si abonarea la newsletter-ul producatorului ajuta companiile sa afle ce vulnerabilitati sunt remediate in fiecare luna

– prioritizarea update-urilor si efectuarea lor dintr-o locatie centrala pentru a minimiza streseul si efortul utilizatorului. Din momentul in care o vulnerabilitate este facuta publica incepe o cursa contracronometru. Atacatorii stiu ca au la dispozitie un interval de timp scurt pentru a avea succes, si companiile trebuie sa aplice patch-ul cat mai repede cu putinta pentru a nu fi victimele unui atac. De indata ce apare un patch, organizatia trebuie sa aiba mecanism automat care sa “impinga” acel patch pe toate sistemele de interes, minimizand cat mai repede fereastra de oportunitate a atacatorului.

– auditeaza patch-urile. Uneori, patch-urile sunt eliberate fara a fi testate riguros, ceea ce inseamna ca desi rezolva o problema, pot cauza o alta, poate si mai grava. Dupa aplicarea unui patch, sistemul trebuie monitorizat pentru a fi siguri ca functionarea sa nu este afectata.

– segmenteaza reteaua. Astfel, se reduce suprafata de atac si tintele mai mici sunt mai greu de nimerit 🙂 Daca un atac are succes, izolarea sa se poate face rapid, compromiterea incluzand doar un subset de statii din retea.

– implementeaza principiul privilegiului minim, conform caruia un utilizator trebuie sa aiba atat acces, cat sa isi indeplineasca atributiile si nimic altceva. De exemplu, logarea utilizatorului pe sistem cu un cont standard si nu cu un cont cu privilegii de administrator/root. Daca sistemul este compromis, atacatorul va fi limitat la datele utilizatorului si nu va putea sa isi escaladeze privilegiile

– dezinstaleaza software-ul nefolosit. Cu toate ca in organizatiile mari, migrarea catre o noua platforma sau adoptia unui software nou se face cu viteza unui lenes, soft-urile care sunt invechite, pentru care producatorii nu mai ofera suport sau patch-uri, trebuie sa fie dezinstalate. Hackerii adora sistemele out of date, asa ca ele trebui sa fie inlocuite cat se poate de repede.

– folosesc o solutie de protectie la nivel de endpoint de la un vendor cu renume cum este Cisco Secure Endpoint. Cisco Secure Endpoint ofera protectie  impotriva unui spectru larg de atacuri informative la nivel de dispozitiv al utilizatorului si  monitorizeaza continuu activitatea de pe sistem, detectand in timp real malware-ul si incercarile de exploatarea a vulnerabilitatilor prin identificare si blocarea comportamenului anormal folosind tehnici de ML si AI.

Mihai Dumitrascu, Sr Systems Engineer