Saltar al contenido principal
de/blog/obscura/research/uncontrollable/browser-features-quirks/

obscura/research/uncontrollable/browser-features-quirks

6 Min. Lesezeit

Kategorie: Browser-Engine / Web-Plattform


1. Beschreibung

Jede Browser-Engine (Blink/Chrome, Gecko/Firefox, WebKit/Safari) implementiert eine andere Teilmenge von Web-APIs und CSS-Features. Darüber hinaus hat jede einzigartige Rendering-Eigenarten, Standardeinstellungen und Verhaltensmuster. Diese sind dem Browser inhärent – kein Proxy kann sie ändern, da sie in die Browser-Binärdatei kompiliert sind.


2. Vektoren

2.1 Web-API-Feature-Unterstützung

Der Browser legt ~100+ Feature-Tests offen, die Fingerprinting-Skripte aufzählen:

Hochwertige Features zur Identifikation:

API Chrome Firefox Safari Anmerkungen
WebGL 2 Alle modern
WebGPU (Flag) Nur Chrome
WebUSB Nur Chrome
Web Bluetooth Nur Chrome
Web NFC Android Nur Chrome
Web Serial Nur Chrome
Web Share Variiert je nach Plattform
Battery API Nur Firefox
Speech Synthesis Variiert je nach Stimme
GamePad API Teilweise Safari eingeschränkt
MathML Nur Firefox/Safari
Web Workers Alle, aber Shared Workers variieren
Service Workers Alle modern
CSS Container Queries Safari spät übernommen
CSS Subgrid Safari spät übernommen

Entropie: ~10-15 Bits (aber stark korreliert – reduziert auf Browser-Familie + Version)

2.2 CSS-Feature-Unterstützung

Hunderte von CSS-Eigenschaften und -Werten variieren je nach Browser:

/* Test via @supports */
@supports (backdrop-filter: blur(1px)) { /* Chrome + Safari */ }
@supports (-webkit-backdrop-filter: blur(1px)) { /* Safari Legacy */ }
@supports (accent-color: red) { /* Chrome 93+, Firefox 92+, Safari 15.4+ */ }
@supports (container-type: inline-size) { /* Chrome 105+, Firefox 110+, Safari 16+ */ }

Entropie: ~8-12 Bits (identifiziert Browser-Engine + Hauptversion)

2.3 Browser-Implementierungs-Eigenarten

Jeder Browser hat einzigartiges Rendering-Verhalten:

Eigenart Beispiel Browser
Scrollbalkenbreite 12px vs. 15px vs. 0px (Overlay) OS-abhängig*
Formularelement-Styling Button-Padding, Border-Radius Engine-spezifisch
Unicode-Darstellung Emoji-Unterstützungsversion OS+Browser abhängig
<details>-Verhalten Öffnen/Schließen-Animation Engine-spezifisch
Date()-Parsing Nicht standardisierte Datumsformate Engine-spezifisch
JSON.stringify()-Reihenfolge Eigenschafts-Aufzählungsreihenfolge Engine-spezifisch (in ES6 behoben)
performance.now()-Auflösung 5μs vs. 100μs vs. 1ms Chrome vs. Firefox vs. Safari

*Scrollbalkenbreite verrät OS: Windows=12-17px, macOS=variabel (dünn/Overlay), Linux=variiert

2.4 Schriftdarstellungsmetriken

Selbst mit denselben installierten Schriften rendern unterschiedliche OS/Browser-Kombinationen Text unterschiedlich:

const span = document.createElement('span')
span.textContent = 'mmmmmmmmmmlli'
document.body.appendChild(span)
const width = span.getBoundingClientRect().width
// Breite variiert je nach OS-Schriftdarstellungs-Engine (FreeType, CoreText, DirectWrite)

Entropie: ~4-6 Bits

2.5 Standard-Browserkonfiguration

Browser werden mit unterschiedlichen Standardeinstellungen ausgeliefert:

Einstellung Chrome Firefox Safari
Standardschrift Times New Roman Times New Roman Times
Standardschriftgröße 16px 16px 16px
Minimale Schriftgröße 0px 0px 12px (variiert)
Standardsprache OS-Gebietsschema OS-Gebietsschema OS-Gebietsschema
Automatisches Bildladen An An An
JavaScript An An An
Cookies Erlaubt Erlaubt Erlaubt (im privaten Modus blockiert)

