Одно сообщение в чате Twitch дало хакеру полный контроль над ПК стримера через OBS

Исследователь безопасности Дилан Иффриг-Бурфа из швейцарского подразделения Orange Cyberdefense (команда SCRT) показал цепочку атаки, в которой одно сообщение в чате Twitch приводит к выполнению произвольного кода на компьютере стримера.

Для атаки понадобились уязвимый чат-оверлей, встроенный браузер OBS Studio без песочницы и старая версия движка V8 с уже эксплуатируемой в реальных атаках ошибкой. Сама OBS при этом работала с настройками по умолчанию.

История началась со скриншота. Знакомый исследователя с помощью ИИ-вайбкодинга написал небольшой чат-оверлей для OBS и выложил снимок экрана, на котором была видна часть кода. В одной из строк сообщения из чата вставлялись в страницу как HTML, без какой-либо санитизации, что открывало путь для классической XSS-атаки.

Чат-оверлей по сути представляет собой маленькую веб-страницу, которую OBS отображает поверх трансляции через источник "Браузер" (Browser Source). Такие источники работают на Chromium с помощью фреймворка CEF (Chromium Embedded Framework) и используются для чатов, уведомлений о донатах, анимаций и других виджетов. Получается, что простой виджет с сообщениями зрителей на деле запускается внутри полноценного браузера на машине стримера.

Ранее похожие атаки строились вокруг локального WebSocket-сервера OBS, через который можно переключать сцены или останавливать трансляцию. Сейчас этот путь почти закрыт, ведь WebSocket-сервер по умолчанию отключен, а при включении требует автоматически сгенерированный пароль. Иффриг-Бурфа поставил более амбициозную цель – одно сообщение, актуальная версия OBS, стандартные настройки и никаких действий со стороны стримера.

Ключевым звеном стала конфигурация встроенного браузера. Обычно Chrome изолирует процессы рендеринга в песочнице, и даже после успешного эксплойта памяти атакующему нужна отдельная уязвимость, чтобы выбраться за ее пределы. OBS же инициализирует CEF с параметром settings.no_sandbox = true, и эта строка до сих пор присутствует в исходном коде плагина obs-browser.

Вторая проблема касается возраста движка. Последняя на момент тестирования версия OBS 32.2.2 использовала Chromium 127.0.6533.120 и V8 12.7.224.18, которые уязвимы для CVE-2024-7971. Ошибка смешения типов (type confusion) в V8 затрагивает все версии Chromium до 128.0.6613.84, а Google исправила ее в Chrome 128 еще 21 августа 2024 года.

Уязвимость далеко не теоретическая. Microsoft зафиксировала ее эксплуатацию северокорейской группировкой, которую отслеживает под названием Citrine Sleet, а CISA внесла CVE-2024-7971 в каталог известных эксплуатируемых уязвимостей. В атаках, описанных Microsoft, хакерам после взлома V8 понадобилась еще одна брешь для выхода из песочницы, однако внутри OBS этот барьер попросту отсутствует.

Итоговая цепочка выглядит так:

  • зритель отправляет вредоносное сообщение в чат Twitch

  • уязвимый оверлей выводит его как HTML, и в браузере OBS выполняется JavaScript

  • скрипт эксплуатирует CVE-2024-7971 и получает выполнение нативного кода в процессе рендеринга

  • из-за отключенной песочницы атакующий сразу получает контроль над системой

Публичного эксплойта под конкретную версию CEF в OBS не существовало, так что исследователь написал собственный, используя удаленную отладку Chromium и протокол DevTools. Технические детали эксплойта он намеренно не раскрыл. Полную цепочку удалось воспроизвести на обновленной Windows 11.

Иффриг-Бурфа отдельно оговорил, что свежая установка OBS не уязвима для любого зрителя в чате. Точкой входа служит именно оверлей, который выводит пользовательский контент без санитизации. При этом после загрузки такой страницы никаких ослаблений OBS не требуется – ни настройки WebSocket, ни прав администратора, ни кликов со стороны стримера.

Чат также далеко не единственный путь. Любая страница под контролем злоумышленника, загруженная в источник "Браузер" или браузерную док-панель OBS, потенциально позволяет сразу перейти к этапу эксплуатации браузера. Уязвимость в чате лишь делает атаку удаленной и не требующей действий от жертвы.

Команда OBS подтвердила, что исправления уже в работе. Главным препятствием для обновления браузера был новый Chrome Runtime, который до недавнего времени не поддерживал внеэкранный рендеринг, необходимый OBS. Chromium 127 вышел в стабильный канал в июле 2024 года, так что движок в OBS 32.2.2 отстает примерно на два года.

Пулл-реквест, переводящий obs-browser на CEF 128 и новее, закрывает конкретную ошибку в V8 и запланирован для OBS Studio 33.0. Параллельно разработчики тестируют повторное включение песочницы CEF, которую когда-то отключили из-за проблем с авторизацией в некоторых сервисных интеграциях. Команда считает, что с новыми версиями CEF эти проблемы, вероятно, уже решены.

До выхода обновления защита лежит полностью на плечах стримеров и создателей оверлеев. Иффриг-Бурфа рекомендует считать любой контент в источнике "Браузер" небезопасным и никогда не выводить сообщения зрителей как HTML – текст должен отображаться как только как текст, а при реальной необходимости HTML нужно санитизировать

Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.