Voorkom ad-hoc brandjes blussen

Update 26 – Het Inzicht–januari 2016

Dit keer geeft Rick van Bodegraven, security consultant bij Madison Gurkha, inzicht in de meerwaarde van het inspecteren van de broncode bij een applicatieonderzoek.

Madison Gurkha voert jaarlijks veel verschillende IT-beveiligingsonderzoeken uit. Bij al deze onderzoeken is één aspect voor ons altijd hetzelfde; het speuren naar kwetsbaarheden in de applicaties of infrastructuur die ‘in scope’ zijn. Afhankelijk van de hoeveelheid beschikbare informatie, hanteren we hierbij verschillende onderzoeksmethoden. Dit varieert van een black box onderzoek dat vergeleken kan worden met een aanval zoals digitale inbrekers die zouden uitvoeren tot een diepgaand crystal box onderzoek waarbij we vooraf beschikking krijgen over alle mogelijke informatie. In dit artikel geven we inzicht in de onderzoekswijze die gehanteerd wordt tijdens een crystal box applicatieonderzoek, ook wel bekend als whitebox onderzoek.

Bij een crystal box onderzoek van (web)applicaties beschikken we vooraf over alle mogelijke informatie waaronder configuratiebestanden, interne (ontwerp) documentatie en de volledige broncode van de te onderzoeken applicatie. Doordat de code beschikbaar is kunnen we relatief snel kwetsbaarheden aantreffen die normaal gesproken pas na vele uren van traditioneel pentesten (speurwerk) naar boven komen. Of nog erger, pas aan het licht komen als ze door een volhardende aanvaller uitgebuit worden. Ook is het mogelijk om specifieke ontwerpkeuzes en eventuele kwetsbare instellingen in een vroeg stadium te onderzoeken, wanneer logbestanden, configuratiebestanden en ontwerpdocumenten worden aangeleverd. Dit type onderzoek heeft de meeste diepgang en zal dan ook de meeste resultaten en mogelijke verbeterpunten opleveren.

Hoe gaat het in zijn werk?
Bij aanvang van het onderzoek bekijken we hoe groot de broncode is. Hiervoor gebruiken we tools die regel voor regel inspecteren in welke programmeertaal de betreffende regel is geschreven. De tool laat vervolgens een totaaloverzicht zien van het aantal regels per programmeertaal. Hierdoor krijgen we een globaal beeld van de omvang en de structuur van de aangeleverde broncode. Vervolgens begint het ‘echte’ onderzoek waarbij de focus ligt op het onderzoeken van kwetsbaarheden vanuit het perspectief van de applicatie. Wanneer we vermoeden dat een aangetroffen kwetsbaarheid structureel in de applicatie aanwezig is, kijken we in de broncode of dit daadwerkelijk het geval is. Mochten we gedurende het onderzoek van de applicatie een vermoeden ontwikkelen dat er iets niet helemaal in de haak is, dan biedt de broncode uitkomst om dit vermoeden te bevestigen of te ontkrachten. Hierdoor kunnen we een kwetsbaarheid die in de praktijk lastig uit te buiten is, snel opsporen zodat de opdrachtgever passende maatregelen kan nemen om het beveiligingsprobleem op te lossen.

 

Er zijn immers geen kwetsbaarheden gevonden, dus kunnen ze ook niet aanwezig zijn... toch?


Controleren hoe bepaalde zaken zijn opgelost
Een voordeel van de crystal box methode is dat er ook toekomstige problemen mee voorkomen kunnen worden. Doordat alle broncode en eventuele configuratiebestanden geïnspecteerd kunnen worden, kunnen we bijvoorbeeld afwijkingen van best practices detecteren. Een voorbeeld hiervan is de ingestelde encryptie in configuratiebestanden of de complexiteit van wachtwoorden voor verbindingen met achterliggende databases. Ook het zoeken naar veel voorkomende beveiligingsrisico’s als SQL-injectie, cross-site request forgery (CSRF) of cross-site scripting (XSS) kan een stuk efficiënter wanneer de broncode beschikbaar is. Veel van de oorzaken van deze drie risico’s zijn al langer in het vakgebied bekend, waarbij vaak ook specifieke functies in bepaalde talen als boosdoener worden genoemd. Het zoeken naar deze risico’s kan hierdoor aangevuld worden met het doorzoeken van de gehele broncode op bekende kwetsbare functies.

Het beschikbaar hebben van de broncode levert voordelen op wanneer vanuit het perspectief van de applicatie wordt getest. Indien er tijdens het onderzoek een kwetsbaarheid wordt gevonden, kunnen we precies traceren welk stuk code in dat geval verantwoordelijk is. Op deze manier kan veel duidelijker de oorzaak aangewezen worden. En op basis hiervan kunnen we vervolgens de gehele broncode doorlopen om te zien of de kwetsbaarheid ook op andere plaatsen aanwezig is waar dezelfde code is hergebruikt. Ook wanneer kwetsbaarheden niet aanwezig blijken te zijn levert een crystal box onderzoek voordelen op. We kunnen namelijk tot op de bodem uitzoeken en aantonen waarom dat het geval is, waarbij vaak zelfs de verantwoordelijke regels code aangewezen kunnen worden.

Een kanttekening is hier overigens wel op zijn plaats. Het uitvoeren van een crystal box onderzoek is nadrukkelijk niet hetzelfde als het uitvoeren van een code review. Bij een code review wordt iedere regel code nauwgezet onderzocht, met behulp van tooling die daar speciaal voor ontwikkeld is. Bij dit type onderzoek zijn ook andere aspecten dan alleen beveiliging van belang. Software engineering principes zoals onderhoudbaarheid en complexiteit voeren de boventoon  tijdens een code review. Indien er een volledige code review uitgevoerd moet worden, doen we dit vaak in samenwerking met de specialisten van onze partner SIG (Software Improvement Group).

Toekomstig niveau van IT-veiligheid
Zoals hierboven genoemd is, zijn er naast het crystal box onderzoek nog twee andere onderzoeksmethoden die gehanteerd worden. Dit zijn de grey- en black box onderzoeken. Bij een grey box onderzoek beschikken we over credentials waarmee we kunnen inloggen op de applicatie. Bij een black box onderzoek is alleen de url van het te onderzoeken systeem bekend. Eén van de nadelen van dit type onderzoeken is het feit dat de afwezigheid van een kwetsbaarheid nooit kan worden gegarandeerd. Alleen in het geval van aanwezigheid kan dit worden bewezen. Dit kan een vals gevoel van veiligheid opleveren. Er zijn immers geen kwetsbaarheden gevonden, dus kunnen ze ook niet aanwezig zijn… toch?

Dit alles betekent uiteraard niet dat wij onze klanten aanraden om voortaan alleen nog maar crystal box onderzoeken uit te laten voeren. Ieder onderzoek vraagt immers om een eigen kwalitatief hoogwaardige aanpak die past bij de zichtbaarheid van de organisatie en het afbreukrisico. Voor het uitvoeren van een crystal box onderzoek is specifieke kennis nodig. Omdat niet alle consultants per definitie op iedere opdracht ingezet kunnen worden, is het bij een crystal box onderzoek lastiger om een flexibele planning te kunnen bieden. De kwaliteit van het uitgevoerde onderzoek staat immers voorop en moet van het niveau zijn dat u van ons mag verwachten.


 

@Madison Gurkha 2017
Webdesign Studio HB / webdevelopment Medusa