flawopen.com/Incidents/bluemoon-chrome-v8-windows-alpc-september-2026
BlueMoon: три уязвимости преодолели границы Chrome и Windows
Proofpoint сообщила о целевых кампаниях BlueMoon, в которых объединялись CVE-2026-85046 (путаница типов V8), CVE-2026-87491 (выход из песочницы V8) и CVE-2026-85880 (локальное повышение привилегий в ядре Windows). Google и Microsoft подтвердили эксплуатацию до выпуска исправлений; Chromium-браузер и Windows нужно обновлять отдельно.[1], [2], [3], [4]
Представьте сортировщика, который проверил, что во всех коробках книги, но позволил посетителю заменить содержимое до сортировки по старым наклейкам. Первая ошибка открыла закрытый участок; другая — его решётку, третья — изменила пропуска здания. Каждый замок нужно чинить отдельно.[1]
Ключевые понятия и термины
V8 / type confusion- V8 выполняет JavaScript. В
CVE-2026-85046предположения оптимизации Array.prototype.sort переставали быть верными, когдаfill()менял тип элементов.[1], [2]
Связи со стандартами
- Ссылка CWE для слабого места, описанного в этом руководстве: CWE-122 CWE-787 CWE-843
- CISA KEV — добавлено 2026-09-04 — CVE-2026-85046
Этапы цепочки BlueMoon и решения по обновлению
| Этап / CVE / граница | Что подтверждают источники | Действие защитника |
|---|---|---|
Путаница типов JIT V8 — CVE-2026-85046 | Proofpoint описывает изменение массива через fill() в comparator Array.prototype.sort, нарушающее предположение о типе элементов. Google сообщила об эксплойте в реальных атаках. | Установите Chrome/Chromium 152.0.7977.82/.83 (Windows/Mac) или .82 (Linux) либо новее; перезапустите браузер. Исправление вошло в выпуск Google от 3 сентября. |
Выход из песочницы V8 — CVE-2026-87491 | Proofpoint сообщает о повреждении метаданных WebAssembly, пересекающем песочницу памяти V8; она отделена от песочницы процесса renderer. Google сообщила об эксплойте в реальных атаках. | Установите Chrome/Chromium 153.0.8010.36/.37 (Windows/Mac) или .36 (Linux) либо новее; перезапустите браузер. Исправление вошло в выпуск Google от 8 сентября. |
LPE ядра Windows — CVE-2026-85880 | Proofpoint описывает путь ALPC/WNF к SeDebugPrivilege и перечисляет старые сборки Windows, на которые нацеливался набор. Microsoft подтвердила эксплуатацию до обновлений от 8 сентября. Этот список целей не является полным перечнем уязвимых версий. | Установите актуальные поддерживаемые обновления безопасности Windows, включая обновление от 8 сентября 2026 года или новее; найдите пакет для своей ОС в MSRC и выполните необходимую перезагрузку. Windows и Chrome исправляйте отдельно. |
Хронология инцидента
Proofpoint впервые наблюдала активность BlueMoon.[1]
Chrome Stable исправил CVE-2026-85046 в 152.0.7977.82/.83 для Windows и Mac, .82 для Linux.[2]
Пошаговый сценарий атаки
Наблюдавшаяся доставка
Proofpoint наблюдала целевые фишинговые кампании со ссылкой на набор эксплойтов. Этапы в браузере требовали, чтобы получатель открыл ссылку в уязвимом браузере на Chromium.[1]
Путаница типов V8 — CVE-2026-85046
Proofpoint описывает оптимизированный путь Array.prototype.sort, где предположение о типе могло нарушиться, когда comparator менял массив с помощью fill(). Возникшая путаница типов стала первой уязвимостью в renderer; Google сообщила о наличии эксплойта в реальных атаках.[1], [2]
Исходный код: Уязвимый vs Защищённый вариант
Безопасная иллюстрация на Python, не исходный код V8, эксплойт или патч производителя. Безобидный обратный вызов способен заменить числа строками после первой проверки. Исправление проверяет ограниченную копию после вызова и обрабатывает её без дальнейших вызовов. В уязвимом примере Python выдаёт исключение; порча памяти здесь не моделируется. Предполагаются только доверенные ограниченные синхронные вызовы.
def numeric_total(values, callback):
if type(values) is not list or len(values) > 1024:
raise ValueError("Invalid batch")
if any(type(x) is not int for x in values):
raise ValueError("Expected integers")
callback(values)
# Callback мог нарушить предположение о типе.
return sum(values)
def numeric_total(values, callback):
if type(values) is not list or len(values) > 1024:
raise ValueError("Invalid batch")
callback(values)
if len(values) > 1024:
raise ValueError("Invalid batch")
snapshot = tuple(values)
if any(type(x) is not int or abs(x) > 1_000_000
for x in snapshot):
raise ValueError("Expected bounded integers")
# Используйте проверенный снимок без повторного callback.
return sum(snapshot)
Чек-лист по защите системы для инженеров
- ✓Учитывайте версии браузера и Windows отдельно; установите поддерживаемые обновления и проверьте перезапуск браузера и ОС.[2], [3], [4], [5]
- ✓Добавьте проверки изменения массива обратным вызовом: смена типа и слишком большой пакет должны отклоняться до оптимизированной обработки; обычные числа должны давать верную сумму.[1]
- ✓Проверяйте оптимизированные пути с исполнением управляемого кода между проверкой и использованием. Повторно проверяйте условия либо работайте с неизменяемой проверенной копией.[1]
- ✓Отслеживайте CVE отдельно. Chrome оценил
CVE-2026-85046как высокую иCVE-2026-87491как среднюю; Microsoft оценилаCVE-2026-85880как высокую (CVSS 7.8,CWE-122). Защита платформы не заменяет обновления.[2], [3], [4], [5]