zurück zur Übersicht Mehr Artikel

WebGL-Fingerprinting: Was deine GPU jeder Website verrät

Deine GPU wird über WebGL ausgelesen...

Jede Webseite kann deinen Browser nach dem Namen deiner Grafikkarte fragen. Kein Berechtigungsdialog, kein Cookie-Banner, nur ein paar Zeilen JavaScript. Auf einem typischen Windows-Laptop lautet die Antwort etwa ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x00002503) Direct3D11 vs_5_0 ps_5_0, D3D11), und das Widget auf dieser Seite zeigt dir, was deiner sagt.

Das ist WebGL-Fingerprinting, und deshalb spucken Fingerprint-Checker Zeilen aus wie „WebGL fingerprinting is present“ oder, schon alarmierender, „WebGL renderer info is spoofed“, also: Die Angaben zu deiner GPU seien gefälscht. Die erste Meldung trifft auf so gut wie jeden Browser der Welt zu. Die zweite heißt, dass dein Browser dabei erwischt wurde, sich selbst zu widersprechen, meistens wegen einer Erweiterung, die du installiert hast.

Die Kurzfassung: WebGL verrät deine GPU gleich doppelt: einmal als Namen (den Unmasked-Renderer-String) und einmal als Pixel (wie deine GPU eine Testszene zeichnet). „WebGL fingerprinting is present“ heißt nur, dass WebGL eingeschaltet ist, und das ist normal. „Spoofed“ heißt, dass sich diese beiden Geschichten widersprechen oder nicht zum Rest deines Browsers passen, und ein schlecht versteckter Name fällt mehr auf als einer, den du gar nicht versteckst.

Was ein WebGL-Fingerprint-Test aus deinem Browser ausliest

WebGL ist die Browser-API, mit der Webseiten über deine GPU 3D-Grafik zeichnen. Sie steckt hinter Google Maps, Browserspielen und 3D-Produktkonfiguratoren, und für diesen Job muss sie mit echter Hardware reden. Ein Fingerprinting-Script nutzt sie auf zwei Arten.

Es fragt. Die WebGL-Extension WEBGL_debug_renderer_info ergänzt zwei Konstanten, UNMASKED_VENDOR_WEBGL und UNMASKED_RENDERER_WEBGL. Der Name verspricht mehr, als drin ist: Die Extension demaskiert gar nichts, sie liefert einfach den GPU-Namen des Treibers statt eines Platzhalters wie „WebKit WebGL“. Daneben stehen Dutzende Fähigkeitswerte, etwa die maximale Texturgröße, die unterstützten Extensions und die Shader-Präzision, die sich zwischen GPU-Familien und Treiberversionen unterscheiden. Zusammen sind sie billig auszulesen und bleiben monatelang stabil.

Es schaut zu. Das Script zeichnet unsichtbar eine kleine Szene, liest die Pixel mit readPixels zurück und bildet daraus einen Hash. Verschiedene GPUs und Treiber runden Farben, überblenden Kanten und rechnen Shader-Mathematik jeweils minimal anders, also unterscheidet sich auch der Hash. Das ist dieselbe Idee wie beim Canvas-Fingerprinting, nur eine Ebene näher an der Hardware.

Die meisten stellen sich unter dem Namen etwas Vages wie „Intel-Grafik“ vor. Der echte String liest sich wie ein Datenblatt:

Was ein einziger String verrät
ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x00002503) Direct3D11 vs_5_0 ps_5_0, D3D11)
  • ANGLE: die Schicht, die WebGL in Direct3D-, Metal- oder OpenGL-Aufrufe übersetzt. Chrome zeichnet auf jedem Desktop-Betriebssystem darüber, Firefox nur unter Windows; genau dieses Format stammt von Chrome.
  • GPU-Hersteller
  • Der exakte Grafikchip, der nebenbei verrät, wie teuer der Rechner ist
  • PCI-Geräte-ID: unterscheidet Chip-Varianten, die unter demselben Namen verkauft werden
  • Direct3D: gibt es nur unter Windows
Das liefert Chrome für UNMASKED_RENDERER_WEBGL, ohne um Erlaubnis zu fragen. Die Grafik-API verrät das Betriebssystem meist schon ganz allein.

Direct3D gibt es nur unter Windows und Metal nur auf Apple-Hardware, also klärt der GPU-String auf den meisten Rechnern die Betriebssystemfrage ganz allein, egal was dein User-Agent behauptet. Es ist derselbe Quervergleich, den wir in One Browser, Five OS Claims durchgespielt haben.

