30 октября 2026 года в 16:39 UTC Aron Xu отправил в рассылку debian-security-announce письмо DSA-6597-1. В шапке бюллетеня дата 31 октября, подпись та же: Aron Xu. Пакет один, dpdk. Debian называет его набором библиотек для быстрой обработки пакетов. В письме пятнадцать CVE. Риск сформулирован коротко: смотря какие функции включены, специально собранный сетевой пакет или запрос от гостевой машины может остановить обработку или оставить процесс с битой памятью (memory corruption).
На обычном VPS с WordPress этих библиотек нет. nginx, PHP-FPM и MariaDB пакет dpdk не тянут. Сами программы DPDK живут в пространстве пользователя и говорят с сетевой картой напрямую, мимо обычного стека ядра. Если в выводе ниже нет ни dpdk, ни librte-*, бюллетень этот сайт не трогает. Имеет значение машина, которая принимает трафик гостей через vhost DPDK: процесс на хосте там как раз и есть цель. Гость на арендованном VPS свой apt до хоста провайдера не дотягивает.
lib/vhost, vhost-crypto и GSO
Письмо короткое и отправляет за статусом на страницу dpdk в трекере. Разбор карточек оттуда. Номера в бюллетене: CVE-2026-86561, CVE-2026-86562, CVE-2026-86563, CVE-2026-86564, CVE-2026-86565, CVE-2026-86566, CVE-2026-86567, CVE-2026-86845, CVE-2026-86846, CVE-2026-86847, CVE-2026-86848, CVE-2026-86849, CVE-2026-86856, CVE-2026-93683, CVE-2026-100236. Семь первых и CVE-2026-93683 сидят в библиотеке vhost. Пять следующих в backend vhost-crypto. Одна в драйвере nfp vDPA. Последняя в software GSO.
CVE-2026-86561 срабатывает при настройке области памяти vhost: размер не проверяют до mmap. Хост может упасть. CVE-2026-86562 в обработчике очереди управления VDUSE. Поле дескриптора читают дважды, гость между чтениями его меняет и записывает в буфер хоста больше, чем тот выделил. Содержимое задаёт гость. CVE-2026-86563 в расчёте отображения лога vhost: смещение применяют дважды, доступ к памяти идёт не туда.
CVE-2026-86564 в обработчике очереди управления virtio-net. Перед чтением command_data длину не проверяют, процесс на хосте может упасть, прочитав память за буфером. Баг Debian 1147518. На bookworm у карточки пометка vulnerable (no DSA, postponed), на trixie трекер уже пишет fixed. CVE-2026-86565: гость разводит размер virtqueue и таблицы inflight-дескрипторов, запись в процессе vhost на хосте уходит за границу буфера.
CVE-2026-86566 про слишком короткие RX-дескрипторы. Они занижают длину копирования, когда пакет ставят в очередь. В карточке прямо назван общий backend, который от этого падает: OVS-DPDK. CVE-2026-86567 в обработчике VDUSE. Когда IOTLB уже недействителен, указатели vring не сбрасывают, и процесс на хосте лезет в память, которую отображение больше не держит.
CVE-2026-93683 про таблицу indirect-дескрипторов virtio. Хост читает длину из памяти гостя больше одного раза и может выделить свою копию раньше, чем проверит это число. Гость меняет длину между чтениями или подсовывает индекс next за пределами короткой копии на пути vDPA. Процесс vhost выходит за проверенное отображение и может упасть или встать. Байты за границей идут как поля дескриптора, чтобы перевести гостевой адрес. Гостю их как данные пакета не возвращают. В карточке это остаток пути копирования несмежных indirect-дескрипторов, который появился вместе с исправлением CVE-2018-1059.
Пять карточек vhost-crypto включаются, если на хосте работает именно этот backend, а не обычная сетевая очередь. CVE-2026-86845: после очистки сессии остаётся старый указатель, путь данных не смотрит тип сессии, прежде чем её прицепить. Процесс обращается к уже отданной сессии или путает тип. CVE-2026-86846: индекс дескриптора из avail-ring берут без проверки границы, запись уходит за буфер backend на хосте. CVE-2026-86847: если отобразить дескриптор гостя не вышло, очистка цепочки идёт по неинициализированному указателю next. Процесс зависает или падает. CVE-2026-86848: снимок indirect-дескриптора дважды читает индекс next, гость между чтениями подсовывает другой. CVE-2026-86849: счётчик длины цепочки не вмещает число, на пути RSA длину не проверяют, запись уходит за конец буфера backend.
CVE-2026-86856 в драйвере nfp vDPA. Буферы рассчитаны на одну пару очередей. Если virtqueue больше, хост падает. Это карта и драйвер nfp, не каждая установка DPDK. CVE-2026-100236 в библиотеке software GSO. При копировании заголовков в новый буфер пакета (mbuf) код не проверяет, что заголовок влезает в первый сегмент источника и в буфер назначения. Заголовок длиннее настроенного размера сегмента GSO ломает расчёт длины полезной нагрузки вниз. Сетевой пакет, в том числе снаружи, а не только от гостя, может заставить процесс прочитать или записать память за буфером. Условие одно: пакет вообще обрабатывают через software GSO.
Пакет 24.11.8-0+deb13u1
На странице DSA-6597-1 у исходного пакета dpdk для стабильного выпуска две строки, которые имеют значение на проде.
- trixie, основной архив:
24.11.4-0+deb13u1, статус vulnerable. - trixie-security:
24.11.8-0+deb13u1, статус fixed.
На странице пакета рядом остальные выпуски. bookworm в основном архиве 22.11.11-0+deb12u1, в bookworm-security 22.11.7-1~deb12u1. По всем пятнадцати карточкам обе строки всё ещё vulnerable. Более новый номер в основном архиве Debian 12 дыру не закрывает, и более старый пакет из security тоже. forky и sid уже на 25.11.4-1, статус fixed. Бюллетень называет исправление только для стабильного выпуска, это Debian 13. Сборку 24.11.8-0+deb13u1 на Debian 12 не ставить: ветка 24.11, не 22.11, зависимости другие. На Ubuntu этот deb тоже не ставится.
Если на forky или sid apt-cache policy dpdk уже показывает 25.11.4-1 или новее, откатывать машину на deb13u1 не нужно. Номер в имени пакета trixie это линия 24.11 с ревизией Debian, не отдельный апстрим «с нуля».
В control сборки 24.11.8-0+deb13u1 бинарных пакетов десятки. К карточкам ближе всего dpdk, librte-vhost25, librte-gso25, librte-net-vhost25 и librte-vdpa-nfp25. Рядом dpdk-dev, dpdk-doc, libdpdk-dev и остальные librte-* из того же исходника. FAQ Debian, на который ссылается бюллетень, просит обновить все бинарные пакеты исходника, которые уже стоят. Одного apt-get install dpdk для этого мало.
dpkg-query -W -f '${Package} ${Version}\n' dpdk dpdk-dev dpdk-doc libdpdk-dev 'librte-*'
sudo apt-get update
sudo apt-get upgrade
dpkg-query -W -f '${Package} ${Version}\n' dpdk dpdk-dev dpdk-doc libdpdk-dev 'librte-*'
Если какого-то имени нет, dpkg-query пишет no packages found matching и всё равно печатает те, что стоят. Пустой список значит, ставить нечего. После обновления у пакетов trixie в строке версии должен быть 24.11.8-0+deb13u1. Если вторая проверка всё ещё показывает 24.11.4-0+deb13u1, в источниках нет сюита trixie-security. Как его подключают, Debian пишет на странице security. На неё же ссылается бюллетень. Полный apt-get upgrade заодно заберёт другие ожидающие обновления, nginx или PHP в том числе, если они уже в очереди. Это не часть DSA-6597-1. Нужен только dpdk: перечислите имена из вывода dpkg-query и поставьте их через sudo apt-get install --only-upgrade с этими именами, без пустого списка.
Процесс, который уже загрузил старые .so, сам на новую библиотеку не перейдёт. Если на хосте крутится OVS-DPDK или свой vhost, его перезапускают после обновления. Имя unit у каждой схемы своё, его видно по процессу, который держит библиотеку. FAQ для этого указывает checkrestart из пакета debian-goodies. Ребут VPS не нужен: пакет работает в пространстве пользователя, это не ядро. nginx -t к версии librte отношения не имеет. PHP-FPM и MariaDB из-за этого пакета не перезапускают.
На Debian 13, где реально крутится vhost DPDK или software GSO, действие одно: поставить 24.11.8-0+deb13u1 из trixie-security и перезапустить процесс, который ещё держит старые библиотеки. Пятнадцать карточек не означают пятнадцать дыр на каждом сервере с WordPress. Их включает код vhost, backend vhost-crypto, драйвер nfp vDPA или software GSO. Закрывает все пятнадцать на trixie всё равно один исходный пакет. На Debian 12 этого исправления в бюллетене нет.