Обновите Unbound на Debian 13: резолвер можно уронить или подсунуть ему чужой DNS-ответ

23 октября 2026 года Yves-Alexis Perez отправил в рассылку debian-security-announce письмо DSA-6581-1. Пакет один: unbound, проверяющий рекурсивный DNS-резолвер с кэшем. Для стабильного выпуска, это trixie, то есть Debian 13, исправление названо прямо: 1.26.2-0+deb13u1. В письме пять CVE. Условия у них разные, и на дефолтном конфиге срабатывают не все.

Пять CVE в DSA-6581-1

CVE-2026-35501 и CVE-2026-50106 про DNSSEC и второй якорь доверия. Нужны оба условия сразу: корневой trust anchor и ещё строка trust-anchor: на зону, родитель которой по цепочке от корня точно не подписан.

В первой карточке атакующий подсовывает NSEC со снятым битом SOA. Валидатор принимает ответ как доказательство, что эта зона не защищена, кладёт его в кэш и не проверяет подпись RRSIG, ради которой якорь и ставили. Диапазон в описании: Unbound с 1.0.1 по 1.26.1 включительно.

Вторая карточка про другой трюк. Хватает одного поддельного NXDOMAIN на имя внутри той же зоны. В подписи NSEC или SOA поле SignerName указывает на небезопасного родителя. Валидатор переключается сначала на корневой якорь, потом на этого родителя. Записи зоны начинают считаться неподписанными, а имена, которые в ней есть, объявляются несуществующими. Верхняя граница та же, 1.26.1.

Нет второй строки trust-anchor: на такую зону, эти две карточки конфиг не цепляют. Одного корневого якоря мало.

CVE-2026-96405 про сжатые имена. До 1.26.1 включительно Unbound ограничивает, сколько раз можно пройти по указателям сжатия внутри одного имени, и не держит общий бюджет работы на всё входящее сообщение. Длинная цепочка таких указателей заставляет процесс крутить процессор, резолвер начинает отвечать хуже всем. Нужны сразу две вещи: право слать рекурсивные запросы и контроль над обычной делегированной зоной, которая отдаёт специально собранные ответы.

CVE-2026-97206 уже про падение службы. Версии с 1.22.0 по 1.26.1, DNS-over-QUIC и несколько рабочих потоков. Удалённый клиент DoQ провоцирует смену пути QUIC. Очистка соединения освобождает поток, а незавершённый ответ всё ещё держит на него указатель. Когда ответ доезжает, процесс обращается к уже освобождённой памяти (use-after-free) и падает. Пока unbound не поднимут, машина перестаёт резолвить имена. В бюллетене это отказ в обслуживании.

CVE-2026-109125 про кэш, и только если unwanted-reply-threshold больше нуля. В карточке прямо сказано: так по умолчанию не настроено. Чужой UDP-пакет похож на ответ, попадает на текущий исходящий порт рекурсивного запроса, но идентификатор (TXID) ни одному ожидающему запросу не подходит. Unbound считает пакет лишним. Счётчик доходит до порога, процесс чистит кэш наборов записей и кэш сообщений, а сам ожидающий запрос при этом не сбрасывает. Снаружи по тому, исчезла ли уже закэшированная запись, видно, угадан ли порт.

Если ещё удаётся держать окно одновременных запросов, порт отфильтровывают и подбирают TXID. Тогда в кэш можно положить чужой ответ. В описании приводят порог в 10 миллионов: на публичном резолвере подбор с ним ненадёжен. Порог выключен, этого канала нет. Верхняя граница снова 1.26.1.

Пакет 1.26.2-0+deb13u1 и bookworm

DSA закрывает stable одной строкой: trixie, пакет 1.26.2-0+deb13u1. За подробным статусом письмо отправляет на страницу unbound в трекере. Там видно, откуда берётся сборка и чего нет у Debian 12.

  • trixie, основной архив: 1.22.0-2+deb13u3, статус vulnerable.
  • trixie-security: 1.26.2-0+deb13u1, статус fixed.
  • bookworm: 1.17.1-2+deb12u4, статус vulnerable.
  • bookworm, ветка security: 1.17.1-2+deb12u3, статус vulnerable.
  • forky и sid: 1.26.2-1, статус fixed.

Исправленной версии для Debian 12 в таблице нет. На карточках bookworm отмечен как vulnerable. Сборку 1.26.2-0+deb13u1 на bookworm не ставить: это пакет trixie, с чужими зависимостями. Пока для bookworm не появится своя строка fixed, apt upgrade на Debian 12 эти ошибки не закроет.

Падение на DNS-over-QUIC в тексте CVE-2026-97206 начинается с версии 1.22.0. Пакет bookworm 1.17.1 ниже этой границы. Остальные описания на 1.17.1 распространяются, а пакета с фиксом для Debian 12 всё равно нет.

На forky и sid фикс уже другой: 1.26.2-1, без суффикса deb13u1. Подменять его пакетом из trixie-security не нужно. Если apt-cache policy unbound показывает 1.26.2-1 или новее, машина фикс уже получила через testing или sid.

Unbound на VPS с WordPress

nginx, PHP-FPM, MariaDB и сам WordPress пакет unbound не ставят. Посетитель открывает сайт через свой DNS, не через резолвер на VPS. Бюллетень про запросы, которые делает сам сервер: apt, почта, cron, исходящие вызовы PHP. Отравили кэш или уронили unbound, и сервер начинает ходить не туда или вовсе перестаёт резолвить имена. Уже открытые соединения nginx от этого сами не рвутся.

Сначала смотрят, есть ли пакет. В dpkg -l unbound нет строки ii, значит unbound не установлен и этот DSA машину не касается. nginx -t здесь не при чём: конфиг веб-сервера письмо не меняет.

На Debian 13 в apt-cache policy unbound кандидат должен быть 1.26.2-0+deb13u1 из trixie-security. Если сверху остаётся 1.22.0-2+deb13u3, security-ветки в источниках apt нет. apt upgrade тогда оставит уязвимую сборку из основного архива.

Когда кандидат уже правильный, пакет можно обновить. unbound -V печатает версию программы, 1.26.2. Суффикс Debian 0+deb13u1 виден в dpkg -l. Конфиг в /etc/unbound не трогать.

sudo apt update
sudo apt install --only-upgrade unbound
dpkg -l unbound
unbound -V
systemctl is-active unbound
sudo systemctl restart unbound

Старый процесс держит старый код, пока его не перезапустят. Ребут VPS не нужен. systemctl restart unbound на пару секунд обрывает локальный резолв: почта и cron в этот момент могут споткнуться. PHP-FPM и nginx из-за этого пакета перезапускать не надо.

В конфиге стоит глянуть, не включены ли короткие пути из карточек. unwanted-reply-threshold больше нуля. Отдельный trust-anchor: на зону под неподписанным родителем. access-control и interface, которые пускают рекурсию не только с самой машины. DNS-over-QUIC в несколько потоков. Нет этих строк, нет и удобного входа снаружи. Пакет на Debian 13 всё равно стоит обновить: фикс уже лежит в trixie-security, а bookworm его ещё ждёт.

На Ubuntu этот deb не ставится. Там своя сборка и свой репозиторий. Строку debian-security в sources Ubuntu-машины не добавлять.

Для Debian 13 с установленным unbound ход один: увидеть в policy версию 1.26.2-0+deb13u1 и обновить пакет. Для Debian 12 своей исправленной версии в трекере нет, пакет trixie туда не тащить.

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


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