Wie einzigartig ist ein WebGL-Fingerprint?

Für sich genommen weniger, als du vielleicht befürchtest. Millionen Menschen haben eine RTX 3060, und jedes M2-MacBook meldet denselben String. WebGL steckt dich in eine Hardware-Schublade, und ein Fingerprint entsteht, indem man mehrere solcher Schubladen kombiniert. Eine RTX 3060 ist weit verbreitet. Eine RTX 3060 an einem 1440p-Bildschirm, in der Amsterdamer Zeitzone, mit Niederländisch und Englisch als eingestellten Sprachen, ist schon eine recht überschaubare Runde.

Für Tracker liegt der Wert in der Beständigkeit: Du kannst den Browser wechseln und jedes Cookie löschen, deine GPU bleibt dieselbe. Forscher sind noch einen Schritt weiter gegangen. Die Studie DrawnApart von 2022 hat winzige Rechenaufgaben auf den einzelnen Ausführungseinheiten einer GPU gestoppt und konnte so Rechner mit identischer Hardware und identischem Renderer-String auseinanderhalten.

„WebGL fingerprinting is present“ ist keine Warnung

Wenn ein Checker meldet, dass WebGL-Fingerprinting vorhanden ist, heißt das genau eins: WebGL ist eingeschaltet und auslesbar. Das ist der Normalzustand jedes gängigen Browsers auf jedem Desktop und jedem Smartphone. Es ist kein Zeichen, dass etwas nicht stimmt, und vor WebGL selbst musst du dich nicht schützen: Was dich wirklich Privatsphäre kostet, ist der Fingerprint, und um den geht es im Rest dieses Artikels.

Der naheliegende Fix wäre, WebGL abzuschalten. Lass es. Damit tauschst du eine GPU, die du mit Millionen anderen teilst, gegen ein Merkmal, das fast niemand hat, und jede Seite, die mit der GPU zeichnet, geht kaputt. Ein Browser, der eine Standard-API verweigert, ist außerdem genau die Sorte Kuriosität, die dir zusätzliche CAPTCHAs einbringt.

Warum ein Checker „WebGL renderer info is spoofed“ meldet

Am häufigsten taucht die Zeile im Troubleshooter von Cloudflare Turnstile auf, unter einem Check namens „Graphics Information Appears Fake“, und die meisten stoßen darauf, wenn eine Challenge sie in eine Endlosschleife schickt, statt sie durchzulassen. Niemand kann deine GPU direkt sehen, also kann ein Checker nicht beweisen, welche Hardware du hast. Was er kann: die Angaben gegeneinander abgleichen, und gefälschte Werte überstehen das selten. Das sind die Tests. Das Widget auf dieser Seite führt die ersten vier davon aus:

  • Die Grafik-API passt nicht zum Betriebssystem. Ein Renderer-String mit Metal darin, gesendet von einem Browser, dessen User-Agent Windows sagt.
  • Hersteller und Renderer sind sich uneinig. Das Hersteller-Feld (vendor) sagt immer noch NVIDIA, weil der Spoof nur den Renderer umgeschrieben hat.
  • Die WebGL-Funktionen sind gepatcht. Um zu ändern, was getParameter zurückgibt, muss eine Erweiterung die Funktion ersetzen, und ein naiv ersetztes Built-in meldet kein [native code] mehr. Besser versteckte Patches brauchen subtilere Checks. Dieselbe Falle schnappt in unserem Bot-Erkennungstest bei Automatisierungstools zu.
  • Die Pixel ändern sich zwischen zwei Lesevorgängen. In der Praxis liefert eine echte GPU identische Pixel, wenn sie dieselbe Szene zweimal zeichnet. Manche Anti-Fingerprinting-Erweiterungen mischen bei jedem Auslesen frisches Zufallsrauschen hinein, sodass zwei Durchgänge zwei verschiedene Hashes ergeben. Diese Instabilität ist seltener als jede GPU auf dem Markt.
  • Der Name passt nicht zu den Pixeln. Anti-Fraud-Anbieter können deine Render-Ausgabe mit dem vergleichen, was bekannte Geräte erzeugen. Wer eine RTX 3060 behauptet, aber wie eine integrierte Intel-Grafik zeichnet, wird vom Render-Hash verraten. Ein einzelner Browser kann diesen Check nicht ausführen, deshalb lässt das Widget ihn aus.

