Microsoft выпустила внеплановые патчи для .NET 8, .NET 9, .NET 10 и .NET 11 Release Candidate 3 из-за критической проблемы в декодере Brotli. Уязвимость Brotli в .NET может привести не только к отказу сервиса, но и, в отдельных сценариях, к удалённому выполнению кода — повод проверить сервисы, которые принимают или распаковывают сжатый трафик.
Проблема получила идентификатор CVE-2026-111497 и несколько неофициальных имён: Broccoli2Shell, Node2Shell и HTTP2Shell. По данным BleepingComputer, её причина — запись за границы выделенной памяти при обработке специально подготовленного Brotli-потока. Brotli — алгоритм сжатия без потерь, широко используемый в вебе; уязвимая реализация способна превратить входящий сжатый ответ или запрос в аварийное завершение процесса, утечку памяти, а при благоприятных для атакующего условиях — в запуск кода.
Microsoft выпустила обновления вне обычного ежемесячного цикла. Исправленные версии: .NET 8.0.33, .NET 9.0.22, .NET 10.0.14 и .NET 11 Release Candidate 3. Производитель рекомендует установить их как можно быстрее. Это не тот случай, когда стоит ждать очередного окна обновлений: публичные proof-of-concept уже появились на GitHub, хотя подтверждённых атак в реальной среде на момент публикации нет.
Риск не распределён поровну между всеми приложениями на .NET. В стандартной установке .NET и ASP.NET Core распаковка Brotli не включена автоматически. Однако приложение становится потенциальной точкой атаки, если разработчики отдельно включили распаковку запросов в ASP.NET Core, автоматическую распаковку ответов через HttpClient либо напрямую используют API Brotli из System.IO.Compression. Иными словами, наличие .NET на сервере само по себе не означает компрометацию, но наличие кода, который без проверки распаковывает внешние данные, требует немедленной инвентаризации.
Отдельно Microsoft предупреждает о сценарии удалённого повышения привилегий на непропатченных установках .NET с нестандартной конфигурацией. Формулировка важна: речь не о гарантированной эскалации в каждом приложении, а о дополнительном классе рисков там, где параметры среды и цепочка обработки данных создают нужные условия. Для команд эксплуатации это повод смотреть не только на публичные HTTP-эндпоинты, но и на фоновые интеграции, прокси, внутренние API и утилиты, которые получают сжатые данные от других систем.
Практический минимум для разработчиков и DevOps-команд выглядит довольно приземлённо. Сначала нужно определить версии runtime и SDK на серверах, в контейнерных образах и CI-агентах, затем обновить их до опубликованных Microsoft сборок. После этого стоит поискать в коде включение request decompression, настройки AutomaticDecompression у HttpClient и прямые вызовы Brotli API. Если обновление невозможно прямо сейчас, Microsoft советует временно блокировать входящие Brotli-сжатые запросы на прокси или межсетевом экране либо отключить декодирование Brotli в самом приложении.
У этой истории есть неприятная деталь для владельцев сложных стеков: обновления системной библиотеки Brotli могут не закрыть проблему в приложении, которое поставляет собственную копию зависимости. Это типичная ловушка современной поставки ПО: хост уже выглядит обновлённым, а контейнер, self-contained-сборка или сторонняя библиотека продолжает тянуть уязвимый бинарник. Поэтому проверка должна охватывать не только пакетный менеджер ОС, но и содержимое образов, артефактов сборки и зависимостей в продукте.
Для российских команд, поддерживающих .NET-сервисы в смешанной инфраструктуре, ситуация особенно знакома: обновление runtime часто упирается в старый образ, регламентный релиз или зависимость от подрядчика. Но уязвимость Brotli в .NET затрагивает сетевую обработку данных, а значит, её цена измеряется не только риском падения одного процесса. Один внешний поток может выбить API из строя, а при более тяжёлом сценарии открыть дорогу к исполнению кода на узле.
Появление сразу нескольких названий — Broccoli2Shell, Node2Shell и HTTP2Shell — тоже может помешать реагированию: в тикетах и сканерах одна и та же ошибка будет встречаться под разными ярлыками. Надёжнее ориентироваться на CVE-2026-111497, версии исправлений и фактическое использование распаковки. В ближайшие дни ключевым вопросом станет не наличие патча у Microsoft, а скорость, с которой владельцы приложений найдут все встроенные копии Brotli и отключат опасные пути обработки данных. Оригинальные технические детали и сведения о доступных PoC собраны в материале .

