TSM - Securitatea librăriilor terțe: riscuri actuale

Raghudeep Kannavara - Security Researcher, Software and Services Group

Introducere

Majoritatea codului care stă la baza aplicațiilor actuale provine din librării, însă riscurile pe care aceste librării le presupun sunt minimizate și ignorate la scară largă. Librăriile sunt modulare, reutilizabile, ușor de distribuit. Librăriile sunt folosite în aplicații ale căror utilizări cuprind domenii variate, de la finanțe la managementul drepturilor digitale, pe o serie de sisteme de operare și platforme. Aceste librării terțe pot fi conectate dinamic sau static, pot fi utilizate drept cod sursă (opensource), binar (proprietary) sau ca parte integrată a unui nivel kernel sau a unei componente de tip utilizator. O librărie vulnerabilă îi poate permite unui atacator să exploateze întreaga gamă de privilegii ale aplicației. Organizațiile au încredere în librăriile pe care se bazează afacerile lor. Astfel, librăriile reprezintă un vector potențial pentru declanșarea unui atac de securitate la ecosistemele în care sunt integrate. Pornind de la această motivație, în acest articol, autorul ilustrează pericolele actuale ale librăriilor terțe și provocările dezvoltării unui model exhaustiv de evaluare a pericolului de securitate asociat librăriilor. Autorul explică tiparele de atac comune care facilitează vulnerabilitățile frecvente din cadrul librăriilor.

Librarii - riscuri actuale

A. Înlănțuirea vulnerabilităților

Înlănțuirea vulnerabilităților a devenit o regulă în potențialul nociv pe care aceasta îl are asupra securității. Axarea pe patching-ul vulnerabilităților critice, în izolare, a dus la stabilirea unor legături între vulnerabilități mai puțin critice, fapt care a condus apoi la rezolvarea vulnerabilităților majore. Librăriile reprezintă o componentă importantă a acestui lanț. De exemplu, să luăm în considerare cazul unei librării conectate dinamic care nu are protecție pentru compilator, anume nu are enabled: ASLR, Data Execute Prevention și Stack Canary. Încărcarea acestei librării vulnerabile îi va oferi atacatorului o breșă prin care să treacă de bypass ASLR. Mai mult, un buffer overflow în librăria vulnerabilă poate fi exploatat pentru a corupe adresa de întoarcere și pentru a controla execuția programului în scopuri malițioase. Momentan, niciuna dintre cele mai cunoscute scheme de management a vulnerabilităților, precum Common Vulnerability Scoring System (CVSS) sau Common Attack Pattern Enumeration and Classification (CAPEC), nu iau în calcul evaluarea riscului în contextul modului în care o vulnerabilitate se leagă de altele.

Moștenirea vulnerabilităților

Frecvent, programatorii vor descărca anumite librării și le vor utiliza 'ca atare', depunând efort minim sau deloc pentru a le menține sau pentru a le actualiza în timp. Reutilizarea librăriilor embedded, a plugin-urilor terțe sau a codului opensource poate facilita moștenirea unor vulnerabilități pe parcursul ciclurilor de cod și pot crea oportunități adiționale de risc și de atac. Plugin-urile reprezintă o zonă gri pentru conceptul de ownership (proprietate), deoarece furnizorii de aplicații, la modul general, nu consideră că este responsabilitatea lor să facă managementul de patching de plugin-uri. Acest lucru se datoreaza faptului că plugin-urile sunt opționale și recuperabile de pe site-uri terțe. Mai mult, acestea sunt menținute cu mai puțină atenție decât codul primar, deseori fără vreo actualizare automată (auto-update feature).

Provocări pentru dezvoltarea unui model de evaluare a riscului de securitate asociat librăriilor

