Discord/Twitch/Snapchat-Altersverifizierung umgehen
(age-verifier.kibty.town)- Ein Skript, das die Altersverifizierungsverfahren mehrerer Plattformen automatisch als erwachsen besteht
- Wenn man Code in die Discord-Konsole einfügt und ausführt, sendet es automatisch eine API-Anfrage an
/age-verification/verifyund wechselt zur Seite für den abgeschlossenen Verifizierungsvorgang - Auch auf anderen Plattformen wie Twitch, Kick und Snapchat ist mit derselben Methode eine Verifizierung möglich, indem die QR-Code-URL eingegeben wird
- Dieses Tool missbraucht die Verarbeitungsstruktur für Gesichtsdaten des k-id-Systems, um auch ohne echtes Gesicht legitime Metadaten zu erzeugen
- Es wurde so entwickelt, dass es im Zuge der globalen Ausweitung von Altersverifizierungen das Prüfverfahren umgeht, indem AES-GCM-Verschlüsselung und vorhersagbare Datenstrukturen nachgebildet werden
Verifizierungsverfahren bei Discord
- Die Methode besteht darin, ein bestimmtes Skript in die Entwicklerkonsole (F12) der Discord-Web-App einzufügen und auszuführen
- Das Skript extrahiert den Webpack-Modul-Cache von Discord, findet den internen API-Client und sendet eine Anfrage an den Endpunkt
/age-verification/verify - Die als Ergebnis erhaltene
verification_webview_urlwird zuage-verifier.kibty.townweitergeleitet
- Das Skript extrahiert den Webpack-Modul-Cache von Discord, findet den internen API-Client und sendet eine Anfrage an den Endpunkt
- Der Nutzer muss nach dem Lösen des Captchas warten, bis die Seite „success“ anzeigt; dann ist die Verifizierung abgeschlossen
- Dadurch wird das Discord-Konto als altersverifiziert angezeigt
Verifizierung auf anderen Plattformen (Twitch, Kick, Snapchat usw.)
- Auf der Altersverifizierungsseite der jeweiligen Plattform die Option „selfie“ auswählen und die angezeigte URL des QR-Codes kopieren
- Diese URL in das Eingabefeld von
age-verifier.kibty.towneinfügen und auf den Button „verify“ klicken - Danach läuft der Verifizierungsprozess automatisch weiter und zeigt eine Erfolgsmeldung an
Funktionsweise
- Das von Discord verwendete k-id-System zur Altersverifizierung sendet keine Gesichtsaufnahmen an den Server, sondern nur gesichtsbezogene Metadaten und Details zum Prozess
- Durch diese Struktur ist es möglich, die Verifizierung auch ohne echtes Gesicht zu bestehen, wenn glaubwürdig wirkende Metadaten manipuliert und übermittelt werden
- Nachdem in der Vergangenheit der k-id verifier von amplitudes veröffentlicht wurde, verschärfte der Partner faceassure zwar die Prüfung, doch dieses Tool umgeht sie nun auf neue Weise
Technische Detailschritte
- Schritt 1: Reproduktion der Verschlüsselungsparameter
- Im Vergleich zu legitimen Anfragen wurde festgestellt, dass
encrypted_payload,auth_tag,timestampundivfehlen - Bei der AES-GCM-Verschlüsselung wird der Schlüssel aus
nonce + timestamp + transaction_idmittels HKDF(SHA-256) abgeleitet - Durch Nachbildung derselben Struktur werden die fehlenden Parameter erzeugt
- Im Vergleich zu legitimen Anfragen wurde festgestellt, dass
- Schritt 2: Manipulation der Vorhersagedaten
- Als selbst eine perfekte Nachbildung der Verschlüsselung scheiterte, wurde festgestellt, dass die Verifizierung von den „prediction arrays“ (outputs, primaryOutputs, raws) abhängt
- Auf Basis der
raws-Daten werden mit z-score Ausreißer entfernt und darausoutputssowieprimaryOutputserzeugt - Zusätzlich werden die folgenden Bedingungen geprüft
- Für die Werte
xScaledShiftAmtundyScaledShiftAmtsind jeweils nur zwei Möglichkeiten zulässig - Der Medienname (Kamera) muss mit der tatsächlichen Geräteliste übereinstimmen
- Der Abschlusszeitpunkt des Status muss mit der Timeline übereinstimmen
- Für die Werte
- Der Open-Source-Code, der all diese Prozesse implementiert, wurde veröffentlicht und kann von jedem eingesehen werden
Veröffentlichung und Hintergrund
- Der Entwickler bedankt sich bei xyzeva und Dziurwa sowie bei amplitudes, die bereits früher an verwandten Arbeiten beteiligt waren
- Es wird erklärt, dass Discord die globale Altersverifizierung im März flächendeckend einführen will und deshalb eine neue Methode zur Umgehung der Prüfung erforscht wurde
1 Kommentare
Hacker-News-Kommentare
Die wirklich robuste Methode besteht darin, statt einer echten Webcam einen künstlichen Videoeingang zu erzeugen.
Ich glaube nicht, dass irgendeine Plattform das verhindern kann.
Selbst wenn die Plattform einen schwer zu fälschenden Kameraeingang wie bei einem Smartphone verlangt, stellt man einfach eine Kamera vor einen hochauflösenden Bildschirm.
Dieses Katz-und-Maus-Spiel wird nicht lange dauern.
Unvollkommene altersbasierte Verifikation per Video-Selfie nützt am Ende eher allen.
Vernünftige Menschen müssen keinen Führerschein oder Reisepass hochladen, und für Plattformen wird es leichter, Nutzer zu halten.
Pornoseiten können Benutzerkonten anlegen, um Tracking und Werbeeinnahmen zu steigern.
Politiker können verkünden, dass sie „eine Altersbeschränkung eingeführt haben“, und Eltern fühlen sich sicher, dass ihre Kinder keine Pornos schauen.
Am Ende ist es eine Situation, in der alle gewinnen.
Wahrscheinlich werden auch solche Verifikationsverfahren letztlich in diese Richtung gehen.
Möglicherweise war das einer der Gründe, warum Google auf Play-Store-exklusive Apps gedrängt hat: um eine solche verifizierbare Softwarekette aufzubauen.
Letztlich ist das nur ein Problem, bei dem man einen Schalter umlegt.
Zusammen mit 3D-Mapping würden einfache Tricks wie das Filmen eines Bildschirms nicht mehr funktionieren.
Das Problem ist, dass Altersverifizierungsdienste wie bei Discord es nicht ernsthaft versuchen.
Ich werde das Spiel einfach nicht mitspielen und die Plattform nicht mehr nutzen.
Diese Methode hat drei Probleme.
Das ist ein großartiges Beispiel für Reverse Engineering und zeigt, wie schwer es ist, Verifikation ohne Eingriff in die Privatsphäre umzusetzen.
Da der Code offengelegt wurde, trifft das Problem mit der Ausführung beliebigen Codes (#3) hier nicht zu.
Falls Unternehmen mit invasiveren Methoden (#2) reagieren, können Nutzer jederzeit zu anderen Plattformen wechseln.
Ich halte das für eine ziemlich clevere Idee.
Discord scheint die Altersverifikation gerade so weit gelockert zu haben, dass man Regulierungsbehörden sagen kann, man tue „etwas zum Schutz von Kindern“.
Wenn Regierungen das aber ernsthaft überwachen, wird dieser Ansatz nicht lange halten.
Einige Länder verlangen bereits stärkere biometrische Verifikation, und manche Dienste wechseln zu appbasierter Verifikation auf dem Smartphone.
Einfache JavaScript-basierte Tricks werden immer weniger funktionieren.
Ich würde empfehlen, die Code-Ausführung in eine IIFE zu packen.
In Safari auf macOS wird top-level await nicht unterstützt, daher funktioniert es dort nicht.
Siehe dazu caniuse.com/wf-top-level-await.
Es hinkt bereits seit fünf Jahren hinterher.
Ich habe es ausprobiert und wurde zu https://age-verifier.kibty.town/webview?url=null weitergeleitet,
mit der Meldung
{"error":"error parsing webview url"}.Mein Discord-Konto ist wohl in einem A/B-Test und verwendet stattdessen den anderen Verifikationsanbieter Persona.
Mit einer Suche findet man mehr Informationen dazu.
Es funktioniert tatsächlich.
Ich habe von Discord die Meldung erhalten, dass ich „als Erwachsenengruppe klassifiziert“ wurde.
(Erzählerstimme) Und genau in diesem Moment wurde mir klar, dass mein Konto gehackt worden war ;)
Ich hoffe, dass mein 11 Jahre altes Konto dadurch keine Probleme bekommt, aber wenn man mein Gesicht oder einen Ausweis verlangt, werde ich einfach kündigen.
Ich verstehe nicht, warum die junge Generation so sehr an Diensten festhält, die ihr feindlich gegenüberstehen.
Ist die Bequemlichkeit, auf einer unbeliebten Plattform zu bleiben, größer als die Mühe, Alternativen zu suchen?
Vielen jungen Leuten heute sind sogar Terminal oder Dateipfade fremd.
Suchen können sie, aber Alternativen selbst einzurichten ist etwas ganz anderes.
Vor allem fehlt oft überhaupt das Bewusstsein, dass Alternativen existieren könnten.
Offene Plattformen wie Matrix haben funktional noch Defizite, und Discord ist derzeit die am wenigsten schlechte Option.
Meine Freunde sind dort, also bin ich auch dort.
Jedes Mal, wenn man die Plattform wechselt, schrumpft die Mitgliederzahl und die Gemeinschaft zerfällt.
Der „geringe Aufwand“ bedeutet in der Praxis, eine Community zu zerstören.
Selbst wenn sie andere Plattformen verwenden, bleiben sie am Ende allein zurück.
Es ist fast unmöglich, alle gleichzeitig zum Wechsel zu bewegen.
Ich habe auf Discord das Captcha bestanden,
aber dann erschien der Fehler
{"error":"failed to execute k-id privately action (status=404)"}.Ich bin ganz offensichtlich erwachsen, und dieses Verfahren ist einfach absurd.
Es ist mir egal, wenn ich gesperrt werde.
Zusammenfassung verwandter Meldungen
Das Katz-und-Maus-Spiel bei digitaler Altersverifikation ist eine enorme regulatorische Belastung.
Wenn es so leicht zu umgehen ist, erfüllen Plattformen am Ende nur eine regulatorische Checkbox,
und die tatsächliche Vertrauensbasis ist äußerst schwach.
Unternehmen bevorzugen ihn aber nicht, weil sie dabei keine verifizierten Daten erwachsener Nutzer erhalten.
Siehe dazu Googles Blog zu Age Assurance Europe.
Der Zweck solcher Systeme ist nicht absolute Abschottung, sondern genug Reibung hinzuzufügen, damit die breite Masse sie nicht leicht umgehen kann.