Statické testování zabezpečení aplikací (SAST) je klíčovou součástí životního cyklu vývoje softwaru. Nástroje SAST analyzují zdrojový kód, aby identifikovaly bezpečnostní zranitelnosti a další problémy ještě před kompilací nebo spuštěním kódu. To pomáhá vývojářům najít a opravit problémy v rané fázi vývoje, snižuje náklady a zlepšuje celkové zabezpečení.
Existuje několik populárních nástrojů SAST, každý s vlastními silnými stránkami a funkcemi. V tomto článku porovnáme nejrozšířenější nástroje SAST.
Checkmarx
Checkmarx SAST je řešení pro analýzu zdrojového kódu, které identifikuje bezpečnostní zranitelnosti, problémy s dodržováním předpisů a další nedostatky v kódu. Vytváří logický graf prvků a toků kódu a poté tento graf dotazuje, aby našel problémy. Checkmarx podporuje mnoho programovacích jazyků a může spouštět skeny v kterémkoli bodě životního cyklu vývoje.
Mezi klíčové funkce Checkmarx patří:
- Rozsáhlý seznam předkonfigurovaných dotazů pro známé zranitelnosti
- Možnost konfigurovat vlastní dotazy pro zabezpečení, QA a obchodní logiku
- Interaktivní rozhraní pro sledování chování za běhu a nápravu
- Integrace s nástroji pro automatizaci sestavení, systémy SCM, nástroji pro sledování problémů a platformami CI/CD
Fortify
OpenText Fortify Static Code Analyzer je dalším předním nástrojem SAST. Určuje hlavní příčiny bezpečnostních zranitelností ve zdrojovém kódu, upřednostňuje nejzávažnější problémy a poskytuje pokyny pro nápravu. Fortify podporuje více než 1600 kategorií zranitelností ve více než 33 programovacích jazycích.
Mezi klíčové možnosti Fortify patří:
- Zahrnutí zabezpečení do vývojových nástrojů prostřednictvím rozsáhlého integračního ekosystému
- Ladění hloubky skenování a minimalizace falešně pozitivních výsledků pomocí Audit Assistant
- Dynamické škálování skenování pro splnění požadavků kanálů CI/CD
- Identifikace zranitelností ve zdrojovém, binárním nebo byte kódu v rané fázi vývoje
- Integrace s nástroji CI/CD, jako jsou Jenkins, Jira, Azure DevOps a další
Frogbot
Frogbot je Git bot, který skenuje žádosti o přijetí změn pro bezpečnostní zranitelnosti pomocí JFrog Xray. Když je vytvořena nebo označena nová žádost o přijetí změn, Frogbot spustí sken a hlásí všechny nalezené problémy přímo v uživatelském rozhraní Gitu. To umožňuje vývojářům řešit zranitelnosti dříve, než jsou sloučeny do základu kódu.
Mezi klíčové funkce Frogbot patří:
- Skenování žádostí o přijetí změn pro známé zranitelnosti
- Hlášení nálezů v rozhraní Gitu jako komentáře
- Možnost opakovaně spouštět skeny přidáním štítku ke stávající žádosti o přijetí změn
- Integrace s JFrog Xray pro skenovací engine
Veracode
Veracode nabízí cloudové, automatizované řešení SAST. Skenuje kompilovaný kód (binární soubory) spíše než jen zdrojový kód, čímž poskytuje hlubší a komplexnější výsledky. Veracode identifikuje potenciální problémy, jako je škodlivý kód nebo nedostatečná funkčnost, a upřednostňuje nálezy na základě obchodního rizika.
Mezi pozoruhodné aspekty Veracode patří:
- Skenování binárních souborů pro zahrnutí knihoven třetích stran, které mohou být vynechány ze skenů pouze ze zdrojového kódu
- Upřednostňování výsledků na základě obchodních cílů a tolerance rizika
- Poskytování vysoce přesných a použitelných nálezů s malým počtem falešně pozitivních výsledků
- Umožnění rychlého skenování a výsledků bez potřeby specializovaných bezpečnostních pracovníků
Semgrep
Semgrep je nástroj SAST s otevřeným zdrojovým kódem, který běží kdekoli, od příkazového řádku po kanály CI/CD. Je navržen tak, aby byl snadno přizpůsobitelný a použitelný, s rozšiřitelnou architekturou. Pravidla Semgrep jsou viditelná pro uživatele a podobná syntaxi zdrojového kódu, takže jsou transparentní a srozumitelná.
Mezi klíčové funkce Semgrep patří:
- Spouštění skenů během několika sekund, s mediánem doby skenování CI 10 sekund
- Flexibilita pro psaní vlastních pravidel pro řešení složitých problémů
- Poskytování knihovny spravovaných pravidel pro minimalizaci psaní vlastních pravidel
- Podpora více než 30 rámců a technologií
GitHub CodeQL
CodeQL je engine pro analýzu s otevřeným zdrojovým kódem, který používá GitHub pro bezpečnostní kontroly a analýzu variant. Podporuje mnoho programovacích jazyků a poskytuje rozhraní příkazového řádku a rozšíření Visual Studio Code pro spouštění skenů na základech kódu s otevřeným zdrojovým kódem.
Mezi pozoruhodné aspekty CodeQL patří:
- Automatizace bezpečnostních kontrol a analýzy variant
- Podpora široké škály jazyků, knihoven a rámců
- Poskytování přehledu technických termínů a konceptů používaných v CodeQL
Snyk Code
Snyk Code je vývojářsky přívětivý nástroj SAST, který skenuje zdrojový kód během několika minut, bez nutnosti sestavení. Poskytuje výsledky v reálném čase přímo v kódu, spolu s radami pro nápravu, které vývojářům pomáhají rychle opravit problémy. Snyk Code je kompatibilní s populárními jazyky, IDE a nástroji CI/CD.
Mezi klíčové funkce Snyk Code patří:
- Skenování kódu při jeho psaní, s automatickým skenováním z IDE
- Poskytování použitelných výsledků s vývojářsky přívětivými radami pro nápravu
- Využití strojového učení k budování robustní znalostní báze
- Upřednostňování problémů na základě stavu nasazení a vystavení
Tencent Xcheck
Tencent Xcheck je nástroj pro statické testování zabezpečení aplikací (SAST) vyvinutý společností Tencent Cloud. Je navržen tak, aby pomohl vývojářům identifikovat bezpečnostní zranitelnosti a další problémy v jejich zdrojovém kódu.
- Xcheck dokáže přesně porozumět syntaktickým charakteristikám různých programovacích jazyků, což pomáhá řešit problém falešně pozitivních výsledků způsobených nepochopením kódu.
- Dokáže identifikovat uživatelsky definovaná opatření pro zabezpečení, což dále snižuje falešně pozitivní výsledky.
- Xcheck podporuje skenování kompletních projektů se správnou syntaxí pro podporované jazyky.
- Dokáže rychle skenovat kód webových backendových aplikací, ale u hluboce vnořeného rekurzivního kódu to může trvat déle.
Srovnání s ostatními nástroji SAST
- Příspěvek na Redditu naznačuje, že Xcheck dokáže skenovat nezpracovaný zdrojový kód přímo bez nutnosti kompilace a jeho rychlost skenování je 100krát vyšší než u Checkmarx.
Nasazení a zabezpečení
- Xcheck je nasazen lokálně, takže testovaný zdrojový kód zůstává v podnikové síti, čímž se zabrání riziku úniku zdrojového kódu.
- Celý životní cyklus produktu, včetně zdrojového kódu, neopouští podnikovou síť.
Tencent Xcheck je rychlý a přesný nástroj SAST, který pomáhá vývojářům najít bezpečnostní problémy v jejich kódu. Jeho model lokálního nasazení zajišťuje zabezpečení zdrojového kódu. I když se ve srovnání s jinými nástroji SAST jeví jako příznivý z hlediska rychlosti a přesnosti, nemusí podporovat tolik jazyků nebo mít tak rozsáhlý ekosystém jako některé nástroje SAST zaměřené na podniky.
Semgrep
- Nástroj SAST s otevřeným zdrojovým kódem, který běží kdekoli, od příkazového řádku po kanály CI/CD
- Navržen tak, aby byl snadno přizpůsobitelný a použitelný, s rozšiřitelnou architekturou
- Podporuje více než 30 rámců a technologií
- Poskytuje knihovnu spravovaných pravidel pro minimalizaci psaní vlastních pravidel
- Spouští skeny během několika sekund, s mediánem doby skenování CI 10 sekund
Bandit
- Nástroj SAST s otevřeným zdrojovým kódem speciálně navržený pro skenování kódu Python
- Komplexní skener zranitelností zdroje pro Python
Brakeman
- Skener zranitelností s otevřeným zdrojovým kódem navržený speciálně pro aplikace Ruby on Rails
OWASP Dependency-Check
- Nástroj s otevřeným zdrojovým kódem, který identifikuje použití známých zranitelných komponent
- Podporuje projekty Java a .NET
- Integruje se s nástroji pro sestavení, jako jsou Gradle, Jenkins a Maven
PMD
- Nástroj SAST s otevřeným zdrojovým kódem, který podporuje Java, JavaScript, Salesforce a další jazyky
- Integruje se s nástroji pro sestavení, jako jsou Ant, Maven, Gradle a Jenkins
PHPStan
- Nástroj SAST s otevřeným zdrojovým kódem pro PHP
- Podporuje integrace s Bitbucket, GitHub a GitLab
Cppcheck
- Nástroj SAST s otevřeným zdrojovým kódem pro kód C a C++
- Integruje se s Jenkins a Visual Studio
Toto je jen několik příkladů z mnoha nástrojů SAST s otevřeným zdrojovým kódem, které jsou k dispozici. Při výběru nástroje SAST je důležité zvážit faktory, jako jsou programovací jazyky, které používáte, úroveň přizpůsobení a transparentnosti, kterou potřebujete, rychlost a přesnost výsledků a snadnost integrace s vašimi stávajícími nástroji a pracovními postupy.
Závěrem
Statické testování zabezpečení aplikací je kritickou součástí bezpečného vývoje softwaru. Nástroje SAST porovnané v tomto článku mají své vlastní silné stránky a funkce, ale všechny se snaží pomoci vývojářům najít a opravit bezpečnostní zranitelnosti v rané fázi vývoje.
Při výběru nástroje SAST zvažte faktory, jako jsou programovací jazyky, které používáte, úroveň přizpůsobení a transparentnosti, kterou potřebujete, rychlost a přesnost výsledků a snadnost integrace s vašimi stávajícími nástroji a pracovními postupy. Mnoho z těchto nástrojů nabízí bezplatné zkušební verze nebo verze s otevřeným zdrojovým kódem, takže si je můžete vyzkoušet a zjistit, který vám nejlépe vyhovuje.
Konečným cílem SAST je zlepšit celkové zabezpečení vašich aplikací nalezením a opravou problémů dříve, než je mohou útočníci zneužít. Začleněním SAST do procesu vývoje můžete vytvářet bezpečnější software a snížit riziko nákladných narušení v budoucnu.