Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
brash — Attacco DoS al Browser Chromium tramite sfruttamento di document.title | Kitploit
Strumenti/GitHubGitHub/jofpin/brash
Framework di ExploitAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebPenetration Testing
GitHubjofpin/brash

brash

Attacco DoS al Browser Chromium tramite sfruttamento di document.title

Vedi Repository
18061511 mesi faRevisionato da Kitploit
Sito web

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Brash

Brash di Jose Pino

Attacco DoS al Browser Chromium tramite lo sfruttamento di document.title

Brash è una vulnerabilità critica in Blink, il motore di rendering che alimenta i browser basati su Chromium di Google. Consente a qualsiasi browser Chromium di collassare in 15-60 secondi sfruttando un difetto architetturale nel modo in cui vengono gestite alcune operazioni DOM.

Il vettore d'attacco nasce dalla completa assenza di rate limiting sugli aggiornamenti dell'API document.title. Ciò consente di iniettare milioni di mutazioni DOM al secondo e, durante questo tentativo di iniezione, satura il thread principale, interrompendo l'event loop e causando il collasso dell'interfaccia. L'impatto è significativo: consuma elevate risorse CPU, degrada le prestazioni complessive del sistema e può bloccare o rallentare altri processi eseguiti contemporaneamente. Colpendo i browser Chromium su desktop, Android e ambienti embedded, questa vulnerabilità espone oltre 3 miliardi di persone su internet a un denial of service a livello di sistema.

STATO: Operativa
VERSIONI COLPITE: Chromium ≤ 143.0.7483.0 (testate: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] L'exploit è attualmente operativo. Una volta corretta la vulnerabilità, questo codice smetterà di funzionare. In ogni caso, scoprire questo difetto architetturale e completare l'intero percorso di ricerca, documentazione e progettazione per condividere qualcosa di impattante con il mondo è stato un viaggio incredibilmente gratificante.

Test

Sono stati testati 11 browser principali su macOS, Windows e Linux per validare l'impatto della vulnerabilità.

Vulnerabili (Chromium/Blink)

Tutti i browser basati su Chromium sono vulnerabili perché il difetto risiede nel cuore del motore di rendering Blink:

  • Chrome — crash in 15-30 secondi
  • Edge — crash in 15-25 secondi
  • Vivaldi — crash in 15-30 secondi
  • Arc Browser — crash in 15-30 secondi
  • Dia Browser — crash in 15-30 secondi
  • Opera — crash in ~60 secondi
  • Perplexity Comet — crash in 15-35 secondi
  • ChatGPT Atlas — crash in 15-60 secondi
  • Brave — crash in 30-125 secondi

Non vulnerabili (che usano altri motori)

  • Firefox (motore Gecko) — immune all'attacco
  • Safari (motore WebKit) — immune all'attacco
  • Browser iOS (usano tutti WebKit) — immuni all'attacco grazie alla politica obbligatoria di Apple che richiede a tutti i browser iOS di usare WebKit come motore di rendering, rendendo impossibili i browser basati su Chromium su iOS

Come funziona

Brash sfrutta un difetto architetturale fondamentale nel motore di rendering Blink: l'assenza di throttling sugli aggiornamenti di document.title. L'attacco opera in tre fasi critiche:

1. Generazione degli hash (Preparazione)

Genera 100 stringhe esadecimali uniche di 512 caratteri e le memorizza in memoria prima di iniziare l'attacco.

Perché pre-caricarle invece di generarli in tempo reale?

Perché generare costantemente nuove stringhe consuma tempo CPU in operazioni matematiche. Quel tempo è critico: ogni millisecondo speso per generare stringhe è tempo NON usato per bombardare il browser con aggiornamenti di document.title.

Avendo 100 stringhe già caricate in memoria:

  • Attacco più veloce: nessuna pausa per generare stringhe
  • CPU focalizzata: il 100% delle risorse dedicato a saturare il browser
  • Meno pause di sistema: impedisce al garbage collector di attivarsi costantemente
  • Evita il rilevamento: le 100 stringhe diverse impediscono al browser di mettere in cache o ottimizzare gli aggiornamenti

Di conseguenza, otteniamo la massima velocità di iniezione con il massimo consumo di memoria per aggiornamento.

// Generates high-entropy unique IDs
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. Iniezione a raffiche (Attacco)

Esegue raffiche configurabili di aggiornamenti del titolo. Con la configurazione predefinita (burst: 8000, interval: 1ms), tenta di iniettare circa 24 milioni di aggiornamenti al secondo, ed è durante questo tentativo che inizia il collasso del browser.

// Triple-update pattern: maximizes rendering pipeline thrashing
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Each burst performs 3 sequential updates
    }
    this.counter += 0x3;
}

3. Saturazione del thread dell'interfaccia (Collasso)

Gli aggiornamenti continui saturano il thread principale del browser, impedendo l'elaborazione di altri eventi:

Sequenza temporale del collasso:

  • 0-5s: saturazione iniziale del thread dell'interfaccia, consumo estremo di CPU
  • 5-10s: scheda completamente congelata, impossibile da chiudere
  • 10-15s: collasso del browser o finestra di dialogo "Pagina non risponde"
  • 15-60s: terminazione forzata necessaria (nei browser basati su Chromium)

Perché funziona?

Blink elabora ogni modifica di document.title in modo sincrono sul thread principale senza rate limiting. Questo crea un collo di bottiglia che:

  • Blocca l'event loop
  • Impedisce l'elaborazione degli input utente
  • Satura la memoria con stringhe lunghe
  • Interrompe il compositor e la pipeline di rendering
  • Provoca il thrashing dei processi del browser

Demo e PoC

Per comprendere appieno l'impatto di Brash, puoi sperimentare l'exploit in diversi contesti, da una demo live controllata alla tua implementazione personale. Ogni opzione è progettata per diversi livelli di interazione e comprensione tecnica.

1. Demo live

Il modo più rapido per vedere Brash in azione. Visita https://brash.run

Per vedere l'exploit senza interfaccia grafica, visita https://brash.run/hidden-live-demo.html. Questa versione esegue l'iniezione in modo invisibile, simulando un attacco reale.

2. Demo locale

Se preferisci eseguire la demo nel tuo ambiente, la directory exploit-demo/ inclusa nel repository ti consente di:

  • Controlli per regolare l'intensità dell'attacco in tempo reale
  • Contatore visivo degli aggiornamenti al secondo
  • Tre modalità predefinite: moderata, aggressiva ed estrema
  • Osservazione del collasso progressivo del browser

Basta aprire exploit-demo/index.html in un qualsiasi browser Chromium e configurare i valori burst e interval prima di iniziare.

  • burstSize: modifiche del titolo per intervallo (più alto = più aggressivo)
  • interval: millisecondi tra le raffiche (più basso = più aggressivo)

3. Implementa il tuo PoC

Per integrare Brash nei tuoi test di sicurezza o nella tua ricerca, includi lo script e configura l'attacco:

Includi lo script:

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

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

Utilizzo dell'API:

// 1. Immediate attack
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Delay in seconds (default)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 seconds
});

// 3. Delay with strings
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // or "5000ms" or "3m"
});

// 4. Scheduled attack
Brash.run({
    burstSize: 8000,
    interval: 1,
    scheduled: "2025-10-18T09:30:00"
});

Configurazioni di intensità:

// Moderate: controlled observation
// Effect: Browser responds slowly and allows observing gradual degradation
Brash.run({ 
    burstSize: 200,
    interval: 1000 // ~600 updates/sec
});
Scarica lo strumento