Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu

Graudit podporuje více programovacích jazyků a umožňuje vám integrovat testování zabezpečení kódové základny přímo do procesu vývoje.

Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu
Zdroj: Unsplash (Markus Spiske)

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

Je zřejmé, že v moderní realitě vývoje softwaru je důležité zajistit bezpečnost procesů. Svého času byl dokonce zaveden speciální termín DevSecOps. Tento termín označuje řadu postupů zaměřených na identifikaci a odstranění zranitelností v aplikaci. Pro kontrolu zranitelností v souladu se standardy existují specializovaná open source řešení OWASP, které popisují různé typy a chování zranitelností ve zdrojovém kódu.

Existují různé přístupy k řešení bezpečnostních problémů, jako je statické testování zabezpečení aplikací (SAST), dynamické testování zabezpečení aplikací (DAST), testování zabezpečení interaktivních aplikací (IAST), analýza složení softwaru a tak dále.

Statické testování zabezpečení aplikací identifikuje chyby v již napsaném kódu. Tento přístup nevyžaduje spuštění aplikace, proto se nazývá statická analýza.

Zaměřím se na statickou analýzu kódu a pomocí jednoduchého open source nástroje vše předvedu v praxi.

Proč jsem si vybral open source nástroj pro analýzu zabezpečení statického kódu

Existuje pro to řada důvodů: za prvé je to zdarma, protože používáte nástroj vyvinutý komunitou stejně smýšlejících lidí, kteří chtějí pomáhat dalším vývojářům. Pokud máte malý tým nebo startup, máte skvělou příležitost ušetřit peníze pomocí softwaru s otevřeným zdrojovým kódem k testování bezpečnosti vaší kódové základny. Za druhé, eliminuje to nutnost najímat samostatný tým DevSecOps, což dále snižuje vaše náklady.

Dobré open source nástroje jsou vždy vytvářeny s ohledem na zvýšené požadavky na flexibilitu. Proto je lze použít téměř v jakémkoli prostředí a pokrývají širokou škálu úkolů. Pro vývojáře je mnohem snazší propojit takové nástroje se systémem, který si již vybudovali při práci na svých projektech.

Mohou však nastat situace, kdy budete potřebovat funkci, která není ve zvoleném nástroji dostupná. V tomto případě máte možnost rozdělit jeho kód a vyvinout na něm vlastní nástroj s funkcí, kterou potřebujete.

Vzhledem k tomu, že ve většině případů je vývoj softwaru s otevřeným zdrojovým kódem aktivně ovlivňován komunitou, je rozhodnutí o změnách učiněno poměrně rychle a k věci: vývojáři projektu s otevřeným zdrojovým kódem se spoléhají na zpětnou vazbu a návrhy od uživatelů, na jejich zprávy o nalezené chyby a další problémy.

Použití Graudit pro analýzu zabezpečení kódu

Pro analýzu statického kódu můžete 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ý nástroj příkazového řádku, který nám umožní najít zranitelná místa v naší kódové základně. Podporuje různé jazyky, ale jejich sada je stále omezená. Graudit je vyvinut na základě utility grep, která byla kdysi vydána pod licencí GNU.

Existují podobné nástroje pro analýzu statického kódu – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder a tak dále. Graudit je ale velmi flexibilní a má minimální technické požadavky. Můžete však mít problémy, které Graudit nedokáže vyřešit. Pak zde můžete hledat další možnosti v tomto seznamu.

Tento nástroj můžeme integrovat do konkrétního projektu, nebo jej zpřístupnit vybranému uživateli nebo jej použít současně ve všech našich projektech. Zde také vstupuje do hry flexibilita Graudit. Nejprve tedy naklonujme repo:

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

Nyní vytvoříme symbolický odkaz pro Graudit, aby jej mohl použít ve formátu příkazu

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

Pojďme přidat alias do .bashrc (nebo jakéhokoli konfiguračního souboru, který používáte):

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

Restartovat:

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

Pojďme zkontrolovat, zda byla instalace úspěšná:

$ graudit -h

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

Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu

Budu testovat jeden ze svých stávajících projektů. Před spuštěním nástroje je potřeba mu předat databázi odpovídající jazyku, ve kterém je můj projekt napsán. Databáze jsou umístěny ve složce ~/gradit/signatures:

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

Testoval jsem tedy dva soubory js z mého projektu a Graudit konzoli zobrazil informace o zranitelnostech v mém kódu:

Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu

Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu

Stejným způsobem můžete zkusit otestovat své projekty. Můžete vidět seznam databází pro různé programovací jazyky zde.

Výhody a nevýhody Graudit

Graudit podporuje mnoho programovacích jazyků. Proto je vhodný pro široké spektrum uživatelů. Může adekvátně konkurovat jakýmkoli bezplatným nebo placeným analogům. A je velmi důležité, že se na projektu stále pracuje a komunita pomáhá nejen vývojářům, ale i dalším uživatelům, kteří se snaží nástroj vymyslet.

Je to šikovný nástroj, ale zatím nedokáže vždy přesně určit, v čem je problém s podezřelým kouskem kódu. Vývojáři pokračují ve vylepšování 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, když používáte nástroje, jako je tento.

Začátek…

V tomto článku jsem se podíval pouze na jeden z mnoha způsobů, jak najít zranitelnosti – statické testování zabezpečení aplikací. Provádění statické analýzy kódu je snadné, ale je to jen začátek. Chcete-li se dozvědět více o zabezpečení vaší kódové základny, musíte do životního cyklu vývoje softwaru integrovat další typy testování.

Jako reklama

Spolehlivé VPS a správná volba tarifu vám umožní méně se rozptylovat od vývoje nepříjemnými problémy - vše bude fungovat bez poruch a s velmi vysokou dobou provozu!

Jak pomocí jednoduchého nástroje najít zranitelnosti v kódu programu

Zdroj: www.habr.com

Přidat komentář