2.6 Chrome-spezifisch: User-Agent-Reduzierung

Chrome reduziert schrittweise User-Agent-Informationen. Die neue navigator.userAgentData-API bietet strukturierte Daten:

  • Markenliste (z. B. "Google Chrome";v="120")
  • Plattform (z. B. "Windows", "macOS")
  • Mobil-Flag
  • Architektur, Bitanzahl, Modell, Plattformversion (kann zurückgehalten werden)

Bemerkenswert: Safari implementiert userAgentData nicht, und Firefox hat erst vor Kurzem damit begonnen. Dies ist selbst ein Signal.


3. Stärken des Angreifers

Stärke Erklärung
Kann nicht geändert werden Browser-Features sind in den Browser kompiliert
Keine Berechtigung erforderlich Feature-Tests werden still ausgeführt
Schnelle Aufzählung 100+ Features in <10ms getestet
Stabil über Versionen Features ändern sich selten innerhalb einer Browserversion
Binärer (Ja/Nein)-Vektor Kann leicht zu einem eindeutigen Hash kombiniert werden

4. Schwächen des Angreifers

Schwäche Erklärung Ausnutzbar?
Niedrige individuelle Entropie Einfache Browser-Identifikation; kein einzelner Benutzer Nein
DNS-blockierbar Feature-Erkennungsskripte müssen vom Server geladen werden Ja
Korreliert Alle Chrome-120-Benutzer sehen gleich aus Nein
Ändert sich mit Updates Browser-Updates ändern Feature-Sets Gelegentlich
Privatsphärenmodus beeinflusst Privat/Inkognito modifiziert einige Features Teilweise

5. Erkennung von Manipulation

Technik Funktionsweise
Feature-Inkonsistenz Chrome-Features behaupten, aber Firefox-Feature-Set zurückgeben
Fehlende erwartete Features Chrome ohne WebUSB ist verdächtig
Timing-Anomalien Dauert die Feature-Aufzählung zu lange?
Zu sauberer Feature-Vektor Echte Browser haben einige seltene Features nicht

6. Abschwächungen für Obscura

6.1 Was Obscura tun kann

Abschwächung Effektivität Erkennbarkeit Implementierung
DNS-Blockierung von Fingerprinting-Domains Hoch (verhindert Aufzählung) Niedrig Blocklisten-Verwaltung
Feature-Override-JS injizieren Niedrig (zu viele Features) Hoch Einzelne APIs überschreiben
Akzeptieren – Browser-Features sind niedrige Entropie Passiv Keine Restrisiko dokumentieren

6.2 Was Obscura nicht tun kann

Kann nicht Warum
Features hinzufügen, die der Browser nicht hat Kann Firefox nicht dazu bringen, WebUSB zu unterstützen
Features entfernen, die der Browser hat Kann Features nicht vom Proxy deaktivieren (Benutzer kann per Flags)
CSS-Rendering ändern Rendering ist in der Browser-Engine
Schriftmetriken ändern Schriftdarstellung ist im OS/Browser

6.3 Empfohlener Ansatz

1. DNS-Blockierung von Fingerprinting-Domains  (verhindert Feature-Aufzählung – beste Verteidigung)
2. Profilkonsistenz                              (zumindest behaupteter Browser sollte echten Features entsprechen)
3. Restrisiko akzeptieren                        (Feature-Vektor identifiziert hauptsächlich Browserversion, nicht Benutzer)

7. Forschungsreferenzen

  • Eckersley, P. (2010). "How Unique Is Your Web Browser?" PETS 2010.
  • Mulazzani, M. et al. (2013). "Fast and Reliable Browser Fingerprinting." ACSAC 2013.
  • Laperdrix, P. et al. (2020). "Browser Fingerprinting: A Survey." ACM TOIT.
  • Modernizr (2026). "Feature detection library." github.com/modernizr/modernizr.
  • BrowserLeaks (2026). "Features Detection." browserleaks.com/features.