Kako s preprostim pripomočkom najti ranljivosti v programski kodi

Graudit podpira več programskih jezikov in vam omogoča integracijo varnostnega testiranja kodne baze neposredno v razvojni proces.

Kako s preprostim pripomočkom najti ranljivosti v programski kodi
Vir: Unsplash (Markus Spiske)

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 OWASP, ki opisujejo različne vrste in obnašanje ranljivosti v izvorni kodi.

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 Graudit, preprost pripomoček ukazne vrstice, ki nam bo omogočil iskanje ranljivosti v naši kodni bazi. Podpira različne jezike, vendar je njihov nabor še vedno omejen. Graudit je razvit na osnovi pripomočka grep, ki je bil nekoč izdan pod licenco GNU.

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 na tem seznamu.

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.

Kako s preprostim pripomočkom najti ranljivosti v programski kodi

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:

Kako s preprostim pripomočkom najti ranljivosti v programski kodi

Kako s preprostim pripomočkom najti ranljivosti v programski kodi

Na enak način lahko poskusite testirati svoje projekte. Ogledate si lahko seznam baz podatkov za različne programske jezike tukaj.

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

Zanesljiv VPS in pravilna izbira tarifnega načrta vam bo omogočila, da vas neprijetne težave manj odvrnejo od razvoja - vse bo delovalo brez napak in z zelo visokim časom delovanja!

Kako s preprostim pripomočkom najti ranljivosti v programski kodi

Vir: www.habr.com

Dodaj komentar