Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu

Graudit podporuje viacero programovacích jazykov a umožňuje vám integrovať bezpečnostné testovanie kódovej základne priamo do procesu vývoja.

Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu
Zdroj: Unsplash (Markus Spiske)

Testovanie je dôležitou súčasťou životného cyklu vývoja softvéru. Existuje mnoho typov testovania, každý z nich rieši svoj vlastný problém. Dnes chcem hovoriť o hľadaní bezpečnostných problémov v kóde.

Je zrejmé, že v modernej realite vývoja softvéru je dôležité zabezpečiť bezpečnosť procesov. Svojho času bol dokonca zavedený špeciálny pojem DevSecOps. Tento termín sa vzťahuje na sériu postupov zameraných na identifikáciu a odstránenie zraniteľností v aplikácii. Na kontrolu zraniteľností v súlade s normami existujú špecializované open source riešenia OWASP, ktoré popisujú rôzne typy a správanie sa 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 zloženia softvéru atď.

Statické testovanie bezpečnosti aplikácií identifikuje chyby v už napísanom kóde. Tento prístup nevyžaduje spustenie aplikácie, preto sa nazýva statická analýza.

Zameriam sa na statickú analýzu kódu a na ukážku všetkého v praxi použijem jednoduchý open source nástroj.

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

Existuje na to niekoľko dôvodov: po prvé, je to zadarmo, pretože používate nástroj vyvinutý komunitou rovnako zmýšľajúcich ľudí, 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ť peniaze pomocou softvéru s otvoreným zdrojovým kódom na testovanie bezpečnosti vašej kódovej základne. Po druhé, eliminuje to potrebu najať si samostatný tím DevSecOps, čím sa ešte viac znížia vaše náklady.

Dobré open source nástroje sú vždy vytvorené s ohľadom na zvýšené požiadavky na flexibilitu. Preto ich možno použiť takmer v akomkoľvek prostredí a pokrývajú širokú škálu úloh. Pre vývojárov je oveľa jednoduchšie prepojiť takéto nástroje so systémom, ktorý už vybudovali počas práce na svojich projektoch.

Môžu však nastať situácie, keď budete potrebovať funkciu, ktorá nie je dostupná vo vybratom nástroji. V tomto prípade máte možnosť rozvetviť jeho kód a na jeho základe vyvinúť vlastný nástroj s funkcionalitou, ktorú potrebujete.

Keďže vo väčšine prípadov je vývoj softvéru s otvoreným zdrojovým kódom aktívne ovplyvňovaný komunitou, rozhodnutie o vykonaní zmien sa robí pomerne rýchlo a k veci: vývojári projektu s otvoreným zdrojovým kódom sa spoliehajú na spätnú väzbu a návrhy od používateľov, na ich správy o nájdené chyby a iné problémy.

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

Na analýzu statického kódu môžete 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 príkazového riadka, ktorý nám umožní nájsť zraniteľné miesta v našej kódovej základni. Podporuje rôzne jazyky, ale ich sada je stále obmedzená. Graudit je vyvinutý na základe utility grep, ktorá bola kedysi vydaná pod licenciou GNU.

Existujú podobné nástroje na analýzu statického kódu – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder a tak ďalej. Graudit je ale veľmi flexibilný a má minimálne technické požiadavky. Môžete však mať problémy, ktoré Graudit nedokáže vyriešiť. Potom tu môžete hľadať ďalšie možnosti na tomto zozname.

Tento nástroj vieme integrovať do konkrétneho projektu, alebo ho sprístupniť vybranému používateľovi, alebo ho použiť súčasne vo všetkých našich projektoch. Aj tu vstupuje do hry flexibilita Graudit. Takže najprv naklonujme repo:

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

Teraz vytvorte symbolický odkaz pre Graudit, aby ho mohol použiť vo formáte príkazu

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

Pridajme alias k .bashrc (alebo akémukoľvek konfiguračnému súboru, ktorý používate):

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

Reštartovať:

$ source ~/.bashrc # OR
$ exex $SHELL

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

$ graudit -h

Ak vidíte niečo podobné, potom je všetko v poriadku.

Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu

Budem testovať jeden z mojich existujúcich projektov. Pred spustením nástroja je potrebné odovzdať mu 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 súbory js z môjho projektu a Graudit zobrazil konzole informácie o zraniteľnostiach v mojom kóde:

Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu

Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu

Rovnakým spôsobom môžete skúsiť otestovať svoje projekty. Môžete vidieť zoznam databáz pre rôzne programovacie jazyky tu.

Výhody a nevýhody Grauditu

Graudit podporuje mnoho programovacích jazykov. Preto je vhodný pre široké spektrum užívateľov. Môže primerane konkurovať akýmkoľvek bezplatným alebo plateným analógom. A je veľmi dôležité, že na projekte sa stále pracuje a komunita pomáha nielen vývojárom, ale aj ostatným používateľom, ktorí sa snažia nástroj zistiť.

Je to užitočný nástroj, ale zatiaľ nedokáže vždy presne určiť, v čom je problém s podozrivým kúskom kódu. Vývojári pokračujú v zlepšovaní Graudit.

V každom prípade je však užitočné venovať pozornosť potenciálnym bezpečnostným problémom v kóde pri používaní nástrojov, ako je tento.

Začína…

V tomto článku som sa pozrel len na jeden z mnohých spôsobov, ako nájsť zraniteľnosti – statické testovanie bezpečnosti aplikácií. Vykonávanie statickej analýzy kódu je jednoduché, ale je to len začiatok. Ak sa chcete dozvedieť viac o bezpečnosti vašej kódovej základne, musíte do životného cyklu vývoja softvéru integrovať ďalšie typy testovania.

O právach reklamy

Spoľahlivé VPS a správny výber tarifného plánu vám umožní menej rozptyľovať vývoj nepríjemnými problémami - všetko bude fungovať bez porúch a s veľmi vysokou prevádzkou!

Ako použiť jednoduchý nástroj na nájdenie zraniteľností v kóde programu

Zdroj: hab.com

Pridať komentár