Graudit suportă mai multe limbaje de programare și permite integrarea testării securității codului sursă direct în procesul de dezvoltare.

Sursa: (Markus Spiske)
Testarea este o parte esențială a ciclului de viață al dezvoltării software-ului. Există multe tipuri de testare, fiecare având propria sa scop. Astăzi vreau să discut despre identificarea problemelor de securitate în cod.
Este evident că în realitățile moderne ale dezvoltării software-ului, este crucial să asigurăm securitatea proceselor. La un moment dat, a fost introdus chiar un termen special, DevSecOps. Acest termen se referă la un set de proceduri menite să identifice și să elimine vulnerabilitățile din aplicație. Există soluții open source specializate pentru verificarea vulnerabilităților conform standardelor , care descriu diferitele tipuri și comportamente ale vulnerabilităților în codul sursă.
Există diverse abordări pentru a rezolva problemele de securitate, cum ar fi testarea statică a securității aplicațiilor (SAST), testarea dinamică a securității aplicațiilor (DAST), testarea interactivă a securității aplicațiilor (IAST), analiza componentelor software (Software Composition Analysis) și altele.
Testarea statică a securității aplicațiilor identifică erorile în codul deja scris. Această abordare nu necesită rularea aplicației, astfel încât este denumită analiză statică.
Mă voi concentra asupra analizei statice a codului și voi folosi un simplu instrument open source pentru a demonstra totul în practică.
De ce am ales un instrument open source pentru analiza statică a securității codului
Există mai multe motive: în primul rând, este gratuit, deoarece folosiți un instrument dezvoltat de o comunitate de oameni care doresc să ajute alți dezvoltatori. Dacă aveți o echipă mică sau un startup, aveți o oportunitate excelentă de a economisi folosind software open source pentru a verifica securitatea codului vostru. În al doilea rând, vă scutește de necesitatea de a angaja o echipă separată DevSecOps, ceea ce reduce și mai mult cheltuielile.
Instrumentele open source de calitate sunt întotdeauna create având în vedere cerințe sporite de flexibilitate. Astfel, ele pot fi utilizate practic în orice mediu, acoperind o gamă largă de sarcini. Este mult mai ușor pentru dezvoltatori să integreze aceste instrumente cu sistemul pe care l-au construit deja în timpul proiectelor lor.
Însă pot apărea situații în care aveți nevoie de o funcționalitate care nu se află în instrumentul ales. În acest caz, aveți posibilitatea de a face fork pe codul său și de a dezvolta pe baza lui propriul instrument cu funcționalitățile necesare.
Deoarece în majoritatea cazurilor dezvoltarea software-ului open source este influențată activ de comunitate, decizia de a efectua modificări este luată destul de rapid și pertinent: dezvoltatorii proiectelor open source se bazează pe feedback-ul și sugestiile utilizatorilor, pe mesajele lor referitoare la erori descoperite și alte probleme.
Utilizarea Graudit pentru analiza securității codului
Pentru analiza statică a codului se pot utiliza diferite instrumente open source, nu există un instrument universal pentru toate limbajele de programare. Unii dintre dezvoltatorii acestora urmează recomandările OWASP și încearcă să acopere cât mai multe limbaje.
Aici vom folosi , un utilitar simplu pentru linia de comandă, care ne va permite să identificăm vulnerabilitățile din baza noastră de cod. Acesta suportă diferite limbaje, dar totuși setul lor este limitat. Graudit este dezvoltat pe baza utilitarului de sistem grep, care a fost lansat sub licența GNU.
Există instrumente similare pentru analiza statică a codului — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder și așa mai departe. Însă Graudit este foarte flexibil și are cerințe tehnice minime. Totuși, pot apărea sarcini pe care Graudit nu le poate rezolva. Atunci, puteți căuta alte opțiuni în .
Putem integra acest instrument într-un proiect specific, sau îl putem face disponibil pentru un utilizator ales, sau —îl putem folosi simultan în toate proiectele noastre. Aici se manifestă și flexibilitatea Graudit. Așadar, să clonăm mai întâi repo-ul:
$ git clone https://github.com/wireghoul/grauditAcum să creăm un link simbolic pentru Graudit, astfel încât să îl folosim în format de comandă
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditSă adăugăm un alias în .bashrc (sau în alt fișier de configurare pe care îl folosiți):
#------ .bashrc ------
alias graudit="~/bin/graudit"Reîncărcați:
$ source ~/.bashrc # SAU
$ exec $SHELL
Să verificăm dacă instalarea a fost efectuată cu succes:
$ graudit -hDacă vedeți ceva asemănător, înseamnă că totul este în regulă.

Voi testa unul dintre proiectele mele existente. Înainte de a rula instrumentul, trebuie să îi transmit o bază de date corespunzătoare limbajului în care este scris proiectul meu. Bazele de date se află în folderul ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbDeci, am testat două fișiere js din proiectul meu, iar Graudit a afișat în consolă informații despre vulnerabilitățile din codul meu:


Puteți încerca să testați proiectele voastre în același mod. Lista bazelor de date pentru diferite limbaje de programare poate fi consultată .
Avantajele și dezavantajele Graudit
Graudit suportă o multitudine de limbaje de programare. Prin urmare, se potrivește unui număr mare de utilizatori. Acesta poate concura cu succes cu orice alternativă gratuită sau plătită. Și este foarte important că proiectul continuă să fie îmbunătățit, iar comunitatea nu doar ajută dezvoltatorii, ci și alți utilizatori care încearcă să înțeleagă instrumentul.
Este un instrument convenabil, dar deocamdată nu poate indica întotdeauna cu exactitate care este problema legată de un segment de cod suspect. Dezvoltatorii continuă să îmbunătățească Graudit.
Dar, în orice caz, este util să acordați atenție problemelor potențiale de securitate în cod, folosind astfel de instrumente.
Început...
În acest articol am examinat doar una dintre numeroasele metode de găsire a vulnerabilităților - testarea statică a securității aplicațiilor. Analiza statică a codului este ușor de realizat, dar acesta este doar începutul. Pentru a învăța mai multe despre securitatea bazei de cod, trebuie integrate în ciclul de viață al dezvoltării software-ului și alte tipuri de teste.
În numele publicității
și alegerea corectă a planului tarifar vă vor permite să vă concentrați mai puțin asupra problemelor neplăcute - totul va funcționa fără întreruperi și cu un uptime foarte ridicat!
Sursa: habr.com
