ABC-ul securitatii aplicatiilor web – partea a treia

Primele doua parti ale acestui articol au prezentat API-uri si botnet-ul ca vectori de atac inovatori folositi de hackeri pentru a compromite aplicatiile web. In triada de securitate ABC mai ramane de acoperit C-ul. C vine de la client, mai specific atacurile care vizeaza compromiterea clientilor care viziteaza site-uri web sau care folosesc variantele de mobil ale respectivei aplicatii web.

Inca de la inceputurile www-ului, la finalul anilor 1980, aplicatiile au continuat sa evolueze pentru a ne satisface apetitul de a face orice pe Internet. Aplicatiile au beneficiat de inovatii nu numai pe partea de server, unde continutul static a fost inlocuit de continut dinamic, ci si pe partea de client (adica pe partea de browser) unde aplicatiile de tipul single-page care sunt mult mai potrivite pentru smartphone-uri si tablete au inlocuit randarile simple bazate pe JavaScript. O buna proportie din logica aplicatiei este mutata pe partea de client, ceea ce inseamna ca si atacatorii isi concentreaza eforturile in aceeasi directie, mai ales ca aceasta logica este construita folosind preponderent cod sursa tert sau de tipul open-source.

Aplicatiile web moderne folosesc zeci, poate chiar sute de scripturi terte pentru ca altfel nu se poate 🙂 Este o abordare cu totul acceptata in lumea dezvoltatorilor pentru ca alternativa este una de neimaginat: rescrierea a mii de linii de cod. Iar intr-o lumea in care trebuie sa fi agil si sa inovezi nu iti permiti sa reiventezi ceva ce deja exista si functioneaza. Problema este una de incredere si un script care astazi este ok, maine poate fi exploatat de hackeri in favoarea lor. Hackerii vizeaza “depozitele” unde sunt pastrate aceste coduri sursa si astfel orice aplicatie care foloseste respectivul cod sursa va fi o victima (un astfel de atac se mai numeste si supply chain, intrucat hackerii ataca o victima prin compromiterea unui furnizor de-ai acesteia).

Timpul de detectie a unui atac de tipul supply chain este unul indelungat intrucat nu aplicatia in sine, ci scripturile terte modificate cu cod malitios sunt cele care ataca browser-ul. Scripturile sunt incarcate in browser-ul clientului de pe platforme de tipul CDN (Content Delivery Network) si repository-uri de tipul GitHub, si nu direct din aplicatie.

De exemplu in 2018 British Airways a fost amendata cu 20 de milioane de lire din cauza unei brese de securitate in urma careia intre 380 si 500 de clienti au avut informatiile personale si financiare furate. Amenda initiala a fost de 182,38 milioane de lire, insa a fost redusa pe seama efectelor pandemiei asupra companiilor aeriene si a turismului. Responsabil pentru atac a fost grupul Magecart, un grup notoriu pentru atacurile lansate asupra aplicatiilor web. Magecart a injectat la finalul unui script folosit atat de site-ul web, cat si aplicatia mobila, 22 de linii de cod care atunci cand se executau colectau datele introduse in formularul de plata si le trimiteau catre un site web detinut de grup. Acest atac a dus la exfiltrarea unui volum enorm de date pe care Magecart a putut sa le vanda pe Dark Web sau le foloseasca chiar ei in interes propriu.

Dupa cum spuneam, folosirea scripturilor terte in construirea aplicatiilor web este o practica des intalnita in organizatii care folosesc diferite metode de a livra scriptul catre browser-ul clientului. OWASP a publicat lista “OWASP Top 10 Client-Side Security Risks” in care se regasesc vulnerabilitatile care pot fi exploatate de atacatori. Organizatiile pot folosi aceasta lista pentru a evalua postura de securitate a aplicatii web si pentru a identifica daca foloseste cod sursa tert care a fost compromis. Masurile de securitate care pot fi luate pentru minimizarea sanselor de succes a unui atac pe partea clientului sunt:

  • folosirea setarilor de control integrate in browser-ul web: Content Security Policy (CSP) si Sub-Resource Integrity (SRI).
  • implementarea unor mecanisme de verificare a originii codului sursa tert folosit de aplicatie web.
  • utilizarea functiilor de monitorizare si de logging mai ales pentru incercarile nereusite de accesare a datelor in timp real atunci cand fiecare pagina web este asamblata si executata folosind atat cod “first party”, cat si cod “third party”.
  • scanarea codului sursa pentru a identifica si inlocui librarille invechite si pe cele neactualizate care contin vulnerabilitati pe partea de client. folosirea unei solutii dedicate pentru protejarea aplicatiei web

Organizatii sunt compromise din ce in ce mai mult prin aplicatiile web pe care le folosesc in business-ul pe care il desfasoara. Pe masura ce apar noi tehnologii web, atacatorii continua si ei sa lucreze sa identifice noi moduri de a sunta mecanismele de securitate ale acestor tehnologii. API-urile, atacurile bazate pe botnet si atacurile care vizeaza client-ul web sunt cele mai recente metode folosite de hackeri pentru a face profit. Ce este incurajator este faptul ca organizatiile inteleg aceste noi tipuri de atac si reactioneaza pozitiv la adoptia unor masuri care sa le protejeze infrastructura web, clientii si partenerii de business.

Mihai Dumitrascu, Sr Systems Engineer