Design & Dev

Microsoft устранила критическую уязвимость Brotli в .NET и Visual Studio

В воскресенье Microsoft выпустила внеплановые обновления для .NET, Visual Studio и PowerShell. Они устраняют CVE-2026-111497 — переполнение буфера в Brotli, широко используемой библиотеке сжатия от Google, о котором сообщила команда Codex Security компании OpenAI. Исправления выпускают также Node.js, пакеты Python, прокси-серверы и другие инструменты, включающие в себя эту библиотеку.

Microsoft устранила критическую уязвимость Brotli в .NET и Visual Studio

В записи в блоге .NET Microsoft сообщила, что переполнение буфера может позволить злоумышленнику без аутентификации читать или повреждать память процесса. Это способно привести к раскрытию информации, отказу в обслуживании или повышению привилегий. Обновление охватывает .NET 8, 9 и 10, а также .NET 11 Release Candidate 3. Сборки Visual Studio и PowerShell перечислены в руководстве по обновлениям безопасности компании.

Microsoft оценивает уязвимость как критическую для .NET и Visual Studio и как важную для PowerShell. По данным компании, сведения об уязвимости публично раскрыты, случаев эксплуатации не зафиксировано, а вероятность эксплуатации оценивается как «более высокая». В .NET распаковка Brotli по умолчанию не включена, а .NET Framework уязвимость не затрагивает.

Тот же выпуск завершает два исправления из октябрьского Patch Tuesday от Microsoft, которые тогда устранили проблемы не полностью.

Одна ошибка — три названия

Уязвимость CVE-2026-111497 известна под названиями Node2Shell, HTTP2Shell и Broccoli2Shell. Сначала её обнаружили в Node.js, а затем исследователи проследили её до декодера Brotli на C. Многие программы копируют этот декодер в собственный код. Уязвимы версии Brotli с 1.0.3 по 1.2.0. Исправление содержится в версиях 1.0.10, 1.1.1 и 1.2.1. Google, присвоившая идентификатор CVE, оценивает уязвимость в 9,2 балла из 10 в записи CVE.

Как сказано в бюллетене Node.js, декодер воспринимал некорректное переключение блока не как ошибку формата, а как необходимость получить больше входных данных.

Потоковый декодер «продолжал дописывать входные байты во внутренний восьмибайтовый буфер», — написали в Node.js.

Для атаки необходимо, чтобы приложение распаковало вредоносные данные. Это может быть сжатый ответ от сервера, к которому обращается приложение. Это также может быть сжатый запрос, отправленный кем-то непосредственно на сервер.

Исправлено в феврале, выпущено в октябре

Node.js отметила заслуги Кхая Трана и Сильви Майер из команды Codex Security компании OpenAI. OpenAI сообщила в публикации в X, что обнаружила проблему в ходе работ по редтимингу.

«Первопричина этой проблемы на самом деле была исправлена в исходном коде Brotli ещё в феврале, но тогда не было известно, что она порождает уязвимость безопасности, а более свежего выпуска Brotli не выходило», — заявили в OpenAI.

Node.js и Google выпустили исправленные версии 21 октября. На той же неделе стало известно о двух критических уязвимостях PHP, а позднее PHP предупредила о третьей.

Насколько велик масштаб угрозы?

Компания Wiz, специализирующаяся на облачной безопасности, сообщает в записи в блоге, что в 91% облачных сред есть ресурсы, уязвимые для этой ошибки. По её данным, в 82% сред есть публично доступные экземпляры Node.js.

Imperva удалось запустить собственный код на официальном образе Node.js 24.22.0 для Linux на ARM64. Атака срабатывала не каждый раз, и Imperva её не опубликовала. По данным Sysdig, доказательство концепции на GitHub работает только против намеренно ослабленной сборки. Исследователи из Brandefense утверждают, что с её помощью можно лишь вызвать сбой программ. Сообщений об атаках с использованием уязвимости пока не поступало.

Исправления уже вышли для Bun, Envoy, Istio, а также Python-пакетов Brotli и brotlicffi. JFrog также обнаружила уязвимость в FFmpeg, ClickHouse и Apache Arrow, как сообщила Свати Кханделвал в The Hacker News. В некоторых из них атака начинается не с веб-запроса, а с файла.

Публичный трекер по-прежнему указывает DuckDB, Apache Arrow, 7-Zip-zstd, p7zip и EDK II как неисправленные. В нём предупреждается, что обновление системной библиотеки Brotli не исправляет приложения, которые включают собственную копию, например Node.js. После обновления командам необходимо перезапустить службы и пересобрать образы контейнеров, поскольку запущенные процессы продолжают использовать старый код.

Опубликовано 26 октября 2026 - 15:08 Наверх