Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde

Graudit podporuje množstvo programovacích jazykov a umožňuje integrovať testovanie bezpečnosti kódovej bázy priamo do vývojového procesu.

Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde
Zdroj: Unsplash (Markus Spiske)

Testovanie je dôležitou súčasťou životného cyklu vývoja softvéru. Existuje veľa rôznych typov testovania, z ktorých každý rieši svoju úlohu. Dnes chcem hovoriť o vyhľadávaní bezpečnostných problémov v kóde.

Je zrejmé, že v súčasných podmienkach vývoja softvéru je dôležité zabezpečiť bezpečnosť procesov. V minulosti bol dokonca zavedený špeciálny pojem DevSecOps. Tento pojem zahŕňa sériu postupov zameraných na identifikáciu a odstránenie zraniteľností v aplikácii. Existujú špecializované open source riešenia na kontrolu zraniteľností v súlade so štandardami OWASP, ktoré popisujú rôzne typy a správanie zraniteľností v zdrojovom kóde.

Existujú rôzne prístupy k riešeniu bezpečnostných problémov, ako napríklad statické testovanie bezpečnosti aplikácií (SAST), dynamické testovanie bezpečnosti aplikácií (DAST), interaktívne testovanie bezpečnosti aplikácií (IAST), analýza komponentov softvéru (Software Composition Analysis) a podobne.

Statické testovanie bezpečnosti aplikácií odhaľuje chyby v už napísanom kóde. Tento prístup si nevyžaduje spúšťanie aplikácie, preto sa nazýva statická analýza.

Zameriam sa na statickú analýzu kódu a využijem jednoduchý open source nástroj, aby som všetko demonštroval v praxi.

Prečo som si vybral open source nástroj na statickú analýzu bezpečnosti kódu

Na to je niekoľko dôvodov: po prvé, je to zadarmo, pretože používate nástroj vyvinutý komunitou rovnako zmýšľajúcich jednotlivcov, ktorí chcú pomôcť iným vývojárom. Ak máte malý tím alebo startup, máte skvelú príležitosť ušetriť používaním softvéru s otvoreným zdrojovým kódom na kontrolu bezpečnosti svojej kódovej bázy. Po druhé, zbaví vás to potreby zamestnávať samostatný tím DevSecOps, čo ešte viac znižuje vaše náklady.

Dobrý open source nástroje vždy vznikajú s ohľadom na zvýšené požiadavky na flexibilitu. Preto ich možno použiť prakticky v akomkoľvek prostredí, pokrývajúc široké spektrum úloh. Vývojárom je oveľa jednoduchšie zladiť takéto nástroje so systémom, ktorý už vytvorili, pri práci na svojich projektoch.

Môžu však nastať situácie, keď budete potrebovať funkciu, ktorá vo vašom vybranom nástroji nie je. V takom prípade máte možnosť forkovať jeho kód a vyvinúť na jeho základe vlastný nástroj s požadovanou funkčnosťou.

Keďže vo väčšine prípadov na vývoj softvéru s otvoreným zdrojovým kódom aktívne vplýva komunita, rozhodnutia o zmenách sú prijímané pomerne rýchlo a účelne: vývojári open source projektu sa opierajú o názory a návrhy používateľov, ich správy o nájdených chybách a iných problémoch.

Použitie Graudit na analýzu bezpečnosti kódu

Na statickú analýzu kódu je možné použiť rôzne open source nástroje, neexistuje univerzálny nástroj pre všetky programovacie jazyky. Vývojári niektorých z nich sa riadia odporúčaniami OWASP a snažia sa pokryť čo najviac jazykov.

Tu budeme používať Graudit, jednoduchý nástroj na príkazovom riadku, ktorý nám umožní nájsť zraniteľnosti v našej kódovej základni. Podporuje rôzne jazyky, avšak ich súbor je obmedzený. Graudit je založený na pomocnom nástroji grep, ktorý bol kedysi vydaný pod licenciou GNU.

Existujú podobné nástroje na statickú analýzu kódu — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder a tak ďalej. Ale Graudit je veľmi flexibilný a má minimálne technické požiadavky. Napriek tomu môžu existovať úlohy, ktoré Graudit nedokáže riešiť. Vtedy môžete hľadať iné možnosti v tohto zoznamu.

Môžeme integrovať tento nástroj do konkrétneho projektu, sprístupniť ho vybranému používateľovi, alebo ho použiť súčasne vo všetkých našich projektoch. Aj tu sa prejavuje flexibilita Graudit. Takže, poďme sa najprv sklonovať repozitár:

$ git clone https://github.com/wireghoul/graudit

Teraz si vytvoríme symbolický odkaz pre Graudit, aby sme ho mohli použiť v príkazovom formáte.

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Pridáme alias do .bashrc (alebo do iného konfiguračného súboru, ktorý používate):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Reštartujeme:

$ source ~/.bashrc # ALEBO
$ exec $SHELL

Skontrolujeme, či bola inštalácia úspešná:

$ graudit -h

Ak uvidíte niečo podobné, tak je všetko v poriadku.

Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde

Budeme testovať jeden z mojich existujúcich projektov. Pred spustením nástroja mu treba odovzdať databázu zodpovedajúcu jazyku, v ktorom je môj projekt napísaný. Databázy sa nachádzajú v priečinku ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Takže som otestoval dva js súbory z môjho projektu a Graudit vypísal do konzoly informácie o zraniteľnostiach v mojom kóde:

Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde

Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde

Môžete skúsiť podobne otestovať vaše projekty. Zoznam databáz pre rôzne programovacie jazyky si môžete pozrieť. tu.

Výhody a nevýhody Graudit

Graudit podporuje množstvo programovacích jazykov. Preto je vhodný pre široké spektrum používateľov. Môže skončiť v primeranej konkurencji s akýmikoľvek bezplatnými alebo platenými alternatívami. A veľmi dôležité je, že projekt naďalej prechádza vylepšeniami a komunita nielen pomáha vývojárom, ale aj ostatným používateľom, ktorí sa snažia porozumieť nástroju.

Je to užitočný nástroj, ale zatiaľ nie vždy dokáže presne určiť, v čom presne spočíva problém spojený s podozrivým úsekom kódu. Vývojári naďalej vylepšujú Graudit.

Ale v každom prípade je užitočné venovať pozornosť potenciálnym problémom zabezpečenia v kóde, pomocou takýchto nástrojov.

Začiatok...

V tomto článku som sa pozrel iba na jeden z mnohých spôsobov, ako hľadať zraniteľnosti – statické testovanie bezpečnosti aplikácií. Vykonať statickú analýzu kódu je ľahké, ale je to len začiatok. Aby ste sa dozvedeli viac o bezpečnosti vášho kódu, musíte integrovať do životného cyklu vývoja softvéru aj iné druhy testovania.

Na základe reklamy

Spoľahlivý VPS a správny výber tarifu vám umožní menej sa rozptyľovať od vývoja nepríjemnými problémy – všetko bude fungovať bez porúch a s veľmi vysokou dostupnosťou!

Ako používať jednoduchý nástroj na identifikáciu zraniteľností v programovom kóde

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster