CVE-2016-1646
Google Chromium V8
2022-06-08
Google Chromium V8 Engine contains an out-of-bounds read vulnerability that allows a remote attacker to cause a denial of service or possibly have another unspecified impact via crafted JavaScript code. This vulnerability could affect multiple web browsers that utilize Chromium, including, but not limited to, Google Chrome, Microsoft Edge, and Opera.
Технический анализ и план устранения
Суть уязвимости
CVE-2016-1646 представляет собой критическую уязвимость чтения за пределами границ (out-of-bounds read) в движке JavaScript V8, используемом в браузере Chromium. Проблема локализована в механизме оптимизации массивов.
При выполнении специально сформированного JavaScript-кода, манипулирующего типизированными массивами (TypedArrays) или операциями конкатенации, злоумышленник может заставить движок обратиться к памяти за пределами выделенного буфера. Это приводит к: 1. Раскрытию конфиденциальных данных из адресного пространства процесса (информационная утечка). 2. Аварийному завершению работы вкладки или браузера (Denial of Service). 3. В сочетании с другими техниками — обходу механизмов защиты (ASLR) для последующего исполнения произвольного кода (RCE).
Как исправить
Основным способом устранения является обновление версии Chromium или использующего его браузера до версии, где данный баг был исправлен (релиз Chrome 49.0.2623.108 и выше).
Для систем на базе Debian/Ubuntu:
sudo apt update && sudo apt install --only-upgrade google-chrome-stable
Для систем на базе RedHat/CentOS:
sudo yum update google-chrome-stable
Для администраторов Windows (через PowerShell): Если используется пакетный менеджер Chocolatey:
choco upgrade googlechrome
Для разработчиков (обновление V8 в проекте):
Необходимо обновить зависимости в файле DEPS и выполнить синхронизацию исходного кода:
gclient sync
Временные меры
Если немедленное обновление браузера невозможно, необходимо применить следующие настройки для снижения поверхности атаки:
-
Использование политик песочницы (Sandboxing). Убедитесь, что браузер не запущен с флагом
--no-sandbox. -
Отключение JIT-компиляции (снижает производительность, но блокирует вектор эксплуатации через оптимизатор):
google-chrome --js-flags="--no-opt"
-
Ограничение выполнения JavaScript на недоверенных ресурсах с помощью групповых политик (GPO) или расширений типа NoScript.
-
Изоляция процессов сайтов (Site Isolation). В современных версиях Chromium это включено по умолчанию, но для старых версий стоит проверить флаг:
google-chrome --enable-features=IsolateOrigins,site-per-process