CVE-2026-87078 в Debian: утечка памяти в libnet-idn-encode-perl и условия её эксплуатации

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.

Официальные источники​


  1. NVD — CVE-2026-87078
  2. Debian Security Tracker — CVE-2026-87078
  3. FIRST EPSS — CVE-2026-87078

История обновлений статьи​


  • 23.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