24 октября 2026 года Debian выпустил DSA-6583-1 по библиотеке libheif. Письмо в debian-security-announce отправил Aron Xu. Для стабильного выпуска, Debian 13 (trixie), исправление собрано как 1.23.6-2~deb13u1. Его забирают из архива trixie-security. В основном репозитории trixie номер сам не сменится.
libheif читает и пишет картинки HEIF и AVIF. HEIF это контейнер, в котором телефон обычно кладёт фото, файл с расширением .heic. AVIF устроен так же, только картинка сжата кодеком AV1, и этот формат сайты уже и отдают, и принимают. На VPS с WordPress библиотека участвует в запросе, когда PHP или ImageMagick открывает такую загрузку, строит превью или перекодирует файл. nginx её в свой воркер не загружает. К MariaDB и к кэшу страниц бюллетень отношения не имеет.
Что описывает DSA-6583-1
Debian описывает несколько ошибок одним текстом. Специально собранная картинка может устроить отказ в обслуживании: процесс, который её открыл, либо съедает слишком много памяти и процессора, либо падает. Из того же абзаца второе последствие: память этого процесса можно прочитать. Речь не про «чужое фото утекло в JPEG», а про содержимое адресного пространства программы, которая файл разбирала. На сайте это PHP, ImageMagick или утилита превью, не база и не nginx.
Отдельно закрыта ошибка со штампом времени при кодировании, в том числе когда чужой файл перекодируют. Библиотека может обратиться к уже освобождённой памяти (use-after-free) и освободить один и тот же блок второй раз. В трекере libheif этой паре соответствует запись GHSA-qwpf-5wf7-r996: при кодировании картинки со штампом TAI остаётся мелкая копия описания, и память освобождают дважды. Для trixie запись помечена как fixed. На bookworm она всё ещё vulnerable.
На сайте с медиатекой это выглядит не как остановленный nginx. Падает воркер PHP на запросе, который делает превью или конвертацию. Соседние воркеры живут, пока у всего пула не кончилась память. Снаружи один такой запрос часто приходит как 502 или как оборванная загрузка. JPEG и PNG через libheif не ходят, поэтому обычная картинка из редактора этот путь не трогает.
1.19.8 в trixie и 1.23.6 в security
На странице DSA-6583-1 обычный trixie показан версией 1.19.8-1+deb13u1 и статусом vulnerable. Исправленная сборка указана отдельно: trixie (security), 1.23.6-2~deb13u1, статус fixed. Это и есть пакет, который просит бюллетень. Скачок с 1.19.8 на 1.23.6 заметный: в security лежит линейка 1.23.
Тильда в номере для пересборки в security обычное дело. 1.23.6-2~deb13u1 для apt чуть старше, чем 1.23.6-2 из sid, и на Debian 13 выбирается именно вариант с deb13u1. В forky и sid трекер показывает 1.23.6-2 без этого суффикса. Пакет из sid на стабильный VPS тащить не нужно: бюллетень называет конкретную сборку для trixie.
Если apt-cache policy libheif1 показывает только архив trixie и версию 1.19.8, security-репозиторий не подключён или индекс старый. Обновление из того, что уже лежит в основном архиве, номер не сдвинет. В списке доступных версий у trixie без пометки security так и остаётся 1.19.8.
Bookworm в DSA-6583-1 не назван. В том же списке у него стоит 1.15.1-1+deb12u1, строки bookworm-security для libheif нет. Сборку 1.23.6-2~deb13u1 на Debian 12 ставить нельзя: она собрана для trixie, зависимости другие. Ubuntu этот бюллетень тоже не закрывает. Репозиторий debian-security к источникам Ubuntu не добавляют.
Одна запись на странице исходного пакета всё ещё vulnerable на trixie, forky и sid сразу: GHSA-vr5j-9r89-725x, лишняя нагрузка на процессор при разборе unci. Сегодняшняя сборка её не снимает. Обновление всё равно ставится из-за того, что бюллетень уже описал: падение, расход ресурсов, чтение памяти процесса и ошибка при кодировании со штампом времени.
libheif1 и медиатека WordPress
Сначала смотрят, есть ли пакет. Если dpkg -l libheif1 его не знает, сервер HEIF и AVIF этой библиотекой не открывает, и бюллетень его не касается. Ставить libheif только ради бюллетеня не нужно.
Когда пакет уже стоит, его обычно принесла обработка картинок: ImageMagick, модуль Imagick в PHP, heif-thumbnailer или heif-gdk-pixbuf. На типичном сервере с WordPress цепочка такая. В медиатеку приходит .heic с телефона или .avif, PHP просит Imagick или внешний convert, те зовут libheif. Плагины кодеков (libheif-plugin-aomdec, libheif-plugin-libde265 и соседние) зависят от libheif1 строго той же версии. Вместе с библиотекой apt должен подтянуть и те плагины, которые уже установлены. Иначе зависимости разъедутся и обновление остановится на полпути.
Уже запущенный php-fpm старый код из памяти не выкидывает. Файл .so на диске новый, а воркеры работают с тем, что загрузили при старте. После apt нужен рестарт пула. nginx -t и reload здесь ничего не меняют: в воркере nginx этой библиотеки нет. Ребут всего VPS не обязателен, если перезапущен php-fpm и нет другой долгоживущей программы, которая держит libheif открытой. Короткий convert из cron подхватит новый файл сам, при следующем запуске.
Если в настройках WordPress выбран GD и сайт принципиально не принимает HEIC и AVIF, риск на загрузке ниже. Установленный libheif1 всё равно лучше обновить: его могла оставить зависимость ImageMagick, даже когда превью рисует GD. Проверка одна и та же, через dpkg и apt-cache policy.
Пакет из trixie-security и рестарт php-fpm
Команды для Debian 13, где есть sudo и в источниках подключён trixie-security. Сначала смотрите, откуда apt вообще видит пакет, потом обновляете только libheif1.
apt-cache policy libheif1 sudo apt update sudo apt install --only-upgrade libheif1 apt-cache policy libheif1 dpkg -l libheif1 systemctl list-units --type=service --state=running 'php*-fpm*'
Во втором выводе policy установленная версия должна быть 1.23.6-2~deb13u1, а в строке архива должен читаться trixie-security. Если кандидат так и остался 1.19.8-1+deb13u1, apt не видит security. Собирать библиотеку из исходников на проде и подкладывать пакет из sid или с bookworm не стоит. Сначала в источниках появляется строка trixie-security, затем тот же apt install --only-upgrade.
Юнит из последней команды перезапустите по имени, которое напечатал systemctl. На одной машине это php8.2-fpm, на другой php8.3-fpm или php8.4-fpm. Имя берите из вывода, не из привычки. Флаг --only-upgrade новый пакет не ставит: если libheif1 не был установлен, apt так и скажет, и это нормальный результат, а не ошибка зеркала.
heif-gdk-pixbuf и heif-thumbnailer на сервере без графической оболочки часто отсутствуют. Если dpkg их показывает, обновите тем же --only-upgrade: это пакеты того же исходного libheif, в security они тоже собраны как 1.23.6-2~deb13u1. После рестарта php-fpm загрузка в медиатеку идёт тем же путём, что и до обновления. Отдельный прогон конфига nginx для этой библиотеки не нужен.