Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu

Graudit podporuje mnoho programovacích jazyků a umožňuje integrovat testování bezpečnosti kódu přímo do procesu vývoje.

Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu
Zdroj: Unsplash (Markus Spiske)

Testování je důležitou součástí životního cyklu vývoje softwaru. Existuje mnoho typů testování, z nichž každý řeší svůj vlastní problém. Dnes chci hovořit o hledání bezpečnostních problémů v kódu.

Je zřejmé, že v moderních podmínkách vývoje softwaru je důležité zajistit bezpečnost procesů. Byl dokonce zaveden speciální termín DevSecOps. Tento termín označuje řadu procedur zaměřených na odhalování a odstranění zranitelností v aplikaci. Existují specializovaná open source řešení pro kontrolu zranitelností podle standardů OWASP, které popisují různé typy a chování zranitelností v zdrojovém kódu.

Existují různé přístupy k řešení problémů bezpečnosti, například statické testování bezpečnosti aplikací (SAST), dynamické testování bezpečnosti aplikací (DAST), interaktivní testování bezpečnosti aplikací (IAST), analýza komponentů softwaru (Software Composition Analysis) a další.

Statické testování bezpečnosti aplikací odhaluje chyby v již napsaném kódu. Tento přístup nevyžaduje spuštění aplikace, proto se nazývá statickou analýzou.

Zaměřím se na statickou analýzu kódu a využiji jednoduchý open source nástroj, abych vše demonstroval v praxi.

Proč jsem si vybral open source nástroj pro statickou analýzu bezpečnosti kódu

Je k tomu několik důvodů: za prvé, je to zdarma, protože používáte nástroj vyvinutý komunitou podobně smýšlejících lidí, kteří chtějí pomoci ostatním vývojářům. Pokud máte malý tým nebo startup, máte skvělou příležitost ušetřit použitím softwaru s otevřeným zdrojovým kódem k ověření bezpečnosti svého kódu. Za druhé, zbavíte se nutnosti najímat samostatný tým DevSecOps, což dále snižuje vaše náklady.

Dobrý open source nástroje vždy vytvářejí s ohledem na zvýšené požadavky na flexibilitu. Proto je lze použít prakticky v jakémkoli prostředí a pokrýt široké spektrum úloh. Vývojářům je mnohem snazší sladit takové nástroje se systémem, který už vytvořili při práci na svých projektech.

Může však nastat situace, kdy budete potřebovat funkci, kterou vybraný nástroj nemá. V takovém případě máte možnost vytvořit fork jeho kódu a vyvinout na jeho základě svůj vlastní nástroj s požadovanou funkcionalitou.

Protože ve většině případů na vývoj open source softwaru aktivně působí komunita, rozhodnutí o provedení změn jsou přijímána poměrně rychle a věcně: vývojáři open source projektu se opírají o zpětnou vazbu a návrhy uživatelů, na jejich zprávy o nalezených chybách a dalších problémech.

Použití Graudit pro analýzu bezpečnosti kódu

Pro statickou analýzu kódu lze použít různé open source nástroje, neexistuje univerzální nástroj pro všechny programovací jazyky. Vývojáři některých z nich se řídí doporučeními OWASP a snaží se pokrýt co nejvíce jazyků.

Zde budeme používat Graudit, jednoduchý příkazový nástroj, který nám umožní najít zranitelnosti v naší kódové základně. Podporuje různé jazyky, ale jejich soubor je přesto omezený. Graudit byl vyvinut na základě pomocného nástroje grep, který byl kdysi vydán pod licencí GNU.

Existují podobné nástroje pro statickou analýzu kódu — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder a tak dále. Ale Graudit je velmi flexibilní a má minimální technické požadavky. Nicméně se mohou objevit úkoly, které Graudit není schopen vyřešit. Pak můžete hledat jiné možnosti zde v tomto seznamu.

Můžeme tento nástroj integrovat do konkrétního projektu, nebo jej udělat dostupným pro vybraného uživatele, nebo jej používat současně ve všech našich projektech. I tak se projevuje flexibilita Graudit. Takže nejprve naklonujeme repozitář:

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

Nyní vytvořme pro Graudit symbolický odkaz, abychom jej mohli používat v příkazovém formátu.

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

Přidáme alias do .bashrc (nebo do jiného konfiguračního souboru, který používáte):

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

Restartujeme:

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

Ověříme, zda byla instalace úspěšná:

$ graudit -h

Pokud uvidíte něco podobného, je vše v pořádku.

Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu

Testuji jeden z již existujících projektů. Před spuštěním nástroje je třeba mu předat databázi odpovídající jazyku, ve kterém je napsán můj projekt. Databáze se nacházejí v složce ~/gradit/signatures:

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

Takže jsem otestoval dva js soubory ze svého projektu a Graudit výstupoval do konzole informace o zranitelnostech v mém kódu:

Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu

Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu

Můžete podobným způsobem otestovat své projekty. Seznam databází pro různé programovací jazyky si můžete prohlédnout. zde.

Výhody a nevýhody Graudit

Graudit podporuje mnoho programovacích jazyků. Proto je vhodný pro široký okruh uživatelů. Může důstojně konkurovat jakýmikoli bezplatnými nebo placenými alternativami. A je velmi důležité, že na projektu se stále pracuje a komunitní podpora pomáhá nejen vývojářům, ale i dalším uživatelům, kteří se snaží porozumět tomuto nástroji.

Je to pohodlný nástroj, ale zatím nemusí vždy přesně ukázat, v čem přesně spočívá problém spojený s podezřelým úsekem kódu. Vývojáři nadále vylepšují Graudit.

Ale v každém případě je užitečné věnovat pozornost potenciálním bezpečnostním problémům v kódu pomocí podobných nástrojů.

Začátek...

V tomto článku jsem se podíval pouze na jeden z mnoha způsobů, jak vyhledávat zranitelnosti — statické testování bezpečnosti aplikací. Provést statickou analýzu kódu je snadné, ale to je pouze začátek. Abyste se dověděli více o bezpečnosti vaší kódové základny, je třeba do životního cyklu vývoje softwaru integrovat i další typy testování.

Na základě reklamy

Spolehlivý VPS a správný výběr tarifu umožní méně se distrahovat od vývoje nepříjemnými problémy — vše bude fungovat bez výpadků a s velmi vysokou dostupností!

Jak používat jednoduchou utilitu pro vyhledávání zranitelností v kódu

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster