W środę Komisja Europejska zaprezentowała aplikację mobilną(nowe okno), która ma pozwalać użytkownikom na potwierdzanie wieku online bez konieczności udostępniania danych osobowych platformom. Urzędnicy UE stwierdzili, że aplikacja jest gotowa, spełnia najwyższe standardy prywatności i wskazali na jej otwarty kod źródłowy jako dowód przejrzystości.

Jednak w ciągu zaledwie kilku godzin badacze bezpieczeństwa zaczęli analizować kod źródłowy aplikacji. Do czwartku konsultant ds. bezpieczeństwa Paul Moore obešel zabezpieczenia aplikacji w niecałe dwie minuty(nowe okno).

Zrzut ekranu unijnej aplikacji do weryfikacji wieku

Inni potwierdzili jego ustalenia. Mechanizmy ograniczania liczby żądań (rate-limiting) aplikacji były przechowywane w edytowalnym pliku, uwierzytelnianie biometryczne można było wyłączyć prostą zmianą konfiguracji, a wrażliwe dane logowania były dostępne bez sprzętowych zabezpieczeń.

Komisja bagatelizowała te odkrycia, nazywając wydaną aplikację wersją demonstracyjną. Zarówno Moore, jak i francuski kryptograf Olivier Blazy nie zgodzili się z tym, mówiąc redakcji Politico(nowe okno), że testowali najnowszą wersję kodu, gdy znaleźli luki.

Później Komisja poinformowała, że problem został naprawiony, ale incydent ten wciąż pokazuje, jak podatne na ataki są systemy weryfikacji wieku.

Co robi unijna aplikacja do weryfikacji wieku i co poszło nie tak

Unijna aplikacja do weryfikacji wieku pozwala użytkownikom zweryfikować swój wiek za pomocą paszportu, dowodu osobistego lub zaufanego dostawcy, takiego jak bank. Platformy mogą wtedy poprosić aplikację o sprawdzenie, czy dana osoba ukończyła określony rok życia, bez dostępu do bazowych danych osobowych – jest to rozwiązanie znane jako dowód z wiedzą zerową (zero-knowledge proof).

Sama implementacja podważyła jednak te założenia projektowe. Unijna aplikacja do weryfikacji wieku przechowywała zaszyfrowany PIN w edytowalnym pliku konfiguracji na urządzeniu, oddzielnie od sejfu tożsamości, w którym znajdują się wrażliwe dane. Usuwając kilka wartości i uruchamiając aplikację ponownie, napastnik może ustawić nowy PIN, korzystając jednocześnie z danych logowania z poprzedniego profilu.

Mechanizmy ograniczania liczby żądań, które zapobiegają wielokrotnym próbom odgadnięcia danych, były przechowywane w tym samym pliku jako zwykły licznik, który można zresetować do zera, usuwając wszelkie zapisy nieudanych prób. Uwierzytelnianie biometryczne było kontrolowane przez pojedynczą flagę logiczną (boolean); zmiana jej wartości z true na false pozwalała całkowicie pominąć weryfikację.

Stworzona do sprawdzania wieku, ale nie w bezpieczny sposób

Gdy badacze wykorzystali kod, aby ujawnić luki, urzędnicy uznali aplikację za wersję demo.

Wielu programistów zauważyło, że wrażliwe dane powinny być przechowywane w bezpiecznej enklawie – zabezpieczeniu na poziomie sprzętowym dostępnym w nowoczesnych smartfonach, które znacznie utrudnia tego typu ataki.

Jednak te luki ujawniają problem wykraczający poza tę konkretną aplikację. Weryfikacja wieku nie jest bezpieczna ze swojej natury, ponieważ wymaga powiązania prawdziwej tożsamości z działaniem online. To powiązanie musi być gdzieś przechowywane, nawet przez chwilę, a wszędzie tam, gdzie się znajduje, staje się celem dla hakerów, rządów i każdego, kto uzyska nieautoryzowany dostęp do danych źródłowych. Im bardziej scentralizowane i uniwersalne staje się to powiązanie, tym większy staje się cel.

Unijne przepisy dotyczące weryfikacji wieku mają być jednolitym, chroniącym prywatność standardem, który zastąpi prawną mozaikę powstającą w państwach członkowskich, ale pewność Komisji co do gotowości aplikacji okazała się przedwczesna. Ponad 400 badaczy prywatności i bezpieczeństwa napisało w marcu do Komisji(nowe okno), prosząc o moratorium na wdrożenie technologii, dopóki nauka dotycząca systemów weryfikacji wieku nie zostanie ugruntowana.