DLA-4784-1: три CVE в nginx на Debian 12 bookworm

18 сентября 2026 года LWN выложил пятничную сводку security-апдейтов. В таблице Debian отдельно стоит LTS-строка nginx: DLA-4784-1, дата 17 сентября. Это не DSA для стабильной trixie и не mainline с nginx.org. Debian LTS закрыл три CVE в пакете nginx на Debian 12 bookworm сборкой 1.22.1-9+deb12u10.

Письмо Carlos Henrique Lima Melara ушло в debian-lts-announce 17 сентября в 23:29 -0300. Тема: [SECURITY] [DLA 4784-1] nginx security update. Текст целиком лежит на странице LWN. По формулировке advisory: отказ в обслуживании, раскрытие памяти или потенциально выполнение произвольного кода.

DLA-4784-1 и сборка 1.22.1-9+deb12u10

В шапке письма пакет назван прямо: nginx. Версия фикса: 1.22.1-9+deb12u10. Идентификаторы: CVE-2026-42533, CVE-2026-56434, CVE-2026-60005. Для Debian 12 bookworm эти проблемы закрыты этой сборкой. Рекомендация Debian короткая: обновить пакеты nginx.

Это security-апдейт LTS, не смена ветки и не снятие с поддержки. База апстрима в номере остаётся 1.22.1. Патч сидит в суффиксе +deb12u10. Предыдущий суффикс в письме не указан: смотреть нужно candidate из своего зеркала, а не угадывать u8 или u9.

12 сентября тот же набор CVE на Debian 13 закрывал DSA-6496-1 сборкой 1.26.3-3+deb13u8. Bookworm в том DSA не фигурировал. DLA-4784-1 – отдельный LTS-advisory и другая линейка пакета. Тащить trixie-security на 12-ю «чтобы быстрее» не нужно: это другой бинарник и другие зависимости.

На типичном VPS с WordPress за nginx это тот же процесс, который держит TLS, отдаёт статику и проксирует PHP-FPM. Дыра в обработке HTTP, не дыра ядра WordPress. Плагины и тема этот CVE сами по себе не закрывают. FastCGI cache и proxy_cache дыру не включают и не выключают. MariaDB в advisory нет. PHP-FPM из-за nginx перезапускать не требуется.

CVE-2026-42533, CVE-2026-56434, CVE-2026-60005

Формулировки Debian короткие. Оценок CVSS, PoC и факта «уже бьют в дикой природе» в письме нет. Я бы не делал из этого массовую эксплуатацию. Для прод-сайта достаточно закрыть пакет и проверить, что worker поднял новую сборку.

  • CVE-2026-42533. Переполнение кучи в скриптовом движке nginx. Срабатывает, когда директива map делает regex-сопоставление, а строковое выражение ссылается на захваты, которые этот map меняет. Второй путь: некэшируемые переменные меняются между проходом длины скрипта и проходом копирования.
  • CVE-2026-56434. Повторная финализация HTTP-подзапроса даёт use-after-free. Debian пишет, что это видно на SSI вместе с proxy_pass и выключенным proxy_buffering, если ответ апстрима дважды ставит один и тот же subrequest.
  • CVE-2026-60005. ngx_http_regex_exec() мог заменить массив захватов, не обнулив r->ncaptures, если новое регулярное выражение не совпало. Следующий безымянный захват читает неинициализированную память. Итог: раскрытие памяти.

map с регулярками на VPS встречается чаще, чем SSI. Редиректы, кэш-ключ, разбор аргумента, отдельный бэкенд по Host – всё это часто живёт в map. Если в блоке есть regex и переменные вида $1 из этого map, CVE-2026-42533 уже не абстракция из письма.

SSI плюс proxy_pass и proxy_buffering off – более узкий случай. На чистом WordPress за fastcgi_pass такого обычно нет. Но если nginx режет HTML через server-side includes и ходит в апстрим без буфера, Debian прямо указывает use-after-free. Для срабатывания нужен ещё и ответ апстрима, который дважды ставит один subrequest. Конфиг из-за этого DLA править не требуется.

Третья дыра про regex-захваты и неинициализированную память, не про слоган модуля. Выдумывать, с каким набором модулей собран именно пакет bookworm, не буду: в письме этого нет. Для практики достаточно смотреть версию пакета после апдейта, а не гадать про ./configure.

bookworm-lts, не Ubuntu и не nginx.org

Пакет Debian 12, не Ubuntu. В той же пятничной таблице LWN у Ubuntu стоят bison, bubblewrap и gst-plugins-good1.0. Строки nginx там нет. Свой nginx на Ubuntu собирает Canonical. Ждать свой USN, не подмешивать debian-lts в sources.list «на всякий случай».

Mainline 1.31.x и stable 1.30.x с официального сайта сами не приедут, если репозиторий штатный Debian. Номер 1.22.1 после апдейта может остаться тем же. Патч в суффиксе deb12u10. Кто смотрит только nginx -v и решает, что «ничего не приехало», обычно путает апстримную базу с debian-revision.

Проверка без театра. Сначала policy и кандидат из LTS, потом тест конфига и reload, не restart воркеров «на всякий случай». Копию сайта nginx не требует, но копия /etc/nginx перед правками по-прежнему здравый смысл, даже если в этом апдейте конфиг не меняется.

apt-cache policy nginx
nginx -v
sudo apt update
sudo apt install --only-upgrade nginx
sudo nginx -t
sudo systemctl reload nginx

Ожидаемый кандидат на bookworm: 1.22.1-9+deb12u10. Если policy показывает более старый суффикс и зеркало без bookworm-lts, пакет ещё не у вас. Если nginx -t ругается, reload не делайте: worker со старым бинарником лучше живого 502 из-за опечатки, которой в этом апдейте нет, но которая легко появляется, когда параллельно правили конфиг.

Спотыкаются обычно на трёх местах. LTS-карман не в sources.list. Путают DSA trixie 1.26.3 с пакетом bookworm 1.22.1 и ставят не свой релиз. Restart вместо reload, который рвёт keep-alive на ровном месте. Отдельно: кто стоит на Ubuntu, читает DLA как «надо срочно» и тащит deb не своего дистрибутива.

В пятничной таблице LWN рядом у Debian LTS ещё xz-utils (DLA-4783-1) и zip. У стабильной Debian – bind9, chromium и libapache2-mod-auth-openidc. Это другие advisory. Смешивать их в одну команду «обновить всё, что похоже на веб» не нужно. Сначала свой nginx на bookworm, потом остальное по своим письмам. Не отключать AppArmor и firewall «чтобы завелось».

Если сервер на Debian 12, смотрите DLA-4784-1 через apt, без подмешивания trixie и nginx.org. Если на Debian 13 – свой пакет и свой DSA. Ubuntu этот пятничный nginx не закрывает.

Источники и ссылки


Комментарии загружаются…