CVE-2018-17463
Google Chromium V8
2022-06-08
Google Chromium V8 Engine contains an unspecified vulnerability that allows a remote attacker to execute code inside a sandbox via a crafted HTML page. This vulnerability could affect multiple web browsers that utilize Chromium, including, but not limited to, Google Chrome, Microsoft Edge, and Opera.
Технический анализ и план устранения
Суть уязвимости
CVE-2018-17463 представляет собой критическую уязвимость типа «Type Confusion» (смешение типов) в JIT-компиляторе TurboFan движка V8. Проблема возникает на этапе оптимизации кода, когда компилятор некорректно обрабатывает побочные эффекты (side effects) определенных операций.
В частности, при выполнении некоторых методов (например, Object.create) TurboFan ошибочно полагает, что структура объекта не изменилась, и продолжает использовать устаревшую информацию о типах из кэша. Это позволяет злоумышленнику:
1. Добиться несоответствия между реальным типом объекта в памяти и типом, который ожидает компилятор.
2. Получить примитивы произвольного чтения и записи в памяти процесса (AAR/AAW).
3. Выполнить произвольный код (RCE) внутри песочницы браузера через специально подготовленную HTML-страницу.
Как исправить
Основным способом устранения является обновление движка V8 до версии, в которой исправлена логика проверки побочных эффектов в TurboFan. Для конечных пользователей и администраторов это означает обновление браузеров на базе Chromium до актуальных версий.
Для пользователей Google Chrome (Linux/Windows/macOS): Обновите браузер до версии 70.0.3538.67 или выше.
Для системных администраторов (Linux/Debian/Ubuntu):
apt update && apt upgrade -y google-chrome-stable
Для разработчиков, использующих V8 как отдельный компонент:
Необходимо применить патч, который помечает операции, изменяющие структуру объектов, флагом kNoWrite, заставляя компилятор выполнять повторную проверку типов. Перейдите в директорию исходного кода V8 и обновитесь до тега 7.0.276.28 или выше.
git checkout 7.0.276.28
gclient sync
Временные меры
Если немедленное обновление браузера или компонента невозможно, рекомендуется применить следующие защитные механизмы:
Отключение JIT-компиляции (TurboFan): Запуск браузера с флагом, отключающим оптимизацию, полностью нейтрализует вектор атаки, так как уязвимость находится именно в оптимизирующем компиляторе.
google-chrome --js-flags="--no-opt"
Использование политик изоляции сайтов (Site Isolation): Включите строгую изоляцию сайтов, чтобы минимизировать риск кражи данных между доменами в случае успешной эксплуатации внутри песочницы.
google-chrome --enable-features=IsolateOrigins,site-per-process
Ограничение доступа: Используйте средства контроля доступа (например, AppArmor или SELinux) для ограничения прав процесса рендеринга в операционной системе, чтобы предотвратить выход за пределы песочницы.