CVE: CVE-2026-87078
Продукт: Debian
Дата публикации: 22.09.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,15%; процентиль 4,98%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В Debian отслеживается CVE-2026-87078 для пакета libnet-idn-encode-perl. Проблема связана с утечкой выходного буфера в XS-бэкенде Net::IDN::Punycode при каждом отклонённом label в decode_punycode.
Утечка накапливается без успешного вызова, а рост процесса пропорционален удвоенной длине label. В Debian по состоянию на 2026-09-23 статусы bookworm, forky, sid и trixie отмечены как open, фиксированная версия не назначена.
Основные характеристики
Риск состоит в неконтролируемом росте памяти процесса при обработке некорректных punycode-label через XS-бэкенд Net::IDN::Punycode. Каждый отклонённый label оставляет выделенный скаляр и буфер, а ограничение длины label в направлении to-Unicode отсутствует.
- CVSS: 9.1 (CRITICAL), вектор
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
- CWE: CWE-401 — memory leak
- Влияние: рост памяти процесса при каждом отклонённом label, без успешного вызова
- Эксплуатация: доступна извне, без привилегий и взаимодействия пользователя
- EPSS: 0.15% (процентиль 4.98%)
Какие продукты и версии затронуты
В Debian затронут пакет libnet-idn-encode-perl, который предоставляет Perl-модуль Net::IDN::Punycode.
Затронуты версии от 2.302 до 2.590 включительно.
Debian Security Tracker фиксирует следующие релизы с открытым статусом:
- bookworm — версия в репозитории
2.500-3, статус open, urgency not yet assigned
- forky — версия в репозитории
2.500-5, статус open, urgency not yet assigned
- sid — версия в репозитории
2.500-5, статус open, urgency not yet assigned
- trixie — версия в репозитории
2.500-5, статус open, urgency not yet assigned
Причина уязвимости
XS-бэкенд выделяет скаляр до проверки входных данных и задаёт размер буфера равным удвоенной длине label.
Выделение освобождается только по пути успешного возврата. Три croak, отклоняющие label, не освобождают выделенный объект.
Ограничение в 63 байта проверяется только при конвертации в ASCII, а не при конвертации в Unicode. Поэтому длина label в направлении to-Unicode не ограничена.
Как работает атака
Атакующий отправляет некорректные punycode-label в функцию decode_punycode.
Каждый вызов с отклонённым label вызывает выделение буфера размером, равным удвоенной длине label. Буфер не освобождается.
Процесс растёт линейно по количеству вызовов и сумме длин label. Успешный вызов не требуется.
Условия успешной эксплуатации
Для эксплуатации достаточно доступа к Perl-процессу, который вызывает decode_punycode из XS-бэкенда Net::IDN::Punycode.
Необходимо наличие пакета libnet-idn-encode-perl версии от 2.302 до 2.590.
Достаточна возможность передавать некорректные label в decode_punycode через Perl-приложение, которое использует этот модуль.
Системные привилегии не требуются.
Возможный сценарий атаки
Perl-сервис обрабатывает пользовательский вход и вызывает decode_punycode для проверки punycode-label.
Атакующий посылает label с некорректной структурой. XS-бэкенд выделяет буфер, затем выбрасывает croak.
Повторяя вызовы с длинными некорректными label, атакующий увеличивает потребление памяти процесса.
Рост продолжается до исчерпания доступной памяти или остановки приложения.
Есть ли публичный эксплойт
В предоставленных источниках нет отдельного публичного эксплойта в виде готового инструмента или PoC-скрипта.
Официальные ссылки ведут на патчи и changelog, а не на эксплуатационный код.
Отсутствие публичного эксплойта в перечисленных источниках не означает, что техническое описание механизма недостаточно для воспроизведения поведения.
Признаки эксплуатации
Специфичных IOC для CVE-2026-87078 в предоставленных источниках нет.
Доступны только общие точки контроля:
- рост потребления памяти Perl-процесса при обработке punycode-label
- частые вызовы decode_punycode с некорректными label
- увеличение размера heap и количество выделений в XS-бэкенде Net::IDN::Punycode
- аномальные значения RSS или VmRSS у процессов, использующих libnet-idn-encode-perl
Как обнаружить атаку
Для обнаружения достаточно мониторинга памяти Perl-процессов.
Контролировать следует:
- рост RSS/VSZ процесса при обработке punycode-label
- частоту вызовов decode_punycode и долю отклонённых label
- увеличение числа выделений в XS-бэкенде Net::IDN::Punycode
- аномальные значения heap size в Perl-процессах
Как проверить свою версию
Проверка версии пакета libnet-idn-encode-perl выполняется командами:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' libnet-idn-encode-perl
apt-cache policy libnet-idn-encode-perl
Для проверки дистрибутива Debian:
Bash:
cat /etc/debian_version
cat /etc/os-release
Если имя пакета в вашей конфигурации отличается, замените
libnet-idn-encode-perl на фактическое имя пакета.Исправление
Официальный фикс для Debian по состоянию на 2026-09-23 не назначен.
Статусы bookworm, forky, sid и trixie отмечены как open.
До появления официального обновления рекомендуется:
- ограничить длину label перед передачей в decode_punycode
- использовать только XS-бэкенд Net::IDN::Punycode при обработке punycode-label
- изолировать Perl-процессы, обрабатывающие пользовательские punycode-label
- ограничить количество вызовов decode_punycode на единицу времени
Временные меры защиты
Временные меры защиты:
- ограничить длину label до 63 байт перед передачей в decode_punycode
- использовать только XS-бэкенд Net::IDN::Punycode при обработке punycode-label
- изолировать Perl-процессы, обрабатывающие пользовательские punycode-label
- ограничить количество вызовов decode_punycode на единицу времени
Как проверить устранение уязвимости
После применения обновления проверьте версию пакета:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' libnet-idn-encode-perl
Убедитесь, что версия не входит в диапазон от 2.302 до 2.590.
Проверьте статус обновления через Debian Security Tracker:
Debian Security Tracker — CVE-2026-87078
Вывод
CVE-2026-87078 в Debian представляет риск неконтролируемого роста памяти Perl-процесса при обработке некорректных punycode-label через XS-бэкенд Net::IDN::Punycode.
Проблема подтверждена для пакетов libnet-idn-encode-perl версий от 2.302 до 2.590 в релизах bookworm, forky, sid и trixie.
До официального обновления рекомендуется ограничивать длину label и изолировать Perl-процессы, обрабатывающие пользовательские punycode-label.
Официальные источники
История обновлений статьи
- 23.09.2026 — Опубликована первая версия материала.
