Brotli-уязвимость в .NET может привести к сбою и утечке данных

Brotli-уязвимость в .NET может привести к сбою и утечке данных

Внеплановые обновления.NET вышли 25 октября для версий 8, 9, 10 и тестовой.NET 11. Они устраняют критическую уязвимость при распаковке данных Brotli, которая может затронуть обрабатывающие такие данные приложения. Компания рекомендует установить обновления как можно скорее.

Уязвимость CVE-2026-111497 связана с выходом за границы буфера при распаковке данных алгоритмом Brotli. Её обнаружила команда Imperva Red Team. Специально подготовленный поток сжатых данных способен привести к чтению или повреждению памяти процесса без предварительной аутентификации. Возможные последствия — утечка информации, сбой приложения или повышение привилегий.

Риск возникает, когда приложение принимает данные Brotli через распаковку запросов ASP.NET Core, автоматическую распаковку ответов HttpClient или напрямую использует API Brotli из System.IO.Compression. Первые два механизма по умолчанию отключены: разработчик должен включить их самостоятельно. Поэтому наличие ASP.NET Core или HttpClient в приложении ещё не означает, что оно обрабатывает опасный поток. По данным Microsoft,.NET Framework эта уязвимость не затрагивает.

Уязвимость также называют Broccoli2Shell; встречаются варианты Node2Shell и HTTP2Shell. Публичные демонстрационные эксплойты уже появились на GitHub, но сообщений о применении уязвимости в реальных атаках нет. До установки обновления администраторы могут блокировать входящие запросы, сжатые Brotli, на прокси-сервере или межсетевом экране либо отключить распаковку Brotli.

Исправления уязвимости Brotli в.NET и порядок обновления

Microsoft подготовила обновления для трёх стабильных веток.NET и кандидата в релиз.NET 11. Пользователям.NET 11 RC2 нужно перейти на RC3, чтобы получить исправления. Исправления вошли в следующие версии:

Читайте также:
Ветка.NETВерсия с исправлениями
.NET 88.0.33
.NET 99.0.22
.NET 1010.0.14
.NET 11Release Candidate 3

Если приложение использует отдельно установленную среду выполнения, её нужно обновить, а приложение — перезапустить. Если среда выполнения включена в приложение, обновления на хосте недостаточно: приложение придётся пересобрать и опубликовать заново. Контейнеры тоже нужно пересобрать на обновлённых образах и развернуть заново.

Команда dotnet --list-runtimes показывает установленные на хосте среды выполнения. Она не позволяет проверить приложения со встроенной средой и контейнеры — их версии нужно сверять отдельно. Обновление системной библиотеки Brotli тоже не устраняет риск для приложений с собственной копией библиотеки.

Какие ещё ошибки вошли в обновление

В тот же выпуск вошло исправление CVE-2026-114148 — уязвимости в метаданных владельцев файлов внутри архивов.NET для Linux. Она может позволить локальному злоумышленнику изменить файлы и повысить привилегии. В.NET 10 и 11 проблема касается только архивов для сборки из исходного кода. В.NET 8 и 9 затронуты также установки ASP.NET Core из соответствующих архивов, даже если пользователь не собирал.NET самостоятельно.

Тем, кто собирает пакеты.NET из исходного кода, нужны обновлённые архивы и повторная сборка. Пользователям ASP.NET Core из архивов для.NET 8 и 9 также нужно обновить установку, используя исправленные файлы.

Microsoft также дополнила исправления для CVE-2026-70197, связанной с повреждением памяти в SocketAsyncEventArgs, и CVE-2026-102870, затрагивающей отладчик Blazor WebAssembly. Обновления от 13 октября устранили эти ошибки не полностью. Первая касается.NET 8—11, вторая —.NET 10 и 11. Поэтому организациям, уже установившим октябрьские обновления, всё равно нужны новые версии.

Опубликовано:
Марта Баринова