Dezvoltare sigură de software

Calitate și securitate. Două cuvinte care împărtășesc o relație interesantă și fără o mică cantitate de confuzie.

Ceea ce este cert este că ambele cuvinte sunt semnificative în contextul software-ului. În esență, calitatea înseamnă că software-ul se va executa în conformitate cu proiectarea și scopul său. Securitate înseamnă că software-ul nu va pune date sau sisteme de calcul în pericol de acces neautorizat. Deși calitatea pare a fi mai ușor de măsurat, ambele sunt oarecum subiective în evaluarea lor.

Adevărata confuzie apare atunci când aveți în vedere relația dintre calitate și securitate. Sunt același lucru sau este unul un subset al celuilalt? Dacă am calitate, asta înseamnă că sunt și eu în siguranță? Problemele de calitate sunt și probleme de securitate sau invers?

Definirea defectelor de calitate și securitate

Pentru cei care au o viziune holistică a proiectării și dezvoltării software, problemele de calitate și securitate se încadrează în categoria largă de defecte. BusinessDictionary.com definește un defect ca fiind o „fragilitate sau deficiență care împiedică un articol să fie complet, de dorit, eficient, sigur sau de merit sau îl face să funcționeze defectuos sau să nu își atingă scopul”. De exemplu, pot folosi un instrument fuzzing pentru a testa software-ul prin bombardarea esențială a software-ului cu date de intrare aleatorii. Acest proces poate obliga software-ul să răspundă într-o manieră care nu se încadrează în parametrii predefiniți pentru fluxul de execuție. Aplicând definiția „defect”, software-ul a funcționat defectuos sau a eșuat în scopul său. Acesta ar fi un defect și ar intra în categoria calității.

Determinarea dacă defectul are o componentă de securitate va necesita mai multe săpături. Dacă pot demonstra că exploatarea acestei probleme într-un fel pentru a obține acces neautorizat la date sau rețea, atunci aceasta ar intra și în categoria de securitate. Este complet posibil ca defectul să fie pur și simplu o problemă de logică și, deși este potențial enervant, să nu creeze o vulnerabilitate exploatabilă.

Pe baza scenariului meu de mai sus, putem trage apoi concluzia că securitatea este un subset de calitate.

Sau poate nu.

Clarificarea neînțelegerilor dintre calitate și securitate

O eroare simplă de codare, cum ar fi scripturile cross-site (XSS) poate contracara argumentul nostru. Dezvoltatorul poate codifica software-ul în conformitate cu cerințele și face în continuare codul vulnerabil la un atac XSS. Defectul asociat ar fi legat de securitate, dar reflectă un defect din punct de vedere al calității. Mulți ar susține că o vulnerabilitate a securității este o problemă de calitate. Aș putea cu ușurință să mă ascund în spatele acestei linii de raționament, dar alții ar invoca interpretarea mai strictă. Acest lucru dezactivează ideea că securitatea este un subset de calitate.

O parte a neînțelegerii dintre calitate și securitate a fost aceea că cele două erau separate funcțional în magazinele de dezvoltare tradiționale, iar grupurile care le dețineau au interacționat rar. Calitatea a fost viziunea echipei de asigurare a calității, care locuia în mod normal undeva în organizația de dezvoltare. Această echipă a oferit dezvoltatorilor servicii de asigurare a calității și testare. Securitatea a fost gestionată de oamenii de securitate din cadrul IT. În multe organizații, relațiile cu dezvoltarea nu au fost bine definite și chiar mai slab executate. Securitatea IT și QA ar fi putut exista pe planete separate și nu se știe diferența.

Ceea ce au împărtășit cele două grupuri a fost faptul că acestea erau adesea privite ca un obstacol în calea dezvoltării. Când un defect a fost descoperit de QA sau IT Security, dezvoltatorii au fost obligați să oprească ceea ce făceau și să remedieze codul. Curentul constant de întreruperi a avut un efect previzibil asupra dezvoltării și a atitudinilor dezvoltatorilor. QA și IT Security au împărtășit o obligațiune comună – au fost considerate un impediment pentru progresul dezvoltatorilor.

Combinarea calității și securității pentru a permite dezvoltatorului

Pe măsură ce practicile de dezvoltare au evoluat și metodele agile continuă să se înrădăcineze, silozele tradiționale de calitate și securitate au trebuit să se reducă din necesitate. Securitatea este integrată în procesul de dezvoltare cu noțiunea de a permite dezvoltatorilor să construiască bune coduri de securitate în codul lor. În mod similar, responsabilitatea pentru calitate este acum împărtășită de dezvoltatori. Există, de asemenea, o conștientizare mai mare a procesului de arhitectură, design și cerințe și modul în care acest proces afectează calitatea și securitatea.

Dintr-un unghi de fabricație, defectele sunt privite ca neconformități cu cerințele specificate. Acest lucru ridică întrebarea mereu prezentă dacă organizația ar trebui să integreze securitatea în procesul de arhitectură și proiectare sau să adopte o abordare „test and patch” pentru securitatea software. Acesta este un subiect pe care l-am abordat în coloanele anterioare , menționând că 50% din defectele de securitate sunt defecte care au geneza lor în faza de arhitectură și proiectare. Celelalte 50% din problemele de securitate rezultă din procesul de dezvoltare și sunt denumite „bug-uri”.

Lărgirea perspectivei calității și securității

În final, calitatea și securitatea sunt componente critice pentru o noțiune mai largă: integritatea software-ului. Care dintre ele pune cel mai mult accent este în ochii privitorului? De exemplu, dacă construiți Mars Rover sau o mașină cu autovehicul, ați dori să vă asigurați că software-ul de la bord este de cea mai bună calitate. Dacă ai scrie o aplicație bancară sau un software pentru un dispozitiv medical, securitatea ar fi un șofer puternic. Niciun caz nu se exclude reciproc, așa că vor exista elemente ale ambelor.

În cele din urmă, dezvoltatorii se străduiesc să dezvolte cel mai bun software posibil. Aceasta implică faptul că defectele – calitatea și securitatea – ar trebui să fie minimalizate sau, în cel mai bun caz, eliminate. Dacă suntem de acord că problemele de calitate și de securitate sunt atât o formă de defect, atunci trebuie să ne adresăm suficient atât pentru a produce software cu cea mai înaltă integritate.

Articol preluat de pe: SecurityWeek.com


Securitate in Romania by VerifiES Security

Blogul nr 1 din industria de Securitate: Articole, noutati si tendinte din industria de Securitate, Solutii de Securitate, Locuri de munca din industria de Securitate, Resurse utile, topuri de Securitate,  legislatie de Securitate, Club de Securitate, Promovare online pentru firme de securitate

VerifiES Security: Servicii pentru industria de securitate

VerifiES Efficiency– Eficienta in Securitate:  Proiectare si Receptie sisteme de Securitate, Selectie, Evaluare si Audit furnizori de Securitate, Consultanta de securitate, Audit securitateSolutii de securitate – optimizare buget de securitateExternalizare management servicii de securitate, Analize, statistici de securitate, Instrumente utile pentru industria de securitate

VerifiES Employees – Angajati in Securitate: Servicii de recrutare si training pentru industria de Securitate

VerifiES Evolution – Evolutie in Securitate: Servicii de consultanta in Securitate: dezvoltare companii de securitate,  strategie, management, marketing, vanzari, consultanta financiara.

Securitate in Romania

Blogul nr 1 din industria de Securitate - Fii primul care afla noutati si informatii din industria de Securitate