.NET 10.0.14 вышел вне очереди: переполнение буфера при распаковке Brotli и два повторно выпущенных октябрьских CVE
Внеплановый релиз от 25 октября 2026 года (.NET 8.0.33, 9.0.22, 10.0.14, 11 RC3) исправляет переполнение буфера в Brotli, уязвимость с владельцами файлов в Linux-архивах tarball и два CVE, которые патчи от 13 октября закрыли не полностью.
Через двенадцать дней после октябрьского Patch Tuesday Microsoft выпустила внеплановое обновление безопасности для .NET: .NET 8.0.33, 9.0.22, 10.0.14 и .NET 11 RC3. Microsoft просит обновиться “как можно скорее”, а два из четырёх CVE в нём выпущены повторно. Если вы 13 октября установили 10.0.13, 9.0.21 или 8.0.32 и сочли вопрос закрытым, то он не закрыт.
CVE-2026-111497: переполнение буфера при распаковке Brotli
CVE-2026-111497 это переполнение буфера в коде распаковки данных Brotli в .NET. Неаутентифицированный злоумышленник, который может передать в ваш процесс специально сформированные байты Brotli, получает возможность читать или портить память, что может привести к раскрытию информации, отказу в обслуживании или повышению привилегий. Уязвимость затрагивает все платформы. .NET Framework не затронут.
Попасть в уязвимый код можно тремя путями:
- распаковка запросов в ASP.NET Core, которая распаковывает тела запросов с
Content-Encoding: brот клиентов; - автоматическая распаковка в HttpClient, которая распаковывает ответы
brот серверов, к которым вы обращаетесь; - прямое использование API Brotli из
System.IO.Compression.
Первые два варианта по умолчанию выключены, так что ответ на вопрос “используем ли мы это?” находится одним grep. Вот шаблоны, которые нужно искать:
// 1. Server side: clients can send you Brotli bodies
builder.Services.AddRequestDecompression();
app.UseRequestDecompression();
// 2. Client side: servers can send you Brotli responses
var handler = new SocketsHttpHandler
{
AutomaticDecompression = DecompressionMethods.All // includes Brotli
};
// 3. Direct API use on untrusted input
using var input = File.OpenRead(uploadPath);
using var brotli = new BrotliStream(input, CompressionMode.Decompress);
await brotli.CopyToAsync(output);
// Same code path through the span API
BrotliDecoder.TryDecompress(source, destination, out int written);
Распаковка запросов вызывает наибольшее беспокойство. Она обрабатывает байты, контролируемые злоумышленником, от любого клиента ещё до того, как они попадут в ваш код. Если вы включили её на публичной конечной точке, сначала установите патч, а аудит проведите потом.
CVE-2026-114148: владельцы файлов в Linux-архивах tarball
CVE-2026-114148 связан с небезопасными метаданными о владельцах файлов в Linux-архивах tarball, которыми локальный злоумышленник может воспользоваться, чтобы изменять файлы и повышать привилегии. В .NET 10 и 11 уязвимость касается только tarball для сборки из исходного кода. В .NET 8 и 9 она затрагивает также tarball среды выполнения ASP.NET Core, поэтому если ваши скрипты развёртывания выполняют tar -xzf для среды выполнения ASP.NET Core, скачайте обновлённый архив, даже если вы никогда не собираете .NET из исходников.
Октябрьские исправления от 13 числа оказались неполными
Согласно публикации, релиз Patch Tuesday не устранил полностью два бюллетеня, поэтому этот релиз выпускает их заново:
- CVE-2026-70197, повреждение памяти в
SocketAsyncEventArgs, в .NET 8, 9, 10 и 11. - CVE-2026-102870, в отладчике Blazor WebAssembly, в .NET 10 и 11.
SocketAsyncEventArgs лежит в основе Socket, Kestrel и SocketsHttpHandler, так что этот код выполняет почти любое сетевое приложение на .NET.
Как развернуть обновление
Способ исправления зависит от того, как развёрнуто приложение:
# Framework-dependent: update the host runtime, then restart the process
dotnet --list-runtimes
# expect Microsoft.NETCore.App 10.0.14 / 9.0.22 / 8.0.33
# Self-contained or Native AOT: the runtime is inside your output, so republish
dotnet publish -c Release -r linux-x64 --self-contained
# Containers: pull fresh base images and rebuild, do not reuse cached layers
docker build --pull -t myapp:patched .
Обновление среды выполнения на уровне хоста ничего не даёт для self-contained приложений и образов контейнеров, потому что они несут собственную среду выполнения. Пользователям .NET 11 RC2 нужно перейти на RC3, и это важно, если вы вывели в продакшен RC2 по лицензии go-live до ноябрьского GA.
В апреле .NET 10.0.7 тоже вышел вне очереди, чтобы исправить CVE-2026-40372 в Data Protection. Как и тогда, исправление состоит в обновлении и повторном развёртывании, а о проблемах после обновления нужно сообщать в dotnet/core issues.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.