Kleine foutjes in de code kunnen systemen kwetsbaar maken voor aanvallers. Maar het doorzoeken van duizenden regels code voor een grote poel aan zwakheden is geen makkelijke taak.

Gelukkig is er een aantal tools die je daarmee kan helpen. Met mogelijkheden als statische analyse kunnen deze tools niet alleen mogelijke issues vinden in je code, maar ook de beveiliging van deze code een hoge prioriteit geven tijdens het ontwikkelproces.

Wij hebben vijf tools bekeken die jouw code analyseren en beveiligingsproblemen aan het licht brengt. Er zijn zowel open source- als commerciële oplossingen die lokaal kunnen worden gebruikt, maar ook in de cloud.

Codiscope Jacks

Statische analyse, waarin code wordt gedebugged zonder te worden uitgevoerd, is een zeer goede eerste stap die je kan doen om kwetsbaarheden te ontdekken. Organisaties die repo's opslaan in GitHub kunnen alvast met de bèta-versie van Codiscope's Jacks aan de slag. Je kunt de code vanuit GitHub importeren en laten scannen. Jacks scant op dit moment vooral JavaScript programma's. Er zijn ook al plannen om daar Java aan toe te voegen en ondersteuning voor andere talen wordt niet uitgesloten.

"Wij behouden de code van onze gebruikers niet", zegt Katie Lycon, marketing director bij Codiscope. "Wij zijn erg gefocust op het accentueren van gebieden waar wij op de lange termijn het een en ander kunnen verbeteren."

Jack tagt potentiële problemen door het aangeven van het regelnummer en geeft daarnaast tips over hoe deze issues kunnen worden opgelost. Daarnaast meldt de dienst ook of er patches beschikbaar zijn die de issues in de code kunnen oplossen. Jack alarmeert ontwikkelaars ook voor externe situaties als onveilige scripts of verbindingen. Ook wordt er aan de serverkant gekeken of de code vatbaar is voor injecties die door kwaadaardige scripts kunnen worden uitgevoerd.

"De sterkste triggers hebben betrekking op cryptografie zodat men er zeker van kan zijn dat er op een veilige manier willekeurige nummers worden gegenereerd. Alle andere cryptografische implementaties worden ingezet volgens de beste richtlijnen," aldus Lyon.

De dienst wordt officieel de eerste helft van dit jaar beschikbaar.

Flawfinder

Flawfinder is een open source tool die C/C++ code onderzoekt en alle potentiële zwakheden doorgeeft op volgorde van risico. Deze tool maakt gebruik van een ingebouwde database van taalfuncties met bekende risico's als bufferoverflow-problemen, format string-issues, race conditions en slechte random-number acquisitie.

"Ik wil dat software een stuk veiliger is dan tegenwoordig vaak het geval is. Veel applicatieontwikkelaars blijven dezelfde fouten maken en deze leiden tot beveiligingsproblemen. Flawfinder is een simpele tool die vertelt welke delen van de code beter onderzocht moeten worden. Ik hoop dat deze simpele tool het aantal kwetsbaarheden in uitgerolde software verlaagt," aldus David Wheeler, bouwer van Flawfinder.

Wheeler drukt ontwikkelaars op het hart de fouten te vinden voordat de applicatie is uitgerold. "Flawfinder is een complexe tool; het gebruikt een native algoritme. Technisch gezien is het een lexicaal source code statisch analyse-pakket. Ondanks de simpelheid van het pakket zijn gebruikers wel laaiend enthousiast."

Flawfinder werkt zowel op Unix-achtige systemen alsook op Windows (via de Cygwin-omgeving) en heeft Python 2 nodig om te kunnen werken.

IBM Security AppScan

Dit pakket wordt gepositioneerd tool die web- en mobiel applicatie-beveiliging verbetert. IBM Security AppScan is een lokale tool die zowel een statische als dynamische analyse uitvoert waarin een applicatie wordt behandeld als black box en tests worden uitgevoerd om kwetsbaarheden te vinden.

"Deze tool pluist web applicaties door, kijkt naar de input-forms en kijkt of deze kwetsbaar zijn," zegt Larry Gerard, program director voor applicatie beveiliging bij IBM.

AppScan voert ook een interactieve analyse uit waarin een agent wordt geplaatst op de applicatieserver om te onderzoeken hoe een applicatie reageert op een test. Zo wordt er bijvoorbeeld gekeken of een applicatie een SQL-injectie-issue opschoont.

Mobiele applicaties worden weer op een andere manier geanalyseerd. Als er een algemene kwetsbaarheid wordt gevonden, brengt AppScan de ontwikkelaar daarvan op de hoogte en wijst deze naar het punt in de code waar het misgaat.

Kwetsbaarheden als een SQL-injectie, cross-site scripting en vele andere issues worden onderzocht. AppScan geeft al deze issues weer in een rapport en vult deze aan met analytics om false positives te verminderen. Het is de bedoeling dat deze kwetsbaarheden al worden opgelost voordat applicaties worden gestuurd naar klanten.

Parasoft Development Testing Platform

Parasoft's Development Testing Platform (DTP) doet aan statische analyse in de IDE of als onderdeel van een build of continuerende integratie.

Als DTP wordt geactiveerd tijdens CI dan worden de resultaten naar de ontwikkelaar verzonden op verschillende manieren, e-mail, web-rapport, direct in de IDE alsof de analyse lokaal wordt uitgevoerd. "Onze statische analyse-tool voor C/C++, .Net en Java heeft ongeveer 1500 regels per platform. Deze regels hebben zeer uitgebreide beveiligingsdocumentatie. Links naar referenties als common weakness enumeration (CWE), user-controllable severity, parameters en meer," aldus Arthur Hicken, Parasoft-evangelist.

Parasoft biedt ook een tool aan voor het maken van eigen regels genaamd RuleWizard.

Daarnaast is Parasoft's Process Intelligence Engine (PIE) toegespitst op het voorkomen van gebreken en blootstelling. PIE vindt deze gebreken door observaties te correleren gedurende de hele softwareontwikkelings-cyclus. PIE kan gebruikt worden om strengere analyseregels door te voeren wanneer beveiligingslekken worden gevonden tijdens het testen.

Informatie vanuit DTP kan worden geëxporteerd naar IDE's als Visual Studio, Eclipse en IntelliJ Idea.

Rogue Wave Klocwork

Rogue Wave Klocwork is een lokale tool die incrementele codeveranderingen analyseert. "Het is een tool die ontwikkelaars helpt beveiligingsdefecten zo vroeg mogelijk te vinden. Wij analyseren de broncode om defecten te vinden op bijna dezelfde manier als een mens deze zou vinden. Maar wij zijn een stuk betrouwbaarder dan een mens en wij kunnen dingen doen die een mens niet kan doen". Aldus Walter Capitani, product manager voor Klocwork.

Andere issues, waaronder cross-site scripting en geheugenoverloop worden ook behandeld door de tool. Checkers in Klocwork kijken daar het datagebruik en naar het gedrag of de functie in relatie tot de input.