ABC-ul securitatii aplicatiilor web – Partea intai

Aplicatiile web sunt elemente fundamentale pe care afacerile de astazi conteaza sa isi desfasoare activitatea si sa interactioneze cu partenerii si clientii lor. Pandemia din ultimii doi ani a insemnat trecerea la scenariul de munca remote/hibrida, trecere care a intensificat importanta aplicatiilor web. Multe organizatii au trebuit sa expuna aplicatii vechi dezvoltate in urma cu mult timp  pe care utilizatorii  sa le acceseze direct din Internet sau sa implementeze aplicatii cu totul noi de la zero. Aceste aplicatii au fost dezvoltate rapid, „pe genunchi”, folosind API-uri si software open source, securitatea fiind inca o data neglijata pentru ca mentinerea si cresterea business-ului au prioritate.

Aplicatiile web sunt un vector de atac folosit intens de hackeri pentru a obtine date confidentiale, credentiale de acces sau acces neautorizat la alte sisteme. Metodele precum SQL injection, cross-site scripting (XSS), injectarea de comenzi, executarea de cod de la distanta (Remote Code Execution), care in mod traditional vizau aplicatiile web, sunt folosite acum si in atacuri asupra API-urilor si aplicatiilor mobile. In ultimii ani, amenintarile care vizeaza aplicatiile s-au multiplicat, si au aparut alti vectori de atac mai noi si mai periculosi printre care se numara si:

  • Vulnerabilitatile din API-uri (Application Programming Interface)
  • Atacuri lansata in mod automat de Botneti
  • Atacuri care vizeaza Clientul (client-side attacks sau supply chain attacks)

A este de la API

API-urile au folosite pentru multi ani in zona de backend a aplicatiilor web pentru operatiuni de comunicare de tipul machine-to-machine. Astazi, API-urile sunt omniprezente in aplicatiile pe care le folosim in fiecare zi, accelerand transformarea digitala. Organizatiile au trecut la dezvoltarea aplicatiilor aplicand principiul „API first” pentru ca aceasta metoda le permite sa inoveze si sa lanseze rapid produse pe piata. Dezvoltatorii care folosesc concepte de agilitate si practici de DevOps reusesc sa dezvolte rapid si sa ofere functionalitati noi pentru aplicatiile web si pentru cele mobile. Cresterea gradului de utilizare a API-urilor si accesul direct al lor la date critice (in special cele de tipul PII – Personally Identifiable Information) pentru organizatie le-a transformat intr-o tinta foarte atragatoare pentru atacatori. In 2021, raportul BugCrowd PriorityOne a remarcat o dublare a numarului de vulnerabilitati care afecteaza API-urile. Importanta API-urilor este recunoscuta si de OWASP care a lansat in 2019 un program similar cu OWASP Top 10 Web Applications Security Risks numit OWASP API Security Project care listeaza cele mai periculoase 10 vulnerabilitati ale API-urilor.

API-urile sunt construite pentru a oferi automatizari, ceea ce inseamna identificarea unor API-uri vulnerabile si exploatarea lor poate fi foarte profitabila. Atacatorii pot folosi procesul automat executat de API pentru a exfiltra mult mai rapid date in afara organizatiei sau pot fi folosite ca pas intermediar in vederea lansarii altor atacuri (capturarea de informatii confidentiale, man in the middle, eavesdropping, etc.)

Exemplu: conferintele tinute pe Zoom

Conferintele de pe Zoom erau protejate, in mod, implicit de un cod numeric format din 6 cifre. Ceea ce inseamna orice conferinta avea atribuita un cod dintr-un milion de combinatii posibile. Un cercetator a descoperit ca aceste coduri pot fi atacate intr-o maniera „brute force” si a prezentat vulnerabilitatea companiei. Procesul de identificare a vulnerabilitatii a fost urmatorul:

  • Un utilizator putea introduce link-ul intalnirii Zoom intr-o pagina web care cerea codul numeric. Dupa ce user-ul completa campurile cerute si trimitea formularul, putea observa modul in care API-urile interactionau
  • S-a observat ca nu era implementat niciun mecanism de limitare a numarului de incercari de completare a codului, ceea ce este susceptibil unui atac de tipul brute-force
  • Dupa 43164 de incercari care au durat 29 de minute, cercetatorul a reusit sa gaseasca pinul corect.
  • Astfel, orice intalnire zoom putea fi „hack-uita” relativ usor si un potential atacator ar fi putut intra in sedinte private in care se discuta informatii extrem de sensibile (Zoom este adesea folosit de institutii de stat si de agentii guvernamentale).
  • Un alt aspect ingrijorator este lipsa unei auditari si monitorizari a numarului de incercari esuate de conectare intr-o sedinta, feature care putea fi usor implementat si care ar fi ridicat o alerta la numarul mare de incercari nereusite de conectare.
  • Cercetatorul a submis vulnerabilitatea catre Zoom, care a implementat cateva patch-uri pentru a o rezolva, vulnerabilitatea identificata fiind acum eliminata.

Organizatiile pot lua cateva masuri pentru a-si securiza API-urile si implicit aplicatiile web:

  • Implementarea functiilor de logging si auditare pentru a inregistra activitatile de accesare a aplicatiilor (numar de incercari, adresa IP, geolocatie, tip de client) si pentru a ridica o alarma la detectarea unor activitati malitioase sau intruzive.
  • Implementarea corecta a metodelor de autentificare (sa nu se permita parole slabe, sa nu se stocheze parole folosind algoritmi slabi, sa implementeze CAPTCHA, etc.).
  • Sanitizarea codului aplicatiei pentru a elimina vulnerabilitatile care pot oferi atacatorilor acces neautorizat in sistem
  • Efectuarea periodica a exercitiilor de penetration testing asupra aplicatiilor web

Mihai Dumitrascu, Sr Systems Engineer