O perspectivă generală asupra pașilor comuni ce trebuie efectuați pentru a preveni și a reduce riscul, presupune definirea cerințelor tehnice ale aplicației, definirea arhitecturii aplicației, identificarea riscurilor în ceea ce privește confidențialitatea, disponibilitatea și integritatea datelor și a aplicației, asignarea unor valori de risc și determinarea răspunsurilor la risc, determinarea contramăsurilor ce trebuie implementate pe baza răspunsurilor alese la risc și actualizarea continuă a modelului de evaluare a riscului pe baza problemelor de securitate emergente. Realizarea acestor pași, în vederea dezvoltării unui model de evaluare a riscului, necesită o înțelegere mai profundă cerințelor tehnice ale aplicației, a arhitecturii și a studiilor de caz, aspecte pe care furnizorul de librării nu le deține. Librăriile sunt unele dintre multiplele componente ale aplicației. Prin urmare, dezvoltarea unui model de evaluare a riscului pentru librării este o provocare, de cele mai multe ori nefezabilă. Riscurile care derivă din înlănțuirea sau moștenirea vulnerabilităților sunt parte componentă a unei aplicații și nu sunt supuse modelului de evaluare a riscului. Absența unui model de evaluare a riscului, specific librăriilor, poate duce, în multe cazuri, la absența testelor țintite, de securitate, cum ar fi pen-testing, care este de obicei efectuat în contextul unei aplicații, nu al unei librării. Dezvoltarea unor instrumente sau mecanisme de protecție în API-urile unei librării, precum validarea inputului, pot fi considerate drept o responsabilitate a aplicației, care, la rândul ei, mărește suprafața/oportunitățile de atac.

Tipare de atac comune

Un "tipar de atac" este un mecanism de abstractizare care ajută la surprinderea modului în care este executat un atac împotriva sistemelor sau a rețelelor vulnerabile. Pentru a identifica tiparele de atac care facilitează vulnerabilități în librării, am revizuit baza de date CAPEC-2000 care conține 453 de tipare de atac documentate. Pentru fiecare tipar de atac care facilitează vulnerabilitățile din librării, am detaliat următoarele aspecte asociate: gradul de severitate, posibilitatea de exploatare și nivelul abilităților atacatorului, așa cum sunt documentate în CAPEC. Rezultatul îl reprezintă cele 27 de tipare de atac din tabelul 1. În graficele 1, 2 și 3 am evidențiat corelația tiparelor de atac cu gradul de severitate, posibilitatea de exploatare și abilitățile atacatorului. Observăm că, deși gradul de severitate și gradul de exploatare a vulnerabilităților, în cazul unui atac, sunt ambele relativ ridicate, abilitățile atacatorului sunt relativ scăzute. Deși ne bazăm pe date istorice, putem să inferăm tipare curente ce pot să derive din acest scenariu. Aceste date demonstrează ușurința cu care un atacator poate declanșa cu succes un atac, profitând de pe urma vulnerabilităților din librării, astfel încât să lezeze semnificativ ecosistemul software. Datele arată, de asemenea, că probabilitatea unor astfel de atacuri este ridicată, oferind o motivație suplimentară necesității de a asigura o dezvoltare eficientă și validarea librăriilor înainte de deployment.

 

Library Specific Common Attack Pattern Enumeration and Classification (CAPEC)/ENUMERAREA ŞI CLASIFICAREA TIPARELOR DE ATAC COMUNE PENTRU LIBRĂRII

În continuare, am identificat CWEs (Common Weakness Enumeration/Enumerarea Vulnerbilităților Comune) care sunt mapate pe cele 27 de tipare de atac identificate în baza de date CAPEC și care sunt asociate cu vulnerabilitățile din librării. Aceste slăbiciuni sau vulnerabilități permit ocurența tiparelor de atac. Am clasificat aceste vulnerabilități în opt categorii majore (vezi tabelul 2).

CATEGORII DE VULNERABILITĂŢI

CONCLUZII ŞI ACTIVITATE VIITOARE

Asigurarea securității librăriilor terțe este vitală pentru securitatea ecosistemului software care utilizează aceste librării. Având în vedere utilizările vaste sau necunoscute ale librăriilor, comercianții de librării și programatorii de aplicații se confruntă cu provocări contradictorii în ceea ce privește asigurarea securității software. Într-un articol viitor, autorul va discuta care sunt tehnicile și provocările care apar în procesul de reducere a vulnerabilităților din librăriile terțe prin intermediul Ciclului de Dezvoltare a Securității (Security Development Lifecycle -SDL).