Nieuwe security-inzichten krijgen, doe je zo: de ontwikkelaar kruipt in de rol van de hacker

Redactie WINMAG Pro
Auteur: Kyle Suero, Senior Security Advocate, Snyk

Iedereen die software ontwikkelt, wil dat hun applicatie aan de hoogst mogelijke kwaliteitseisen voldoet. Voordat het naar de productie gaat, moeten code reviews, geautomatiseerde en handmatige tests ervoor zorgen dat alles naar behoren werkt en dat bugs worden geëlimineerd.

Het testen op securitylekken is een cruciaal onderdeel van dit proces en moet worden ondersteund door gespecialiseerde tools. Als deze stap wordt overgeslagen, slechts achteraf wordt behandeld of als de juiste tools niet beschikbaar zijn, kan dit vertragingen veroorzaken, zijn er rollbacks nodig en kan het mogelijk kostbare gevaren opleveren voor klanten en eindgebruikers.

Het vechten voor het waarborgen van de security van applicaties kent geen einde. Elke dag worden er nieuwe probleemgevallen en kwetsbaarheden ontdekt waardoor applicaties, waarvan men dacht dat ze ongevoelig waren voor aanvallen, hun code opnieuw moeten aanpassen. Tegelijkertijd kunnen cybercriminelen razendsnel te werk gaan: ze innoveren hun methoden continu en zijn meedogenloos. In Nederland heeft bijna een kwart van de bedrijven te maken gehad met een veiligheidsincident van buitenaf in 2021. Hoewel de normen voor cybersecurity bij de meeste bedrijven al hoog zijn, moet er duidelijk nog veel meer worden gedaan om te voorkomen dat deze cijfers elk jaar blijven stijgen.

De vijand imiteren

Om de security op ontwikkelingsniveau te verbeteren, zouden ontwikkelaars op zijn minst een deel van hun tijd moeten besteden aan het kraken van hun eigen systemen met behulp van de tools en technieken van de vijand. Deze discipline - ook bekend als penetratietesten of pentesten - biedt unieke inzichten in de security die vaak niet door andere vormen van testen onthuld worden.

Voor alle duidelijkheid: penetratietests zijn geen vervanging voor de standaard tests, scans en controles die worden gebruikt in de huidige securitypraktijken. Het is eerder een zeer nuttige aanvulling op die procedures die een ander perspectief biedt dat zwakke plekken belicht die anders misschien niet zouden zijn opgevallen. Ook moet worden benoemd dat penetratietests geen eenmalige bezegeling van de security zijn: ze kunnen slechts garanties geven voor de dag waarop de tests plaatsvinden. Het securitylandschap van morgen en de bijbehorende risico’s zijn immers anders.

Je eigen applicaties proberen te hacken door dezelfde tools als criminelen te gebruiken, creëert een andere mindset die resulteert in betere code en betere security. In plaats van te concentreren op het beoogde gebruik van een applicatie, richten we ons nu op onbedoeld gebruik. Kwetsbaarheden bevinden zich vaak aan de randen van de functionaliteit: dat wil zeggen, het verleggen van de grenzen van wat programma's bedoeld zijn te doen kan gaten onthullen waardoor hackers hun weg naar binnen kunnen vinden.

Soms zijn die kwetsbaarheden het gevolg van onnauwkeurigheden in de code, maar heel vaak gaat het om fouten in het software-ontwerp of in de bedrijfslogica die dat ontwerp dicteert. De code is correct geschreven volgens specificatie, maar de specificatie zelf creëert ontelbare mogelijkheden voor misbruik en inbreuken. Deze fouten creëren kwetsbaarheden die heel anders zijn dan die ontstaan door ‘per ongeluk’ verkeerde configuraties, het gebruik van kwetsbare open source-software of het niet volgen van de beste praktijken bij het schrijven van code. Misschien is het niet de fout van de ontwikkelaar, maar als bewaker van de security van de applicatie vallen ze zeker binnen de grenzen van hun verantwoordelijkheden.

De pentest toolkit

De moderne pentester vertrouwt niet op zijn eigen trucjes: hij is zeer goed uitgerust en kan veel aspecten van zijn werk automatiseren, net als de cybercriminelen die zijn systemen proberen te kraken. Zo zijn er bijvoorbeeld fuzzers, die overal onverwachte waarden proberen te injecteren in de hoop de applicatie te laten crashen of verdere toegang te krijgen tot code of gegevens die eigenlijk verborgen zouden moeten zijn. In webapps kunnen zij bijvoorbeeld vreemde waarden invoeren in formuliervelden, in door gebruikers ingezonden gegenereerde inhoud of in URL's.

Vervolgens zijn er exploitkits beschikbaar vanuit verantwoordelijke, ‘white hat’ partijen waarmee ontwikkelaars de bekende technieken van echte hackers kunnen gebruiken om te proberen door hun eigen security heen te dringen. Daarnaast is er scansoftware voor penetratietests beschikbaar die in plaats van het systeem te scannen op malware of slechte actoren, scannen op mogelijke ingangen. Deze scansoftware kan duizenden verschillende inbraaktechnieken uitproberen, veel meer dan de meest ervaren ontwikkelaars zouden kunnen, en vormen dus een krachtig hulpmiddel om gaten in het pantser te vinden.

Leren hoe penetratietests moeten worden uitgevoerd is een zeer waardevolle vaardigheid voor ontwikkelaars en zal hun inzichten in het bouwen van veilige applicaties verder uitbreiden dan dat wat ze kennen vanuit het perspectief van een codemaker. Het helpt bij het creëren van een mentaliteit waarin altijd wordt nagedacht over de mazen in de wet en wordt gekeken naar de security tegen de meest onverwachte gebeurtenissen - dit is bijzonder waardevol voor organisaties, omdat dit precies de routes zijn die cybercriminelen ook zullen nemen.

Redactie WINMAG Pro
Door: Redactie WINMAG Pro
Redactie

Redactie WINMAG Pro

Redactie