Cum vă protejați interfețele API?
Ne aflăm în plină ascensiune a economiei digitale, iar volume imense de date sunt transferate prin intermediul interfețelor API. Afaceri, jocuri, educație, vreme, știință, artă… absolut totul funcționează pe bază de API-uri. Într-o lume atât de dependentă de API-uri, este surprinzător cât de puțină importanță se acordă securității acestora.
Dezvoltatorii tind să creadă că setările implicite ale framework-urilor lor sunt suficiente sau, mai rău, dacă nu folosesc framework-uri, presupun că aplică deja cele mai bune practici de securitate. Administratorii de sisteme, la rândul lor, se bazează pe securitatea implicită oferită de infrastructură sau de furnizorul de servicii.
Această abordare nu este deloc ideală, dacă mă întrebați pe mine.
Sursa: developer.ibm.com
Este evident că miza este mare și realizăm acest lucru abia când se întâmplă un eveniment cu adevărat catastrofal.
Dar, să începem cu începutul. 🙂
De ce este esențial să securizați punctele finale API?
Ar trebui să fie o întrebare simplă, nu-i așa?
Trebuie să protejăm punctele finale deoarece, în definitiv, de ele depinde întreaga afacere.
Deși acesta este un argument suficient de convingător, doresc să extind puțin această idee și să subliniez și alte consecințe conexe, dar la fel de critice.
Pierderi financiare 📉
Acesta este cel mai evident rezultat. Dacă cineva reușește să compromită punctele finale API, întreaga activitate se va opri brusc. Incidentele de securitate necesită mult timp pentru a fi remediate, ceea ce se traduce în consecințe dezastruoase pentru afacere. Deși este adevărat că majoritatea companiilor nu vor suferi prea mult din cauza unei întreruperi de o oră sau două, pentru altele, acest lucru este absolut inacceptabil.
Imaginați-vă un schimb valutar oprit pentru doar câteva minute!
Probleme de conformitate
Securizarea inadecvată a API-urilor poate duce la probleme legale grave, în funcție de locația geografică sau de domeniul de activitate. De exemplu, dacă operați în sectorul bancar (în special în UE), descoperirea unei securități slabe a API-urilor poate avea consecințe legale și de conformitate grave. Acestea pot fi atât de severe încât pot duce chiar la falimentul afacerii.
Pierderea reputației
Un atac cibernetic este în sine un eveniment dificil, dar dacă știrea devine publică, imaginea brandului dvs. va suferi daune ireparabile. De exemplu, Sony a fost ținta unor atacuri cibernetice grave de mai multe ori și, în cercurile de securitate, compania este un subiect de ironie.
Chiar dacă nu se înregistrează nicio pierdere reală de date sau de bani, veți avea dificultăți în a-i recâștiga pe clienții care și-au pierdut încrederea. 🙂
Facturi umflate pentru infrastructură 💰
Când API-ul dvs. rulează pe infrastructură, el consumă resurse (lățime de bandă, procesor și memorie, în principal). Dacă API-ul nu este securizat corespunzător și persoane rău intenționate reușesc să interacționeze cu el, este posibil să îl forțeze să execute operații inutile (de exemplu, interogări complexe ale bazelor de date), ceea ce va duce la creșterea nejustificată a costurilor.
Pe platformele care permit scalarea automată a resurselor (cum ar fi AWS), consecințele pot fi surprinzătoare. Dacă ajungeți într-o astfel de situație pe AWS, ei înțeleg problema și sunt dispuși să reducă factura (cel puțin în momentul scrierii acestui articol!).
Moralul echipei
S-ar putea crede că echipa care a permis să se întâmple aceste compromisuri își va pierde moralul. Ei bine, nu este neapărat așa. Compromisurile s-ar putea datora unei securități inadecvate a infrastructurii, ceea ce va afecta negativ moralul dezvoltatorilor sau invers.
Dacă aceste situații se repetă, se va instala o cultură de lucru pe care o veți regreta.
Avantaj pentru concurență
Să presupunem că s-a produs un atac, dar fără pierderi reale. Cu toate acestea, concurenții dvs. vor folosi incidentul pentru a-și promova propriul API și a afirma că este mult mai sigur (chiar dacă nu este!). Din nou, mult succes în încercarea de a convinge piața. 🙂
În concluzie, consecințele unui incident de securitate depășesc pierderea de bani.
Cele mai bune practici pentru protejarea punctelor finale API
Din fericire, există o serie de practici ușor de aplicat și bine înțelese pe care le puteți implementa pentru a proteja punctele finale API. Iată recomandările majorității experților în securitate:
Întotdeauna HTTPS 🔒
Dacă punctele finale API permit comunicarea prin HTTP sau alte protocoale nesecurizate, le expuneți la un risc major. Parolele, cheile secrete și informațiile despre cardurile de credit pot fi furate cu ușurință printr-un atac de tip „om în mijloc” sau prin intermediul unui instrument de analiză a pachetelor, care le poate citi ca text simplu.
Prin urmare, HTTPS ar trebui să fie singura opțiune disponibilă. Indiferent cât de nesemnificativ pare un punct final, conexiunea prin HTTP nu ar trebui să fie nici măcar o opțiune. Un certificat TLS nu este scump; îl puteți cumpăra cu aproximativ 20 USD de la Magazin SSL.
Hashing unidirecțional al parolelor
Parolele nu ar trebui stocate niciodată ca text simplu, deoarece în cazul unui atac de securitate, toate conturile de utilizator vor fi compromise. De asemenea, ar trebui evitată criptarea simetrică, deoarece un atacator suficient de determinat va putea să o spargă.
Singura opțiune recomandată este folosirea algoritmilor de criptare asimetrici (sau „unidirecționali”) pentru stocarea parolelor. În acest fel, niciun atacator, niciun dezvoltator sau administrator de sistem din cadrul companiei nu va putea citi parolele clienților.
Autentificare solidă 💪
Majoritatea API-urilor includ o formă de autentificare, dar, în opinia mea, sistemul OAuth2 este cel mai eficient. Spre deosebire de alte metode, acesta împarte contul în resurse și acordă acces limitat purtătorului jetonului de autentificare.
O altă practică bună este configurarea jetonului să expire, de exemplu, la fiecare 24 de ore, fiind necesară o actualizare. Astfel, chiar dacă jetonul dvs. este compromis, există șansa ca limita de 24 de ore să reducă impactul incidentului.
Aplicarea limitării ratei
Dacă nu aveți un API utilizat de milioane de persoane în fiecare minut, este o idee bună să limitați numărul de cereri pe care un client le poate trimite către API într-un anumit interval de timp.
Acest lucru ajută, în principal, la descurajarea roboților, care pot trimite sute de cereri simultane în fiecare secundă, consumând resursele sistemului fără un motiv real. Majoritatea framework-urilor de dezvoltare web includ un middleware de limitare a ratei (iar dacă nu, este ușor să îl adăugați printr-o bibliotecă), a cărui configurare durează doar câteva minute.
Validarea datelor de intrare
Pare o idee simplă, dar veți fi surprins de câte API-uri neglijează acest aspect. Validarea datelor de intrare nu înseamnă doar verificarea formatului corect al datelor primite, ci și prevenirea eventualelor surprize. Un exemplu simplu este injecția SQL, care vă poate șterge bazele de date dacă lăsați șirurile de interogare să treacă fără o verificare adecvată.
Un alt exemplu este validarea dimensiunii cererii POST și returnarea unui cod de eroare adecvat și a unui mesaj către client. Încercarea de a procesa date de dimensiuni mari va duce la blocarea API-ului.
Implementarea filtrării adreselor IP, dacă este cazul
Dacă oferiți servicii B2B și API-urile dvs. sunt utilizate de companii din locații specifice, luați în considerare adăugarea unui nivel suplimentar de securitate prin restricționarea adreselor IP care pot accesa API-ul. Pentru fiecare locație și client nou, adresa IP trebuie verificată la primirea cererii.
Deși acest lucru complică puțin procesul de integrare, rezultatul final este o securitate mult mai riguroasă.
Instrumente pentru îmbunătățirea protecției API
Există instrumente care ne pot ajuta să scanăm vulnerabilitățile sau, și mai bine, să ofere o primă linie de apărare pentru securizarea API-urilor?
Din fericire, da. Există mai multe instrumente pe care le puteți utiliza, dar rețineți că nicio strategie de securitate nu este perfectă. Cu toate acestea, aceste instrumente pot îmbunătăți considerabil securitatea API-urilor dvs., așa că sunt recomandate.
Metasploit este un framework open-source foarte popular pentru testarea penetrării aplicațiilor web și a API-urilor. Acesta poate scana API-ul pe baza mai multor parametri și poate efectua un audit exhaustiv de securitate pentru diverse niveluri de vulnerabilități.
De exemplu, scanarea de securitate efectuată de Metasploit poate indica dacă semnăturile API dezvăluie tehnologiile și sistemul de operare utilizat; ascunderea acestor informații reprezintă adesea o mare parte din succesul securității API.
Deși framework-ul open-source este în general suficient, există produse plătite, bazate pe Metasploit, care merită luate în considerare. Planul Pro este excelent dacă aveți nevoie de suport premium și veți utiliza framework-ul în profunzime, dar nu este, în general, necesar dacă echipa dvs. are suficientă experiență.
AppTrana
Soluția dedicată AppTrana pentru protecția API oferă o protecție cuprinzătoare, bazată pe risc, împotriva unui spectru larg de amenințări, inclusiv vulnerabilitățile top 10 OWASP API, atacuri DDoS și bot bazate pe API, amenințări interne, scurgeri de date etc. Prin scanarea automată și nelimitată a API-urilor, susținută de testarea manuală, monitorizează continuu nivelul dvs. de risc pentru a consolida securitatea.
Protecția API oferită de AppTrana asigură o soluție completă, combinând detectarea riscurilor, detectarea amenințărilor API, politici de securitate pozitive API, politici DDoS specifice API, module Bot specifice API și funcții de descoperire a API-urilor.
Funcția de descoperire a API-urilor oferă vizibilitate completă asupra apelurilor API, inclusiv a API-urilor nedocumentate, pentru a înțelege suprafața de atac a API-urilor. Această soluție dedicată colectează informații despre detalii utilizatorilor, comportamentul acestora, activitatea amenințărilor, hărțile apelurilor API și multe altele pentru a afișa starea protecției cu analize în timp real.
Cu Indusface AppTrana, puteți genera politici personalizate specifice API-ului pentru a bloca abuzurile direcționate către API în timp real.
Cloudflare
Nu doar un CDN, ci și Cloudflare oferă numeroase funcții de securitate, precum WAF, limitarea ratei, protecția DDoS, care sunt esențiale pentru a vă proteja API-ul de amenințările online.
Invicti
Invicti se distinge prin „scanarea bazată pe dovezi”. Mai exact, condițiile anormale ale rețelei sau unele comportamente API mai puțin cunoscute pot fi interpretate greșit ca vulnerabilități de securitate.
Acest lucru duce la risipă de resurse, deoarece toate vulnerabilitățile raportate trebuie reanalizate manual pentru a confirma că nu sunt false pozitive. Invicti susține că instrumentul său poate oferi o dovadă a conceptului suficient de puternică pentru rapoarte, eliminând incertitudinile legate de vulnerabilitățile detectate.
Cu companii precum Sony, Religare, Coca-Cola, Huawei etc. pe lista de clienți, puteți fi sigur că acest instrument este de încredere. 🙂
SoapUI Pro
Creat de SmartBear, SoapUI Pro oferă o metodă ușor de utilizat pentru a crea teste API și a obține rapoarte precise, bazate pe date. De asemenea, se integrează perfect cu fluxul dvs. CI/CD, asigurându-vă că nicio modificare de cod nu va compromite securitatea API-ului.
SoapUI funcționează cu Swagger, OAS și alte standarde API populare, reducând semnificativ timpul de pornire. Cu clienți precum Microsoft, Cisco, MasterCard, Oracle etc. și planuri începând de la 659 USD pe an, acesta este un instrument valoros pentru API-uri mai sigure.
Okta
Utilizați Okta pentru a permite dezvoltatorilor să se concentreze pe îmbunătățirea experienței utilizatorilor, dar și pentru a proteja eficient datele companiei. Oferă autorizare OAuth 2.0 și este conceput atât pentru aplicații mobile, cât și pentru cele web. Este compatibil, de asemenea, cu serviciile de gestionare a API-urilor terțe.
Folosiți Okta pentru a crea, audita și menține toate politicile de acces API prin console intuitive, create special, fără a fi necesare coduri personalizate. Acesta oferă flexibilitate suplimentară, astfel încât nu trebuie să vă securizați API-urile folosind instanțe suplimentare de gateway.
Okta implementează o politică bazată pe identitate pentru a controla diferitele tipuri de utilizatori și servicii, într-un singur loc. Definiți accesul în funcție de profilurile de utilizator, rețele, grupuri, consimțământ și clienți. Extindeți jetoanele folosind date dinamice din sistemele interne, pentru o integrare mai rapidă și o migrare simplă.
Facilitează gestionarea centralizată a API-urilor și permite protejarea resurselor API. Okta se axează pe securitate, permițându-vă să protejați accesul dintre diverse microservicii.
Concluzie
Există o multitudine de instrumente de securitate API disponibile pe piață, fie că sunt open-source, gratuite, comerciale, sau o combinație a acestora.
Încercați câteva dintre ele din această listă și vedeți care se potrivește cel mai bine cerințelor dvs.