Undici CVE-2026-22036: неограниченная цепочка декомпрессии приводит к исчерпанию ресурсов — выпущены патчи
Что произошло
- 14 января 2026 года проект undici опубликовал уведомление о безопасности (CVE-2026-22036 / GHSA-g9mf-h72j-4rw9): определенные HTTP-ответы с поддельными заголовками Content-Encoding могут создать неограниченную цепочку декомпрессии, позволяя злонамеренному серверу заставить клиентов, которые автоматически декомпрессируют ответы, выполнять чрезмерную работу CPU и выделять память. Доступны патчированные версии. (github.com)
Почему команды полного стека должны заботиться
- Undici является де-факто высокопроизводительным HTTP/1.1 клиентом для Node.js и используется напрямую во многих серверных службах и косвенно через транзитивные зависимости и среды выполнения, которые его упаковывают. Удаленный сервер (или любой upstream, с которым взаимодействует ваша служба) может вызвать исчерпание ресурсов в HTTP-клиенте, который слепо принимает произвольно длинные цепочки Content-Encoding — это риск доступности (DoS) как для крайних серверов, так и для бэкенд-сервисов, которые вызывают сторонние API.
- Уязвимость затрагивает обработку ответов (доступность), а не конфиденциальность данных. Тем не менее, инциденты с доступностью вызывают сбои, проблемы с масштабированием и каскадные сбои в графах микросервисов — поэтому патчирование является срочным для интернет-ориентированных и внутренних служб, которые принимают ненадежные upstream-ответы.
Затронутые и исправленные версии (коротко)
- Затронутые: версии undici < 6.23.0 и 7.0.0 <= версия < 7.18.2 (см. уведомление для точных диапазонов).
- Исправленные: обновите до 6.23.0 или 7.18.2 (или более поздней версии 7.x). (github.com)
Практический список действий с высоким воздействием для команд (что делать сейчас)
-
Быстрое инвентаризация
- Запустите: npm/yarn/pnpm's dependency tree check, чтобы найти undici (прямые и транзитивные).
- Примеры проверок: npm ls undici || pnpm why undici.
- Проверьте базовые образы контейнеров и серверные среды выполнения (некоторые сборки Node упаковывают undici); проверьте свои Docker-образы на наличие встроенного undici или образов Node, которые его включают.
- Запустите: npm/yarn/pnpm's dependency tree check, чтобы найти undici (прямые и транзитивные).
-
Обновите, где вы контролируете зависимость
- Прямая зависимость: обновите undici до >= 7.18.2 (или 6.23.0, если вы должны остаться на 6.x), затем пересоберите и разверните.
- Транзитивная зависимость: предпочтите обновление верхнеуровневого пакета, который включает undici; если это невозможно, используйте переопределения пакетного менеджера (npm/yarn/pnpm) или правила разрешения, чтобы принудительно использовать патчированную версию undici в вашем lockfile.
-
Для сред выполнения Node, которые упаковывают undici
- Проверьте примечания к выпуску вашего Node.js или сборки вендора на наличие версии встроенного undici. Если встроенный undici уязвим, обновите Node до безопасной версии среды выполнения от вашего вендора (или примените рекомендации вендора).
- Если вы не можете немедленно обновить Node, используйте описанные ниже меры смягчения на уровне приложения.
-
Добавьте легкие меры смягчения на уровне выполнения (защита в глубину)
- Если вы контролируете код HTTP-клиента, добавьте перехватчик декомпрессии/ответа, который отклоняет длинные или неправдоподобные цепочки Content-Encoding (ограничьте количество кодировок).
- В undici вы можете добавить перехватчик для проверки заголовка Content-Encoding и отклонять или обрезать подозрительные цепочки перед запуском декомпрессии.
- Ограничьте использование памяти и CPU, применяя разумные ограничения на размер ответа и таймауты для HTTP-ответов (например, maxHeaderSize, таймауты ответа), где это применимо.
-
CI, контейнеры и оркестрация
- Убедитесь, что ваш CI-пайплайн проверяет lockfile и завершает работу, если была введена старая версия undici.
- Пересоберите образы контейнеров и разверните критические службы по контролируемому графику (canary → rollout), чтобы избежать широкого развертывания изменения, нарушающего работу, без проверки.
-
Обнаружение и мониторинг
- Добавьте или пересмотрите метрики времени выполнения: CPU на запрос, задержка запроса, рост памяти после исходящих HTTP-вызовов.
- Добавьте сигналы тревоги для неожиданных всплесков, связанных с исходящими вызовами или конкретными upstream-хостами. Аудит журналов мест назначения fetch во время инцидентов может помочь выявить злонамеренные upstream.
Почему важно действовать сейчас
- Это вектор доступности/DoS, который может быть вызван удаленно любым сервером, к которому обращается ваш код. Даже если эксплуатация относительно сложна, радиус поражения в архитектурах микросервисов велик: злоумышленник или неправильно настроенный upstream могут вызвать постоянное высокое использование CPU/памяти у многих вызывающих.
- Патчирование является простым (обновление версии или простой перехватчик) и обеспечивает немедленную защиту; комбинируйте это с мониторингом и гигиеной lockfile, чтобы избежать регрессий.
Однострочное решение
- Обновите undici до патчированной версии (6.23.0 или >=7.18.2), пересоберите образы и разверните; если вы не можете немедленно обновить, добавьте перехватчик undici для отклонения длинных цепочек Content-Encoding и установите более строгие ограничения на размер/время ответа. (github.com)
Источник
- Уведомление о безопасности undici: GHSA-g9mf-h72j-4rw9 (CVE‑2026‑22036). (github.com)
Источник
Читать дальше
Изменения в FedCM в Chrome 143: структурированные утверждения ID, более строгие метаданные клиента и обновления API
31 января 2026 г.Chrome 143 (опубликован 12 января 2026 года) изменяет поток идентификации FedCM: токены утверждения ID могут быть структурированным JSON, проверка client_metadata становится обязательной, и несколько полей API перемещаются/переименовываются — требуется миграция перед Chrome 145.
Уязвимость CSRF в Server Actions React Router / Remix (CVE-2026-22030)
29 января 2026 г.React Router и @remix-run/server-runtime устранили проблему CSRF средней степени серьезности, затрагивающую обработчики действий на стороне сервера и нестабильные действия сервера React — что полностековым командам необходимо проверить и исправить сейчас.
GitHub Actions 1‑vCPU Linux Runner теперь доступен для общего пользования
28 января 2026 г.GitHub представил новый недорогой контейнеризированный 1‑vCPU Linux runner (ubuntu-slim), который теперь доступен в GitHub Actions — что должны знать и делать в первую очередь команды полного стека.