Graudit podpira več programskih jezikov in vam omogoča integracijo varnostnega testiranja kodne baze neposredno v razvojni proces.
Vir:
Testiranje je pomemben del življenjskega cikla razvoja programske opreme. Obstaja veliko vrst testiranja, vsaka rešuje svoj problem. Danes želim govoriti o iskanju varnostnih težav v kodi.
Očitno je v sodobni realnosti razvoja programske opreme pomembno zagotoviti varnost procesov. Nekoč je bil celo uveden poseben izraz DevSecOps. Ta izraz se nanaša na vrsto postopkov, namenjenih prepoznavanju in odpravljanju ranljivosti v aplikaciji. Obstajajo specializirane odprtokodne rešitve za preverjanje ranljivosti v skladu s standardi
Obstajajo različni pristopi k reševanju varnostnih težav, kot so statično testiranje varnosti aplikacij (SAST), dinamično testiranje varnosti aplikacij (DAST), interaktivno testiranje varnosti aplikacij (IAST), analiza sestave programske opreme itd.
Statično testiranje varnosti aplikacije identificira napake v že napisani kodi. Ta pristop ne zahteva zagona aplikacije, zato se imenuje statična analiza.
Osredotočil se bom na statično analizo kode in uporabil preprosto odprtokodno orodje za prikaz vsega v praksi.
Zakaj sem izbral odprtokodno orodje za analizo varnosti statične kode
Za to obstaja več razlogov: prvič, brezplačno je, ker uporabljate orodje, ki ga je razvila skupnost podobno mislečih ljudi, ki želijo pomagati drugim razvijalcem. Če imate majhno ekipo ali startup, imate odlično priložnost, da prihranite denar z uporabo odprtokodne programske opreme za testiranje varnosti vaše baze kod. Drugič, odpravlja potrebo po najemu ločene ekipe DevSecOps, kar dodatno zmanjša vaše stroške.
Dobra odprtokodna orodja so vedno ustvarjena ob upoštevanju povečanih zahtev po prilagodljivosti. Zato jih je mogoče uporabiti v skoraj vseh okoljih in pokrivajo širok spekter nalog. Razvijalcem je veliko lažje povezati taka orodja s sistemom, ki so ga že zgradili med delom na svojih projektih.
Toda včasih boste morda potrebovali funkcijo, ki ni na voljo v orodju, ki ga izberete. V tem primeru imate možnost razcepiti njegovo kodo in na njeni podlagi razviti lastno orodje s funkcionalnostjo, ki jo potrebujete.
Ker v večini primerov na razvoj odprtokodne programske opreme dejavno vpliva skupnost, se odločitev za spremembe sprejme precej hitro in natančno: razvijalci odprtokodnega projekta se zanašajo na povratne informacije in predloge uporabnikov, na njihova poročila o najdene napake in druge težave.
Uporaba Graudita za analizo varnosti kode
Za analizo statične kode lahko uporabite različna odprtokodna orodja, univerzalnega orodja za vse programske jezike ni. Razvijalci nekaterih od njih sledijo priporočilom OWASP in poskušajo pokriti čim več jezikov.
Tukaj bomo uporabili
Obstajajo podobna orodja za analizo statične kode - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder itd. Toda Graudit je zelo prilagodljiv in ima minimalne tehnične zahteve. Lahko pa imate težave, ki jih Graudit ne more rešiti. Potem lahko tukaj poiščete druge možnosti
To orodje lahko integriramo v določen projekt ali ga damo na voljo izbranemu uporabniku ali pa ga uporabljamo hkrati v vseh naših projektih. Tudi tu pride do izraza Grauditova prilagodljivost. Torej, najprej kloniramo repo:
$ git clone https://github.com/wireghoul/graudit
Zdaj pa ustvarimo simbolično povezavo za Graudit, ki jo bo uporabil v obliki ukaza
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Dodajmo vzdevek .bashrc (ali kateri koli konfiguracijski datoteki, ki jo uporabljate):
#------ .bashrc ------
alias graudit="~/bin/graudit"
Ponovni zagon:
$ source ~/.bashrc # OR
$ exex $SHELL
Preverimo, ali je bila namestitev uspešna:
$ graudit -h
Če vidite nekaj podobnega, potem je vse v redu.
Preizkusil bom enega od svojih obstoječih projektov. Pred zagonom orodja je treba posredovati bazo podatkov, ki ustreza jeziku, v katerem je napisan moj projekt. Baze podatkov se nahajajo v mapi ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.db
Tako sem preizkusil dve datoteki js iz svojega projekta in Graudit je na konzoli prikazal informacije o ranljivostih v moji kodi:
Na enak način lahko poskusite testirati svoje projekte. Ogledate si lahko seznam baz podatkov za različne programske jezike
Prednosti in slabosti Graudita
Graudit podpira številne programske jezike. Zato je primeren za širok krog uporabnikov. Ustrezno lahko konkurira vsem brezplačnim ali plačljivim analogom. In zelo pomembno je, da se projekt še vedno izboljšuje in da skupnost ne pomaga samo razvijalcem, ampak tudi drugim uporabnikom, ki poskušajo razumeti orodje.
To je priročno orodje, vendar zaenkrat ne more vedno natančno ugotoviti, v čem je težava s sumljivim delom kode. Razvijalci še naprej izboljšujejo Graudit.
Vsekakor pa je pri uporabi takšnih orodij koristno biti pozoren na morebitne varnostne težave v kodi.
Začetek…
V tem članku sem si ogledal samo enega od mnogih načinov iskanja ranljivosti – statično testiranje varnosti aplikacije. Izvajanje statične analize kode je enostavno, a je šele začetek. Če želite izvedeti več o varnosti vaše kodne baze, morate v življenjski cikel razvoja programske opreme vključiti druge vrste testiranja.
O pravicah oglaševanja
Vir: www.habr.com