Librăriile reprezintă un vector potenţial pentru declanşarea unui atac de securitate la ecosistemele în care sunt integrate, deoarece codul din cadrul multor aplicaţii de astăzi provine din librării terţe, iar riscurile asociate vulnerabilităţilor din aceste librării este ignorat și minimizat.
Într-un articol precedent, autorul a ilustrat care sunt vulnerabilităţile asociate, provocările care apar în identificarea vulnerabilităţilor și a explicat tiparele commune de atac care profită de pe urma acestor vulnerabilităţi. În acest articol, autorul discută tehnicile și provocările care apar în reducerea riscurilor și a vulnerabilităţilor în librăriile terţe via Security Development Lifecycle (SDL).
Security development lifecycle
Security Development Lifecycle (SDL) este un set de activităţi și de puncte de convergenţă care pot produce rezultate de înaltă calitate în dezvoltarea de produse și de servicii. SDL face ca securitatea să fie parte integrantă din definirea, designul, dezvoltarea și validarea produsului. SDL se integrează cu procesul Corporate Product Life Cycle (PLC) pentru a ne asigura că produsul este conform cu măsurile de securitate. SDL presupune cinci faze diferite.
fig. 1. Security Development Lifecycle
Faza SDL S0 se asigură că toate activităţile SDL sunt bine recomandate și încorporate corespunzător pentru a răspunde riscurilor de securitate preconizate din proiect. Planul SDL este adaptat riscurilor de securitate specifice fiecărui proiect. Pentru a evalua corect riscurile de securitate ale librăriilor software, trebuie să cunoaștem contextele specifice de utilizare pentru aceste librării, contexte care nu sunt direct evidente.
Faza SDL S1 permite echipei de proiect să dezvolte un model adecvat de întâmpinare a vulnerabilităţilor, model care să determine mai apoi măsuri și obiective de securitate potrivite. Aceste măsuri și obiective le vor permite designerilor, programatorilor și validatorilor/testerilor să ia în calcul problemele de securitate în timp ce își îndeplinesc responsabilităţile cu securitatea. În cazul librăriilor, așa cum s-a explicat anterior, de multe ori, vulnerabilităţle specifice aplicaţiei sunt necunoscute. Dacă vulnerabilităţile aplicaţiei sunt cunoscute, iar obiectivele de securitate sunt deja identificate, este mai ușor să se aleagă librăria potrivită. De exemplu, dacă proprietăţle de securitate ale unei librării existente nu sunt aliniate la obiectivele de securitate ale aplicaţiei, o alternativă ar putea fi să se dezvolte o nouă librărie, ceea ce presupune consum de timp și de resurse.
Faza SDL S2 se asigură că toate măsurile și obiectivele de securitate sunt transpuse cu succes la nivelul artefactelor de nivel inferior, păstrând asigurarea securităţii în dezvoltarea proiectului. În practică, această fază se aplică sau nu, în funcţie de aplicarea obiectivelor de securitate.
Faza SDL S3 le permite programatorilor și validatorilor/testerilor să evalueze un set parţial de măsuri de securitate, acordând timp suficient pentru a răspunde lipsurilor din cadrul proceselor de securitate sau a zonei pe care acestea o acoperă. Această fază presupune examinarea etapelor timpurii de implementare, de exemplu alpha code, pentru a ne asigura că implementarea este la zi și că va oferi un produs de încredere. SDL S3 este o etapă critică în asigurarea securităţii unui software, în ceea ce privește librăriile, și în verificarea practicilor de dezvoltare de cod sigur, de analiză statică și dinamică, de revizie manuală de cod, de fuzz testing, de verificare și de activare a securităţii compilatorului. Problemele de securitate identificate acum sunt rezolvate în această etapă.
Pe de altă parte, atunci când se folosesc librării terţe pentru dezvoltarea aplicaţiilor, utilizarea greșită a librăriilor este o problemă majoră. Au existat situaţii în care s-au folosit librăriistandard, dar programatorii care au folosit acele librării au făcut presupuneri greșite în ceea ce priveșe modul de utilizare a rutinelor/routines din librării. De exemplu, programatorii pot alege algoritmul crypto/criptat corect, dar să îl folosească incorect prin alegerea unei vector de iniţializare greșit, a unor resurse de entropie, a unor credenţiale hardcodate și a unor lungimi de chei/key lengths. Înţelegerea nuanţelor în ceea ce privește algoritmul și utilizarea librăriilor este o abilitate de bază pentru criptografia aplicată. În general, utilizările improprii cele mai commune, în cazul librăriilor, aşa cum sunt documentate de IEEE Center for Secure Design, includ:
Utilizarea librăriilor care conţin vulnerabilităţi cunoscute.
Utilizarea librăriilor care conţin feature-uri suplimentare, precum interfeţe debug, introducerea riscurilor de securitate.
Reutilizarea librăriilor care nu mai corespund standardelor curente de securitate software.
Utilizarea unei librării terţe și lăsarea responsabilităţii pe seama librăriei terţe.
Faza SDL S4 permite managementului să înţeleagă orice alt risc semnificativ de securitate care nu a fost suficient abordat înainte de lansarea produsului. SDL S4 ne asigură că produsul este gata de lansare din punctul de vedere al securităţii.
Dacă fazele S0, S1 și S2 sunt părţi componente din SDL, faza S3, urmată de faza S4, este critică pentru asigurarea securităţii în timpul dezvoltării de librării. Cele opt categorii majore de vulnerabilităţi identificate în tabelul 1 pot fi detectate și rezolvate în cadrul activităţilor din faza S3, activităţi care includ analiza de cod static, revizia manuală a codului sursă conform cu practicile de dezvoltare de cod sigur, fuzz testing, analiza dinamică și activarea securităţii compilatorului. Mai mult, succesul SDL depinde în mare măsură de eficacitatea trainingului de securitate bazat pe roluri şi de aducerea acestor probleme în atenţia arhitecţilor, programatorilor, validatorilor/testerilor şi managerilor. În acest context, evaluarea securităţii librăriilor terţe este importantă. Atunci când librăriile sunt obţinute de la furnizori terţi sau comunităţi opensource a căror practici SDL nu se cunosc, se recomandă ca programatorii de aplicaţii şi validatorii/testerii să se asigure că aceste librării au ultimele actualizări de securitate, la nivel de compilator şi configurări, înainte de integrarea în aplicaţie. Acolo unde este disponibil codul sursă al librăriei, în funcţie de modelul de licenţă, se poate realiza validarea securităţii în profunzime. Optimizările de performanţă şi canale auxiliare oferă securitate suplimentară pentru librăriile crypto/criptate.
Un principiu de bază al strategiei Defense in Depth este că, pentru a securiza informaţia, e necesar un echilibru concentrat pe trei elemente primare: oameni, tehnologie și operaţiuni. În cazul librăriilor, găsirea echilibrului între cele trei elemente primare trebuie să facă faţă complexităţii curente. Librăriilesoftware oferă din ce în ce mai multe blocuri reutilizabile care deservesc un număr mare de aplicaţii din ziua de azi. Trebuie să creștem gradul de conștientizare asupra riscurilor potenţiale de securitate asociate librăriilor vulnerabile, să ne asigurăm că mecanismele de validare a securităţii sunt la locul lor, să dezvoltăm politici formale de achiziție sau guvernare pentru a înţelege, a gestiona și a reduce riscurile care derivă din adoptarea/preluarea librăriilor opensource sau terţe, să creăm practici care să asigure un răspuns formal, standard la incidente. Toate acestea vor ridica nivelul de securitate necesar pentru librăriile software.
de Vlad Ciurca
de Ioana Rusu
de Ioana Varga