Graudit podržava mnoge programske jezike i omogućuje integraciju testiranja sigurnosti kodne baze direktno u proces razvoja.

Izvor: (Markus Spiske)
Testiranje je važan dio životnog ciklusa razvoja softvera. Postoji mnogo vrsta testiranja, a svaka od njih rješava svoju zadaću. Danas želim razgovarati o pronalaženju problema sigurnosti u kodu.
Očigledno je da u modernim uvjetima razvoja softvera treba osigurati sigurnost procesa. Nekada je uveden poseban termin DevSecOps. Pod ovim pojmom podrazumijevaju se niz procedura usmjerenih na otkrivanje i uklanjanje ranjivosti u aplikaciji. Postoje specijalizirana open source rješenja za provjeru ranjivosti prema standardima , koji opisuju različite tipove i ponašanje ranjivosti u izvornoj kodu.
Postoje različiti pristupi rješavanju problema sigurnosti, na primjer, statičko testiranje sigurnosti aplikacija (SAST), dinamičko testiranje sigurnosti aplikacija (DAST), interaktivno testiranje sigurnosti aplikacija (IAST), analiza komponenti softvera (Software Composition Analysis) i tako dalje.
Statično testiranje sigurnosti aplikacija otkriva greške u već napisanom kodu. Ovaj pristup ne zahtijeva pokretanje aplikacije, stoga se naziva statička analiza.
Osvrnut ću se na statičku analizu koda i iskoristit ću jednostavan open source alat kako bih sve pokazao u praksi.
Zašto sam odabrao open source alat za statičku analizu sigurnosti koda
Za to postoje brojni razlozi: prvo, to je besplatno, jer koristite alat razvijen od strane zajednice istomišljenika koji žele pomoći drugim programerima. Ako imate mali tim ili startup, imate sjajnu priliku da uštedite koristeći softver s otvorenim izvorom za provjeru sigurnosti svoje kodne baze. Drugo, to vas oslobađa potrebe da zaposlite poseban DevSecOps tim, što dodatno smanjuje vaše troškove.
Dobri open source alati uvijek se stvaraju uzimajući u obzir visoke zahtjeve za fleksibilnošću. Stoga ih je moguće koristiti praktički u bilo kojem okruženju, pokrivajući širok spektar zadataka. Programerima je daleko lakše povezati takve alate sa sustavom koji su već izgradili dok rade na svojim projektima.
No, mogu se pojaviti situacije kada će vam biti potrebna funkcija koja nedostaje u odabranom alatu. U ovom slučaju imate mogućnost forkati njegov kod i razviti svoj vlastiti alat s funkcionalnošću koja vam je potrebna.
Budući da većinu vremena razvoj softvera s otvorenim izvorom aktivno utječe zajednica, odluke o promjenama donose se relativno brzo i suvislo: programeri open source projekta oslanjaju se na povratne informacije i prijedloge korisnika, na njihove izvještaje o pronađenim greškama i drugim problemima.
Korištenje Graudit-a za analizu sigurnosti koda
Za statičku analizu koda mogu se koristiti različiti alati otvorenog koda; ne postoji univerzalni alat za sve programske jezike. Programeri nekih od njih slijede preporuke OWASP-a i nastoje obuhvatiti što više jezika.
Ovdje ćemo koristiti , jednostavnu alatku za naredbeni redak koja će nam omogućiti da pronađemo ranjivosti u našoj bazi koda. Podržava različite jezike, no ipak je njihov raspon ograničen. Graudit je razvijen na temelju pomoćnog alata grep, koji je prvotno izašao pod GNU licencom.
Postoje slični alati za statičku analizu koda — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder i tako dalje. No, Graudit je vrlo fleksibilan i ima minimalne tehničke zahtjeve. Ipak, mogli biste se suočiti s zadacima koje Graudit ne može riješiti. Tada možete potražiti druge opcije ovdje .
Možemo integrirati ovaj alat u određeni projekt, ili ga učiniti dostupnim za odabranog korisnika, ili pak — koristiti ga istovremeno u svim našim projektima. U tome se također očituje fleksibilnost Graudit-a. Dakle, prvo klonirajmo repozitorij:
$ git clone https://github.com/wireghoul/grauditSada ćemo stvoriti simboličku poveznicu za Graudit kako bismo ga mogli koristiti u naredbenom formatu
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditDodajmo alias u .bashrc (ili u drugu konfiguracijsku datoteku koju koristite):
#------ .bashrc ------
alias graudit="~/bin/graudit"Ponovo se učitavamo:
$ source ~/.bashrc # ILI
$ exec $SHELL
Provjerimo je li instalacija prošla uspješno:
$ graudit -hAko vidite nešto slično, onda je sve u redu.

Testirat ću jedan od svojih postojećih projekata. Prije pokretanja alata potrebno je proslijediti mu bazu podataka koja odgovara jeziku na kojem je moj projekt napisan. Baze podataka nalaze se u mapi ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbDakle, testirao sam dva js-datoteke iz mog projekta, a Graudit je ispisao informacije o ranjivostima u mom kodu u konzolu:


Možete pokušati na sličan način testirati svoje projekte. Popis baza podataka za različite programske jezike može se vidjeti .
Prednosti i nedostaci Graudit-a
Graudit podržava brojne programske jezike. Stoga je prikladan za širok spektar korisnika. Može se dobro natjecati s bilo kojim besplatnim ili plaćenim alternativama. I vrlo je važno da se projekt i dalje unapređuje, a zajednica ne samo da pomaže programerima, već i drugim korisnicima koji pokušavaju razumjeti alat.
To je korisni alat, no još uvijek ne može uvijek točno odrediti u čemu leži problem vezan uz sumnjivi dio koda. Programeri nastavljaju raditi na poboljšanjima Graudit-a.
Ali u svakom slučaju korisno je obratiti pažnju na potencijalne sigurnosne probleme u kodu koristeći slične alate.
Početak…
U ovom članku sam razmatrao samo jedan od mnogih načina za pronalaženje ranjivosti — statičko testiranje sigurnosti aplikacija. Učiniti statičku analizu koda lako je, ali to je samo početak. Da biste saznali više o sigurnosti vaše kodne baze, potrebno je integrirati druge vrste testiranja u razvojni ciklus softvera.
U okviru reklame
i pravi izbor tarifnog plana omogućit će vam da se manje ometate od problema — sve će raditi bez greške i s vrlo visokim uptime-om!
Izvor: habr.com
