I onsdags avtäckte Europeiska kommissionen en mobilapp(nytt fönster) utformad för att låta människor bevisa sin ålder online utan att dela personuppgifter med plattformar. EU-tjänstemän sade att appen var redo, uppfyllde de högsta standarderna för integritet och pekade på dess öppna källkod som ett bevis på transparens.

Inom loppet av några timmar började dock säkerhetsforskare granska den öppna källkoden. På torsdagen hade säkerhetskonsulten Paul Moore kringgått appens skydd på under två minuter(nytt fönster).

En skärmdump av EU:s app för åldersverifiering

Andra bekräftade hans fynd. Appens kontroller för hastighetsbegränsning lagrades i en redigerbar fil, biometrisk autentisering kunde stängas av med en enkel konfigurationsändring och känsliga inloggningsuppgifter var tillgängliga utan säkert hårdvaruskydd.

Kommissionen tonade ner fynden och kallade versionen för en demo. Både Moore och den franska kryptografen Olivier Blazy invände och berättade för Politico(nytt fönster) att de testade den senaste versionen av koden när de hittade bristerna.

Senare meddelade kommissionen att problemet var åtgärdat, men incidenten visar fortfarande hur sårbara dessa system för åldersverifiering är.

Vad EU:s app för åldersverifiering gör och vad som gick fel

EU:s app för åldersverifiering låter människor verifiera sin ålder med hjälp av ett pass, ett nationellt ID-kort eller en betrodd leverantör som en bank. Plattformar kan sedan be appen kontrollera om någon är över en viss ålder utan att få åtkomst till underliggande personuppgifter, även känt som zero-knowledge proof.

Implementeringen undergrävde den designen. EU:s app för åldersverifiering lagrade en krypterad PIN-kod i en redigerbar konfigurationsfil på enheten, separat från det identitetsvalv som skyddar känsliga uppgifter. Genom att ta bort några värden och starta om appen kan en angripare ange en ny PIN-kod samtidigt som inloggningsuppgifter från en tidigare profil återanvänds.

Kontrollerna för hastighetsbegränsning som förhindrar upprepade gissningar lagrades som en enkel räknare i samma fil, en som kan återställas till noll, vilket raderar alla register över misslyckade försök. Biometrisk autentisering kontrollerades av en enda boolesk flagga; genom att ändra den från sant till falskt hoppades kontrollen över helt och hållet.

Byggd för att kontrollera ålder, men inte på ett säkert sätt

Efter att forskare använt koden för att exponera dess brister, omformulerade tjänstemännen appen till en demoversion.

Flera utvecklare noterade att känsliga data borde ha lagrats i en säker enklav, ett hårdvarubaserat skydd som finns på moderna smartphones och som gör dessa attacker mycket svårare.

Men sårbarheterna blottlägger ett problem som sträcker sig bortom just denna app. Åldersverifiering är inte säker i sin utformning, eftersom den kräver att en verklig identitet kopplas till en online-handling. Den länken måste lagras någonstans, även om det bara är kortvarigt, och var den än finns blir den ett mål för hackare, regeringar och alla som får obehörig åtkomst till de underliggande uppgifterna. Ju mer centraliserad och återanvändbar den länken blir, desto större blir måltavlan.

EU:s lag om åldersverifiering är tänkt att vara en enhetlig standard för att bevara integriteten som ersätter det juridiska lapptäcke som växer fram i medlemsstaterna, men kommissionens förtroende för att appen var redo visade sig vara förhastat. Mer än 400 forskare inom integritet och säkerhet skrev till kommissionen i mars(nytt fönster) och bad om ett moratorium för driftsättningen tills vetenskapen kring åldersverifieringsteknik har stabiliserats.