Op woensdag onthulde de Europese Commissie een mobiele app(nieuw venster) die is ontworpen om mensen online hun leeftijd te laten bewijzen zonder persoonlijke gegevens met platforms te delen. EU-functionarissen zeiden dat de app klaar was, voldeed aan de hoogste privacy-normen en wezen op de open-source code als bewijs van transparantie.
Binnen enkele uren begonnen beveiligingsonderzoekers de open-source code echter al te ontleden. Tegen donderdag had beveiligingsconsulent Paul Moore de beveiliging van de app in minder dan twee minuten omzeild(nieuw venster).

Anderen bevestigden zijn bevindingen. De controles voor de frequentiebeperking van de app waren opgeslagen in een bewerkbaar bestand, biometrische verificatie kon worden uitgeschakeld met een eenvoudige configuratiewijziging en gevoelige inloggegevens waren toegankelijk zonder beveiligde hardwarebescherming.
De Commissie bagatelliseerde de bevindingen en noemde de release een demoversie. Zowel Moore als de Franse cryptograaf Olivier Blazy boden weerwerk en vertelden Politico(nieuw venster) dat u de nieuwste versie van de code aan het testen was toen u de fouten ontdekte.
Later verklaarde de Commissie dat het probleem was opgelost, maar het incident toont nog steeds aan hoe kwetsbaar deze systemen voor leeftijdverificatie zijn.
Wat de leeftijdverificatie-app van de EU doet en wat er misging
Met de leeftijdverificatie-app van de EU kunnen mensen hun leeftijd verifiëren met een paspoort, een nationale ID of een vertrouwde aanbieder zoals een bank. Platforms kunnen de app vervolgens vragen om te controleren of iemand ouder is dan een bepaalde leeftijd zonder toegang te krijgen tot de onderliggende persoonlijke gegevens, ook wel bekend als zero-knowledge proof.
De uitvoering ondermijnde dat ontwerp. De app voor leeftijdsverificatie van de EU sloeg een versleutelde PIN op in een bewerkbaar configuratiebestand op het apparaat, gescheiden van de identiteitskluis waarin gevoelige gegevens worden bewaard. Door een paar waarden te verwijderen en de app te herstarten, kan een aanvaller een nieuwe PIN instellen terwijl inloggegevens van een vorig profiel opnieuw worden gebruikt.
De controles voor frequentiebeperking die herhaaldelijk raden voorkomen, waren opgeslagen als een eenvoudige teller in hetzelfde bestand, die naar nul kan worden gereset, waardoor elk verslag van mislukte pogingen wordt gewist. Biometrische verificatie werd beheerd door een enkele booleaanse vlag; door deze van ‘true’ naar ‘false’ te zetten, werd de controle volledig overgeslagen.
Gebouwd om leeftijden te controleren, maar niet veilig
Nadat onderzoekers de code hadden gebruikt om de gebreken bloot te leggen, bestempelden functionarissen de app als een demoversie.
Verschillende ontwikkelaars merkten op dat gevoelige gegevens opgeslagen hadden moeten worden in een beveiligde enclave, een bescherming op hardwareniveau die beschikbaar is op moderne smartphones en die dit soort aanvallen veel moeilijker maakt.
Maar de kwetsbaarheden leggen een probleem bloot dat verder gaat dan deze specifieke app. Leeftijdsverificatie is inherent onveilig, omdat het vereist dat een echte identiteit wordt gekoppeld aan een online actie. Die koppeling moet ergens worden opgeslagen, al is het maar kort, en waar deze zich ook bevindt, het wordt een doelwit voor hackers, overheden en iedereen die ongeautoriseerde toegang krijgt tot de onderliggende gegevens. Hoe gecentraliseerder en herbruikbaarder die koppeling wordt, hoe groter het doelwit wordt.
De wet op leeftijdverificatie van de EU is bedoeld als een enkele, privacybesparende standaard die de juridische lappendeken in de lidstaten vervangt, maar het vertrouwen van de Commissie dat de app klaar was, bleek voorbarig te zijn. Meer dan 400 privacy- en beveiligingsonderzoekers schreven in maart aan de Commissie(nieuw venster) met het verzoek om een moratorium op de uitrol totdat de wetenschap over leeftijdverificatietechnologie is uitgekristalliseerd.






