Leeftijdsverificatie-app eenvoudig te hacken: dit is wat er is gebeurd

De nieuw ontwikkelde leeftijdsverificatie-app die afgelopen week werd gepresenteerd door de EU, blijkt eenvoudig te hacken. Dat legt een beveiligingsexpert uit in een kort filmpje. Het vereist slechts wat kleine aanpassingen in bestanden van de app om de beveiliging te omzeilen.
De app werd vorig jaar al aangekondigd, maar kon vanaf vorige week al worden gedownload voor testers. Met de app kunnen website- of socialmedia-platformbezoekers aantonen dat ze oud genoeg zijn om de website mogen bezoeken. Ze hoeven dan niet per website bijvoorbeeld een kopie van het paspoort, id-kaart of een foto op te sturen om de leeftijd te verifiëren.
Kritische beveiligingsexperts
Experts op het gebied van veiligheid en privacy blijken echter kritisch op de app. Een van de experts - Paul Moore - liet in een 2 minuten durend filmpje zien hoe eenvoudig het is om de app zodanig te manipuleren dat je een andere leeftijd kunt gebruiken.
Wanneer je de app voor het eerst instelt, word je gevraagd om een pincode aan te maken. De applicatie versleutelt deze code vervolgens en slaat hem op in de zogenaamde shared_prefs-map. Dit is echter een slecht ontwerp, omdat een dergelijke pincode op deze manier helemaal niet versleuteld zou moeten worden. Daar komt nog een veel groter probleem bij: de code is op geen enkele manier cryptografisch gekoppeld aan de daadwerkelijke kluis waarin de identiteitsgegevens veilig horen te staan.
Beveiligingsfouten makkelijk te omzeilen
Deze ontwerpfouten maken het voor een kwaadwillende eenvoudig om de beveiliging te omzeilen. Een aanvaller hoeft namelijk alleen maar de specifieke waarden voor 'PinEnc' en 'PinIV' uit het shared_prefs-bestand te verwijderen en de app opnieuw op te starten. De app vraagt op dat moment om een nieuwe pincode, waarna de hacker zonder verdere blokkades de identiteitsgegevens van het oorspronkelijke profiel voorgeschoteld krijgt en deze probleemloos als legitiem kan gebruiken.
Naast dit kritieke lek bevat de app nog andere verbazingwekkend simpele beveiligingsfouten die allemaal via datzelfde configuratiebestand uit te buiten zijn. Zo wordt de blokkade tegen te veel inlogpogingen, oftewel rate limiting, slechts bijgehouden met een simpel oplopend getal. Een hacker kan dit getal handmatig terugzetten naar nul om zo eindeloos te kunnen blijven gissen.
Ook is het opvallend dat er aan het bewijs van leeftijd een vervaldatum zit, waardoor de leeftijd - na het verstrijken van de vervaldatum - opnieuw aangepast kan worden en gebruikers weer opnieuw het verificatieproces moeten doorlopen.
App is uitgebracht
De app is eerder al getest in Frankrijk, Italië, Griekenland en Cyprus en is volgens Ursula von der Leyen - voorzitter van de Europese Commissie - klaar voor gebruik. Tijdens de test zijn de problemen die beveiligingsexpert Paul Moore onlangs ontdekte, niet naar voren gekomen. Het is onduidelijk wat er met de bevindingen van Moore wordt gedaan.
Wie geinteresseerd is in de broncode - die opensource is - kan deze hier bekijken op Github.
Eenvoudig op te sporen met Claude Code
Iedereen met een klein beetje kennis kan gebruik maken van Claude Code om broncode van apps te scannen. Wij hebben dat ook even vluchtig gedaan: we vroegen Claude Code om de code van de verificatie-app voor Android te scannen op kwetsbaarheden en deze vond er een aantal, waaronder het niet versleuteld opslaan van de toegangscode van de app en nog wat andere beveiligingszaken. Wij zijn echter geen experts op dit gebied maar waren vooral benieuwd of een toepassing als Claude Code ook in staat is om fouten in broncode te ontdekken.
Of deze fouten ook daadwerkelijk zorgen voor beveiligingsproblemen kunnen we niet zeggen, maar het toont wel aan dat je met AI ook aardig goed kunt (laten) controleren of een aantal beveiligingonderdelen wel of niet op orde zijn.
Nieuwe broncode
De broncode van de app is drie dagen geleden geüpdatet, het is niet duidelijk of daarbij ook de gevonden lekken van Paul Moore zijn gedicht.



