невзлом

Срочно · Brotli

Brotli decoder OOB write — KEV, Node.js / .NET / libbrotli (CVE-2026-111497)

· CVE-2026-111497

Суть

В декодере Google Brotli ошибка обработки потока приводит к записи за границей внутреннего буфера. Удалённый без аутентификации, если жертва принимает и распаковывает сформированный Brotli-вход (типично HTTP/библиотечный decompress). Последствия по вендорам: crash, disclosure памяти процесса, remote code execution (Node.js); у Microsoft — Elevation of Privilege, Critical, CVSS 8.1. CVSS 9.2 CRITICAL — Palo Alto (и ENISA EUVD в ленте, страница EUVD при сверке была недоступна). EPSS ~82.6% (по ленте).

Затронуто и исправлено

КомпонентУязвимоИсправлено
Google Brotliв ветке 1.0 — ниже 1.0.10; 1.1 — ниже 1.1.1; 1.2 — ниже 1.2.1 (типичный диапазон раскрытия: от 1.0.3)≥1.0.10; ≥1.1.1; ≥1.2.1
Node.js 22.xниже 22.23.422.23.4
Node.js 24.xниже 24.22.124.22.1
Node.js 26.xниже 26.12.126.12.1
.NET 8/9/10/11, VS, PowerShellсм. MSRCобновления MSRC; Ubuntu USN-8958-1 (29.10)
PAN-OS 12.2 / 12.1 / 11.2при Brotli inspection + TLS decrypt — см. таблицу hotfixhotfix из advisory Palo Alto; SaaS — без действия клиента

Пример: Node 24.22.0 — уязвима, 24.22.1 — исправлена. Brotli 1.0.9 — уязвима, 1.0.10 — исправлена; 1.2.0 — уязвима, 1.2.1 — исправлена.

Условие Node.js (официально): атакующий подаёт Brotli-данные, которые приложение decompress’ит через node:zlib.

PAN-OS: воздействие на dataplane при указанном конфиге; Management UI/API не затронуты (Palo Alto). Brotli encoding по умолчанию отключён в части веток — сверяйте фактический конфиг.

Эксплуатация

  • CISA KEV: внесено 2026-10-27, due 2026-11-10; ransomware в KEV — Unknown.
  • MSRC: Exploited = No, Publicly disclosed = Yes — противоречие с KEV; для приоритета патча опирайтесь на KEV.
  • Публичный PoC: есть (по агрегату ленты); ссылок и деталей нет.
  • Масштаб компрометаций — неизвестен.

Как проверить

node -v
# ожидание: v22.23.4+ / v24.22.1+ / v26.12.1+ своей линии
# Debian/Ubuntu — номер пакета ≥ исправления вашей ветки / advisory дистрибутива
dpkg -l 'libbrotli*' 'brotli' 2>/dev/null | awk '/^ii/{print}'
dotnet --list-runtimes 2>/dev/null
  • .NET/Windows: каталог обновлений MSRC по CVE-2026-111497 (KB/сборки в карточке MSRC). Успех: runtime из dotnet --list-runtimes совпадает с таблицей MSRC/USN.
  • PAN-OS: CLI-проверка включения Brotli inspection — шаги в advisory Palo Alto (откройте advisory).
  • PaaS/чужой хостинг Node: спросите у хостера/образа фактический node -v, не полагайтесь на «latest» в панели.

Как исправить

  1. Node.js: поставьте security-сборки 22.23.4 / 24.22.1 / 26.12.1 (или новее линии); перезапустите процессы/поды; зафиксируйте образ/пакетный pin.
  2. .NET / VS / PowerShell: установите обновления из MSRC; на Ubuntu — пакеты из USN-8958-1 (apt update и установка нужных dotnet* / runtime). Критерий: dotnet --list-runtimes / сверка с таблицей USN-8958-1.
  3. Системная/vendored libbrotli: обновите до ≥1.0.10 / ≥1.1.1 / ≥1.2.1 своей ветки; пересоберите статически линкованные бинарники.
  4. PAN-OS: hotfix из таблицы Palo Alto; либо временно отключите Brotli inspection/decrypt по рекомендациям вендора.

Подводные камни: плавающие теги node:22 / node:24 без patch; pinned digest со старым слоем; sidecar’ы со старым Node; .NET self-contained publish со старым runtime; кэш CDN/registry.

Если обновить нельзя

  • Не принимайте недоверенный Brotli на входе сервиса (отключите decompress на периметре / в приложении), пока патч не встанет — это снижение экспозиции, не полный эквивалент патча.
  • PAN-OS: отключение инспекции Brotli по advisory.
  • Полного официального workaround от Google Brotli в доступных первоисточниках нет.

Признаки взлома и что делать

Готовых IoC под CVE-2026-111497 в Node.js / MSRC / Palo Alto advisory нет → ориентируйтесь на общий triage компрометации runtime (неожиданные процессы, исходящие соединения, целостность бинарников). После подтверждённого взлома одного обновления недостаточно: изоляция, ротация секретов, восстановление из чистой точки.

Источники