Static Application Security Testing (SAST) is een cruciaal onderdeel van de softwareontwikkelingscyclus. SAST-tools analyseren broncode om beveiligingsproblemen en andere issues te identificeren voordat de code wordt gecompileerd of uitgevoerd. Dit helpt ontwikkelaars om problemen vroeg in het ontwikkelingsproces te vinden en op te lossen, waardoor de kosten worden verlaagd en de algehele beveiliging wordt verbeterd.
Er zijn verschillende populaire SAST-tools beschikbaar, elk met zijn eigen sterke punten en functies. In dit artikel vergelijken we de meest gebruikte SAST-tools.
CheckMarx
CheckMarx SAST is een oplossing voor het analyseren van broncode die beveiligingsproblemen, compliance-issues en andere fouten in de code identificeert. Het bouwt een logische grafiek van de elementen en flows van de code en bevraagt deze grafiek vervolgens om issues te vinden. CheckMarx ondersteunt vele programmeertalen en kan scans uitvoeren op elk moment in de ontwikkelingscyclus.
Belangrijkste functies van CheckMarx zijn:
- Uitgebreide lijst met vooraf geconfigureerde queries voor bekende kwetsbaarheden
- Mogelijkheid om aangepaste queries te configureren voor beveiliging, kwaliteitsborging en bedrijfslogica
- Interactieve interface voor het volgen van runtimegedrag en herstel
- Integratie met build-automatiseringstools, SCM-systemen, issue trackers en CI/CD-platforms
Fortify
OpenText Fortify Static Code Analyzer is een andere toonaangevende SAST-tool. Het lokaliseert de oorzaken van beveiligingsproblemen in broncode, prioriteert de meest ernstige issues en biedt begeleiding bij het herstel. Fortify ondersteunt meer dan 1.600 kwetsbaarheidscategorieën in meer dan 33 programmeertalen.
Enkele belangrijke mogelijkheden van Fortify zijn:
- Beveiliging inbouwen in ontwikkelingstools via een uitgebreid integratie-ecosysteem
- Scandiepte afstemmen en valse positieven minimaliseren met Audit Assistant
- Scans dynamisch schalen om te voldoen aan de eisen van CI/CD-pipelines
- Kwetsbaarheden identificeren in bron-, binaire of byte-code vroeg in de ontwikkeling
- Integratie met CI/CD-tools zoals Jenkins, Jira, Azure DevOps en meer
Frogbot
Frogbot is een Git-bot die pull requests scant op beveiligingsproblemen met behulp van JFrog Xray. Wanneer een nieuwe pull request wordt aangemaakt of gelabeld, voert Frogbot een scan uit en rapporteert eventuele gevonden issues rechtstreeks in de Git UI. Hierdoor kunnen ontwikkelaars kwetsbaarheden aanpakken voordat ze worden samengevoegd in de codebase.
Belangrijkste functies van Frogbot zijn:
- Pull requests scannen op bekende kwetsbaarheden
- Bevindingen rapporteren in de Git-interface als comments
- Mogelijkheid om scans opnieuw uit te voeren door een label toe te voegen aan een bestaande pull request
- Integratie met JFrog Xray voor de scanengine
Veracode
Veracode biedt een cloudgebaseerde, geautomatiseerde SAST-oplossing. Het scant gecompileerde code (binaries) in plaats van alleen broncode, wat diepere en uitgebreidere resultaten oplevert. Veracode identificeert potentiële issues zoals kwaadaardige code of ontoereikende functionaliteit, en prioriteert bevindingen op basis van bedrijfsrisico.
Enkele opmerkelijke aspecten van Veracode zijn:
- Binaries scannen om third-party libraries op te nemen die mogelijk worden weggelaten uit scans die alleen de broncode omvatten
- Resultaten prioriteren op basis van bedrijfsdoelstellingen en risicotolerantie
- Zeer nauwkeurige en bruikbare bevindingen leveren met weinig valse positieven
- Snel scannen en resultaten mogelijk maken zonder de noodzaak van dedicated beveiligingspersoneel
Semgrep
Semgrep is een Open Source SAST-tool die overal kan worden uitgevoerd, van de commandoregel tot CI/CD-pipelines. Het is ontworpen om gemakkelijk aan te passen en te gebruiken te zijn, met een uitbreidbare architectuur. Semgrep-regels zijn zichtbaar voor gebruikers en lijken qua syntax op broncode, waardoor ze transparant en begrijpelijk zijn.
Belangrijkste functies van Semgrep zijn:
- Scans in seconden uitvoeren, met een mediane CI-scantijd van 10 seconden
- Flexibiliteit om aangepaste regels te schrijven om complexe problemen op te lossen
- Een bibliotheek met beheerde regels bieden om het schrijven van aangepaste regels te minimaliseren
- 30+ frameworks en technologieën ondersteunen
GitHub CodeQL
CodeQL is de Open Source-analyse-engine die door GitHub wordt gebruikt voor beveiligingscontroles en variantanalyse. Het ondersteunt vele programmeertalen en biedt een commandoregelinterface en Visual Studio Code-extensie voor het uitvoeren van scans op Open Source-codebases.
Enkele opmerkelijke aspecten van CodeQL zijn:
- Beveiligingscontroles en variantanalyse automatiseren
- Een breed scala aan talen, libraries en frameworks ondersteunen
- Een overzicht geven van technische termen en concepten die in CodeQL worden gebruikt
Snyk Code
Snyk Code is een ontwikkelaarvriendelijke SAST-tool die broncode in enkele minuten scant, zonder dat er een build nodig is. Het biedt real-time resultaten inline met de code, samen met advies voor herstel om ontwikkelaars te helpen issues snel op te lossen. Snyk Code is compatibel met populaire talen, IDE’s en CI/CD-tools.
Belangrijkste functies van Snyk Code zijn:
- Code scannen terwijl deze wordt geschreven, met automatische scanning vanuit de IDE
- Bruikbare resultaten bieden met ontwikkelaarvriendelijk advies voor herstel
- Machine learning inzetten om een robuuste kennisbank op te bouwen
- Issues prioriteren op basis van implementatiestatus en blootstelling
Tencent Xcheck
Tencent Xcheck is een static application security testing (SAST)-tool ontwikkeld door Tencent Cloud. Het is ontworpen om ontwikkelaars te helpen beveiligingsproblemen en andere issues in hun broncode te identificeren.
- Xcheck kan de syntaxkenmerken van verschillende programmeertalen precies begrijpen, wat helpt bij het oplossen van het probleem van valse positieven veroorzaakt door verkeerd begrip van de code.
- Het kan door de gebruiker gedefinieerde beveiligingsmaatregelen identificeren, waardoor valse positieven verder worden verminderd.
- Xcheck ondersteunt het scannen van complete projecten met correcte syntax voor ondersteunde talen.
- Het kan web backend applicatiecode snel scannen, maar kan langer duren voor diep geneste recursieve code.
Vergelijking met andere SAST-tools
- Een Reddit-post suggereert dat Xcheck ruwe broncode direct kan scannen zonder te hoeven compileren, en dat de scansnelheid 100 keer sneller is dan Checkmarx.
Implementatie en beveiliging
- Xcheck wordt on-premises geïmplementeerd, dus de broncode die wordt getest blijft binnen het bedrijfsnetwerk, waardoor het risico op lekken van broncode wordt vermeden.
- De volledige levenscyclus van het product, inclusief de broncode, verlaat het bedrijfsnetwerk niet.
Tencent Xcheck is een snelle en nauwkeurige SAST-tool die ontwikkelaars helpt beveiligingsproblemen in hun code te vinden. Het on-premises implementatiemodel zorgt voor de beveiliging van de broncode. Hoewel het gunstig scoort ten opzichte van andere SAST-tools op het gebied van snelheid en nauwkeurigheid, ondersteunt het mogelijk niet zoveel talen of heeft het niet zo’n uitgebreid ecosysteem als sommige enterprise-gerichte SAST-tools.
Semgrep
- Open Source SAST-tool die overal kan worden uitgevoerd, van de commandoregel tot CI/CD-pipelines
- Ontworpen om gemakkelijk aan te passen en te gebruiken te zijn, met een uitbreidbare architectuur
- Ondersteunt 30+ frameworks en technologieën
- Biedt een bibliotheek met beheerde regels om het schrijven van aangepaste regels te minimaliseren
- Voert scans in seconden uit, met een mediane CI-scantijd van 10 seconden
Bandit
- Open Source SAST-tool speciaal ontworpen voor het scannen van Python-code
- Uitgebreide bronkwetsbaarheidsscanner voor Python
Brakeman
- Open Source kwetsbaarheidsscanner speciaal ontworpen voor Ruby on Rails-applicaties
OWASP Dependency-Check
- Open Source-tool die het gebruik van bekende kwetsbare componenten identificeert
- Ondersteunt Java- en .NET-projecten
- Integreert met build-tools zoals Gradle, Jenkins en Maven
PMD
- Open Source SAST-tool die Java, JavaScript, Salesforce en andere talen ondersteunt
- Integreert met build-tools zoals Ant, Maven, Gradle en Jenkins
PHPStan
- Open Source SAST-tool voor PHP
- Ondersteunt integraties met Bitbucket, GitHub en GitLab
Cppcheck
- Open Source SAST-tool voor C- en C++-code
- Integreert met Jenkins en Visual Studio
Dit zijn slechts enkele voorbeelden van de vele Open Source SAST-tools die beschikbaar zijn. Bij het kiezen van een SAST-tool is het belangrijk om rekening te houden met factoren zoals de programmeertalen die u gebruikt, het niveau van aanpassing en transparantie dat u nodig heeft, de snelheid en nauwkeurigheid van de resultaten en het gemak van integratie met uw bestaande tools en workflows.
Samenvattend
Static Application Security Testing is een cruciaal onderdeel van veilige softwareontwikkeling. De SAST-tools die in dit artikel zijn vergeleken, hebben elk hun eigen sterke punten en functies, maar ze zijn allemaal gericht op het helpen van ontwikkelaars bij het vroegtijdig vinden en oplossen van beveiligingsproblemen in het ontwikkelingsproces.
Houd bij het kiezen van een SAST-tool rekening met factoren zoals de programmeertalen die u gebruikt, het niveau van aanpassing en transparantie dat u nodig hebt, de snelheid en nauwkeurigheid van de resultaten en het gemak van integratie met uw bestaande tools en workflows. Veel van deze tools bieden gratis proefversies of Open Source-versies, zodat u ze kunt uitproberen en kunt zien welke het beste werkt voor uw behoeften.
Uiteindelijk is het doel van SAST om de algehele beveiliging van uw applicaties te verbeteren door problemen te vinden en op te lossen voordat ze door aanvallers kunnen worden misbruikt. Door SAST in uw ontwikkelingsproces op te nemen, kunt u veiligere software bouwen en het risico op dure datalekken in de toekomst verminderen.