Schalte zwischen den Setups um und sieh, welche Erkennungszeichen jedes davon auslöst:

Was ein Spoof-Checker sieht
Gemeldeter Renderer ANGLE (Apple, ANGLE Metal Renderer: Apple M2, Unspecified Version)
  • auffällig
    Grafik-API passt zum Betriebssystem
    Metal bei einem Windows-User-Agent
  • auffällig
    Hersteller passt zum Renderer
    Hersteller sagt immer noch NVIDIA
  • auffällig
    WebGL-Funktionen sind nativ
    getParameter wurde ersetzt
  • bestanden
    Gleiche Zeichnung, gleiche Pixel
    zwei Durchgänge, ein Hash
Der Namenstausch löst auf einen Schlag drei Checks aus: Der neue Name gehört zu einem anderen Betriebssystem, das Hersteller-Feld wurde vergessen, und der Tausch selbst ist eine gepatchte Funktion.

In beiden gefälschten Setups ist die GPU völlig in Ordnung; jeder Treffer geht aufs Konto des Spoofings. Wenn du die „spoofed“-Warnung bekommen hast, ohne je etwas fälschen zu wollen, durchsuch deine Erweiterungsliste nach einem WebGL- oder Canvas-„Defender“. Das ist der übliche Übeltäter, und Cloudflares Troubleshooter nennt einen sogar direkt beim Namen: WebGL Fingerprint Defender.

Wenn die Warnung ein Fehlalarm ist

Nicht jeder Treffer heißt, dass jemand an deinem Browser herumgebastelt hat. Auch ein paar ganz gewöhnliche Setups schlagen bei Checkern an:

  • Remote Desktop und virtuelle Maschinen. Ohne echte GPU fällt der Browser auf einen Software-Renderer wie llvmpipe oder Microsofts Basic Render Driver zurück oder verliert WebGL komplett. Server, auf denen Bots laufen, sehen genauso aus, also begegnen Checker dem mit Misstrauen.
  • Laptops mit Hybrid-Grafik. Ein Laptop mit integrierter und dedizierter Grafik kann je nach Energieeinstellungen oder zugewiesener GPU unterschiedliche Grafikkarten melden.
  • Browser, die dich absichtlich schützen. Safari meldet jeder Seite eine generische „Apple GPU“. Firefox vergröbert den Renderer-Namen auf eine breite GPU-Familie. Brave gibt allen Nutzern denselben generischen GPU-Namen und variiert andere WebGL-Ausgaben pro Seite ein wenig, was Brave „Farbling“ nennt. Gute Checker haben diese Browser auf der Allowlist. Nachlässige markieren sie trotzdem.

Der Unterschied zu einem Spoof ist die Konsistenz. Safari mit „Apple GPU“ auf einem Apple-Gerät ist eine ehrliche Antwort, die viele teilen. Ein Windows-Browser, der eine Apple-GPU behauptet, ist ein Widerspruch.

So änderst oder blockierst du deinen WebGL-Fingerprint

  1. Lass WebGL an. Abschalten macht dich auffälliger, nicht sicherer, und legt echte Seiten lahm.
  2. Wirf WebGL-Spoofing-Erweiterungen raus. Namenstauscher und Rauschgeneratoren erzeugen genau die Widersprüche, nach denen Checker suchen. Wenn das Widget oben gepatchte Funktionen oder instabile Pixel meldet, ist eine Erweiterung der übliche Verdächtige.
  3. Wenn du eine andere Identität brauchst, ändere jeden Teil davon. Wer mehrere Accounts für Ad-Verification, E-Commerce oder Social Media betreibt, braucht in jedem Profil eine GPU, die zum Betriebssystem passt, einen Hersteller, der zum Renderer passt, und Pixel, die zur GPU passen. Das lässt sich in JavaScript kaum fälschen, weshalb Anti-Detect-Browser es direkt in der Engine erledigen. Incogniton gibt jedem Profil auf Browser-Ebene eine konsistente WebGL-Identität, ohne gepatchte Funktionen, die ein Checker finden könnte.

Lass danach den kompletten Browser-Scan laufen und sieh, wie deine GPU zu allem anderen passt, was dein Browser meldet, von der Zeitzone bis zu den Schriftarten.

Incogniton-Logo

Bring deine Privatsphäre aufs nächste Level

Pfeil