Hoe source code reviewing een belangrijke rol bij pentesten speelt
- Blog
Source code reviewing en pentesten: een match made in heaven
Grote kans dat je pentesten al kent. Deze vanuit het Engels (penetration test) overgenomen term, staat voor de dienst waarbij met ethical hacking de kwetsbaarheden van een apparaat, netwerk, server en/of applicatie blootleggen. Het mag duidelijk zijn dat aan de oppervlakte niet alles zichtbaar is. Kwetsbaarheden zijn er altijd. En als je er niet naar op zoek gaat, merk je ze niet op. Totdat je te laat bent en een cyberaanval of datalek ervaart. Ethical hackers worden ingezet om de IT infrastructuur te penetreren. Komen zij door een kwetsbaarheid naar binnen, dan weet je dat je op die plek je verdediging moet aanscherpen. Kortom voorkomen is beter dan genezen.
Source code reviewing is een onderdeel van pentesten. Het is een vorm van ‘whitebox’ pentesting waarbij de ethical hacker beschikt over alle kennis van bijvoorbeeld een applicatie en toegang heeft tot de broncode. Source code reviewing is vaak een onderdeel van het ontwikkelproces van software. Daarbij wordt gekeken naar de kwaliteit van de broncode en volgende vragen gesteld:
- zijn coderingsstandaarden toegepast, worden security best practices op een generieke manier gebruikt, bevat de code geen overbodige regels
- is de code begrijpelijk, goed leesbaar en makkelijk over te dragen?
Bij source code reviewing vanuit een veiligheidsperspectief wordt vooral gekeken of de code onveilige fouten bevat. De vraag ‘zijn er zwakke plekken of fouten die tot mogelijke kwetsbaarheden kunnen leiden?’ staat centraal.
Normaal gesproken analyseer je met een source code review de broncode regel voor regel. Dit is een tijdrovend en arbeidsintensief proces. Een eenvoudige webapplicatie bevat al snel meer dan 10.000 regels code. Complexe applicaties bevatten wel meer dan 1.000.000 regels code. Gemiddeld bevat de broncode 10 fouten per 1.000 regels code. De meeste fouten hebben gelukkig weinig om het lijf. Sommige fouten veroorzaken kwetsbaarheden waarmee de beveiliging van een apparaat of applicatie kan worden doorbroken.
Hacksclusive heeft een effectieve en efficiënte aanpak ontwikkeld voor het analyseren van de broncode op beveiligingsfouten en/of zwakke plekken in de beveiliging. De aanpak combineert hands-on pentesting met een code review. In eerste instantie wordt de functionaliteit en de werkstroom van bijvoorbeeld een webapplicatie in kaart gebracht.
Hierna wordt de code van de, vanuit het perspectief van beveiliging, meest kritieke functionaliteit geanalyseerd. Mogelijke fouten of zwakke plekken die tot kwetsbaarheden kunnen leiden worden daarna geverifieerd. Dit is een aanpak die je reverse engineering zou kunnen noemen.
Tot slot wordt in overleg met de ontwikkelaars op een slimme manier gezocht naar vergelijkbare fouten of andere zwakke plekken in de code. Op deze manier kunnen efficiënt veel kwetsbaarheden worden geïdentificeerd.
Source code reviewing kent veel voordelen
Het analyseren van je broncode kent tal van voordelen voor zowel software ontwikkelaars als ethical hackers. We zetten er een aantal op een rijtje:
- Biedt diepgaande inzichten: source code reviewing biedt de tester diepgaande inzichten in de interne werking van het systeem. Deze aanpak helpt bij het identificeren van kwetsbaarheden die mogelijk over het hoofd worden gezien bij bijvoorbeeld blackbox en greybox pentesten.
- Identificeert ontwerpfouten: source code reviewing helpt bij het identificeren van ontwerpfouten die in het systeem aanwezig kunnen zijn, zoals onjuiste invoervalidatie of onveilige gegevensopslag. Deze ontwerpfouten kunnen leiden tot ernstige beveiligingsproblemen Deze worden als individuele instanties bij andere test benaderingen, terwijl tijdens een code review hier een generiek beeld van geschetst kan worden. We zien regelmatig dat bepaalde kwetsbaarheden lang onbekend en/of onontdekt blijven.
- Valideert beveiligingscontroles: source code reviewing helpt bij het valideren van de effectiviteit van beveiligingscontroles, zoals toegangscontroles en authenticatie-mechanismen. Deze aanpak helpt zwakke punten in deze controles te identificeren en hun doeltreffendheid te verbeteren.
- Uitsluitsel geven over de implementatie van complexe business logica: Dit zijn bijvoorbeeld functies waarbij verschillende stappen nodig zijn om een proces te doorlopen. Deze functionaliteit neemt vaak veel tijd in beslag tijdens een hands-on test. Doordat er toegang is tot de implementatie kan efficiënt worden beoordeeld hoe invoer data en dergelijke door de functies heen gaat.
- Helpt bij verkrijgen van beveiligingsaccreditaties: veel branchevoorschriften en -standaarden, zoals AVG, NIS2, ISO 27001, BIO, SOC 1&2 (SOC1 & SOC2), en SOC3, vereisen regelmatige beveiligingstests, waaronder pentests met veel kennis van de software. Het regelmatig uitvoeren van pentests kan organisaties helpen om aan deze nalevingsvereisten te voldoen.
- Prioriteren van herstelwerkzaamheden en voorkomen van kwetsbaarheden: source code reviewing helpt organisaties hun algehele cybersecurity te verbeteren door kwetsbaarheden en zwakke punten in hun systemen te identificeren en een beeld te krijgen van repeterende problemen. De bevindingen van testen kunnen worden gebruikt om prioriteit te geven aan herstelinspanningen, beveiligingsmiddelen toe te wijzen en effectieve beveiligingscontroles te implementeren.
Samengevat, source code reviewing geeft pentesters ontzettend veel informatie bij het zoeken naar kwetsbaarheden. Het biedt diepgaande inzichten, identificeert ontwerpfouten, valideert beveiligingscontroles, helpt te voldoen aan wet- en regelgeving en verbetert de algemene cyberbeveiliging.
“Hoe meer informatie je hebt als ethical hacker, hoe nauwkeuriger je kunt pentesten. Daarom is source code reviewing een sterke methode om in te zetten bij hands-on testen”
Source code reviewing vindt niet enkel plaats op webapplicaties
Source code reviewing wordt toegepast op tal van digitale middelen zoals web- en mobiele applicaties, maar ook firmware. Het is een belangrijk aspect van het softwareontwikkelingsproces dat helpt bij het waarborgen van kwaliteit van de code, onderhoudbaarheid en beveiliging. Concreet kan source code reviewing worden toegepast op de volgende digitale assets.
Applicaties
Source code reviewing kan worden toegepast om de broncode van software van (web) applicaties te onderzoeken op security issues. Dit kan in alle gangbare programmeertalen zoals Java,PHP, Ruby on Rails, C, C++, Python, JavaScript. De codes worden gecontroleerd op onder andere cross-site scripting (XSS) en SQL-injectie.
Mobiele apps
Ook Mobiele applicaties, meestal iOS en Android, kunnen gereviewd worden. Hier zijn de veel voorkomende kwetsbaarheden vaak onveilige opslag van gevoelige gegevens, hardgecodeerde inloggegevens en zwakke versleuteling.
Firmware
De software die verwerkt is in hardware apparaten noemen we firmware. Wanneer deze apparaten verbonden zijn met het internet, noemen we ze ook wel Internet of Things (IoT). Het zijn toepassingen zoals printers, routers en camera's. Deze apparaten zijn heel vaak het slachtoffer van cyberaanvallen omdat ze enerzijds met het internet verbonden zijn én omdat de vaak simpele hardware vaak slecht beveiligd is. Source code reviewing helpt bij het controleren van de code van deze apparaten. Hier wordt vooral ingezet op het tegengaan van zwakke wachtwoorden (bijvoorbeeld door een slechte standaardconfiguratie), buffer overflows, code-injectie en onveilige netwerkprotocollen.
Zelfs Microsoft en Google hebben regelmatig problemen met de code
Wie denkt dat fouten in de source code enkel zijn weggelegd voor het mkb, komt bedrogen uit. Broncodefouten is al vanaf dag 0 een probleem geweest voor techreuzen als Microsoft en Google. Fouten in de code van programma's zijn regelmatig Zero day kwetsbaarheden. Zero day verwijst naar een kwetsbaarheid in software waar de ontwikkelaars nog niet van op de hoogte zijn of nog niet eerder een fix voor hebben doorgevoerd. In het geval van een zero-day lek is de cybercrimineel dus eerder op de hoogte van een kwetsbaarheid in de code dan de ontwikkelaar zelf. Dit is dan ook waar de naam vandaan komt: zero dagen om de fout op te lossen voordat er misbruik van gemaakt wordt. Zo had Microsoft recent nog te maken met een zero-day lek. En enkele jaren geleden had ook Google te maken met een zero-day lek waar gretig misbruik van gemaakt werd.
Met source code reviewing hadden waarschijnlijk beide fouten voorkomen kunnen worden. Is het dan slordig dat bedrijven als Microsoft en Google hun eigen applicaties niet reviewen? Dat zouden cynici wel zeggen. De werkelijkheid is dat applicaties zoals de JavaScript-engine en Microsoft Outlook zoveel code bevatten, dat er vaak een keuze moet gemaakt worden welke code wel en niet gereviewd wordt. Gelukkig bestaan er tools als Checkmarx en Gitlab om code sneller te kunnen reviewen.
Source code reviewing: het hulpmiddel bij uitstek bij whitebox pentesting
Source code reviewing en pentesting zijn niet hetzelfde, maar liggen in elkaars verlengde. Meer zelfs, diepgaande onderzoeken van een applicatie of apparaat kan bijna niet zonder source code reviewing. Door de kern van het systeem te onderzoeken, controleert en verbetert een pentester de kwaliteit van de code, en zo ook de cyber security van de applicatie of software.
Ondanks de grote meerwaarde, kent het betrekken van source code reviewing bij pentesten ook een aantal nadelen. Het zal je niet verbazen dat het analyseren van de source code erg tijdsintensief kan zijn. Ook vraagt het best wat vertrouwen om de broncode te delen met een pentest partij. Daarom bekijken we bij elke pentest opdracht of source code reviewing interessant is voor onze klant en of het binnen de aangegeven scope en budget noodzakelijk is. Maar als je het ons vraagt, dan zouden wij pentests met zeer veel kennis van de applicatie of software uitvoeren. Zo komen we tot de meest complete inzichten.
Download onze
deep-dive pentest whitepaper!
Leer alles over pentesten en krijg 6 tips om de scope van jouw pentest te bepalen.