Zero-day в V8 уже эксплуатируют: обновить Chrome мало, движок крутится ещё в пяти местах

3 сентября Google выпустила внеочередное обновление стабильного канала Chrome — 152.0.7977.82/.83 для Windows и macOS и 152.0.7977.82 для Linux. В бюллетене одна строка важнее остальных: «High CVE-2026-85046: Type confusion in V8», найдено Сальваторе Гулицией под ником Serotav 4 августа, награда — тысяча долларов. И приписка, ради которой обновление и вышло отдельным релизом: «Google is aware that an exploit for CVE-2026-85046 exists in the wild».

Путаница типов в V8 — это когда движок обращается к объекту в памяти так, будто он другого типа. Классика для JIT-компиляторов и один из самых удобных классов ошибок для атакующего: из него обычно раскручивается чтение и запись в чужую память прямо из JavaScript на странице.

Warning:

На Hacker News тема разошлась под заголовком «Actively exploited sandbox RCE in all Chromium versions». В бюллетене Google ничего про побег из песочницы и про RCE не сказано — там type confusion с рейтингом High. Эксплуатация подтверждена, детали Google не раскрывает; оценка CVSS 8.8 фигурирует в сторонних базах, а не в самом бюллетене. Разница между «эксплуатируется» и «рушит песочницу во всех сборках» здесь принципиальная.

Почему «я обновил Chrome» закрывает не всё

Chrome обновляется сам и чинится первым. Проблема в том, что тот же V8 вы таскаете ещё в нескольких местах, и ни одно из них про сентябрьский релиз не знает.

Самый неприятный случай для этой аудитории — headless-браузер в докер-стеке. Скрейпер, парсер выдачи, OSINT-конвейер или рендерер скриншотов ходит по недоверенным страницам и исполняет чужой JavaScript пачками — то есть занимается ровно тем, для чего эксплойт и написан. При этом образ прибит тегом и обновится только тогда, когда вы его пересоберёте.

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

Что проверить руками

# обычный браузер
google-chrome --version
chromium --version

# в контейнере со скрейпером
docker exec <container> sh -c 'chromium --version || google-chrome --version'

# Electron: DevTools в окне приложения
navigator.userAgent      // ищем подстроку Chrome/152.0.7977.xx

Сверять надо мажорную версию и последнюю группу цифр: всё, что ниже 152.0.7977.82, исправления не содержит. Для Electron полезна таблица соответствия версий Electron и Chromium в официальной документации проекта — по ней видно, какой релиз приложения вам нужен.

Success:

Минимальный набор действий на сегодня: обновить браузеры на рабочих машинах → перебрать docker-compose и найти образы с Chromium, Playwright, Puppeteer или Selenium → пересобрать их с актуальным базовым слоем → проверить версию внутри контейнера, а не в Dockerfile → убедиться, что антидетект-профили обновились у вендора, и если нет, до обновления не открывать в них незнакомые домены.

Трезво о рисках: это не червь и не дыра, через которую ломают сервер снаружи. Чтобы эксплойт сработал, движок должен исполнить подготовленный JavaScript — кто-то должен открыть страницу. Для человека за браузером это означает «обновись и не паникуй», для автоматики, которая сама лезет на тысячи чужих страниц в сутки, — «пересобери образы сегодня».

И для контекста: по данным The Hacker News, это шестой с начала года активно эксплуатируемый zero-day в Chrome, а CISA внесла уязвимость в каталог KEV с дедлайном для федеральных агентств 18 сентября. Независимо от этой оценки, класс ошибки тот же, о котором шла речь в разборе аппаратной разметки памяти: порча памяти в нативном коде никуда не делась, и ловят её по-прежнему постфактум.

Источники

Question:

Как у вас устроено обновление Chromium в контейнерах — образ пересобирается по расписанию, или до первой такой новости он живёт с тем, что было на момент сборки? И считает ли кто-нибудь headless-браузер в стеке отдельной единицей инвентаря, которую надо патчить, а не просто зависимостью?