CVE-2026-19873 в Ubuntu: исчерпание ресурсов в HTML::FormFu

CVE: CVE-2026-19873
Продукт: Ubuntu
Дата публикации: 31.08.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,52%; процентиль 42,02%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Уязвимость CVE-2026-19873 в пакете libhtml-formfu-perl позволяет вызвать отказ в обслуживании через неограниченный параметр в строке запроса. Проблема затрагивает все поддерживаемые LTS-релизы Ubuntu, где установлен данный пакет. В материале описаны механика атаки, затронутые версии и способы проверки и исправления.

Основные характеристики​


Риск представляет собой отказ в обслуживании (DoS) веб-приложений, использующих библиотеку HTML::FormFu. Атакующий может перегрузить сервер, отправив один HTTP-запрос без аутентификации.

  • Тип ошибки: CWE-770 (Allocation of Resources Without Limits or Throttling) и CWE-1284 (Improper Validation of Specified Quantity in Input).
  • CVSS 3.1: 7.5 (HIGH). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.
  • Условия атаки: Сетевой доступ, отсутствие аутентификации, отсутствие пользовательского взаимодействия.
  • Эксплуатация: Публичные патчи и обсуждения доступны, подтвержденная эксплуатация в реальных атаках не задокументирована.
  • EPSS: 0,52% (процентиль 0,42%).

Какие продукты и версии затронуты​


Уязвимость затрагивает пакет libhtml-formfu-perl в следующих версиях Ubuntu:

  • Ubuntu 16.04 LTS (xenial): версия пакета 2.01000-2.
  • Ubuntu 18.04 LTS (bionic): версия пакета 2.05000-1.
  • Ubuntu 20.04 LTS (focal): версия пакета 2.07000-1.
  • Ubuntu 22.04 LTS (jammy): версия пакета 2.07000-1.
  • Ubuntu 24.04 LTS (noble): версия пакета 2.07000-1.
  • Ubuntu 26.04 LTS (resolute): версия пакета 2.07000-2.

Последняя версия на CPAN — 2.07 (2018 г.), версия 2.08 существует только в git-репозитории. Ubuntu классифицирует эту уязвимость как medium.

Причина уязвимости​


Причина уязвимости заключается в отсутствии ограничений на количество повторений элементов формы. Когда элемент Repeatable имеет установленный атрибут counter_name, метод process читает количество повторений из параметра строки запроса.

Проверяется только, что значение является положительным целым числом. Затем это значение передается в метод repeat, который выполняет глубокое клонирование дочернего дерева элементов для каждой итерации. Никакой механизм не ограничивает это значение, и ни один атрибут не позволяет приложению установить лимит.

Поскольку чтение происходит при каждом запросе, до того как форма решает, была ли она отправлена, обычный GET-запрос достигает цикла клонирования без необходимости в учетных данных, сессии или теле запроса.

Как работает атака​


Атакующий отправляет HTTP-запрос (например, GET) к веб-странице, содержащей форму с элементом Repeatable, у которого задан counter_name. В строке запроса указывается параметр с большим значением (например, 10000).

Библиотека HTML::FormFu читает это значение и начинает клонировать дерево элементов формы. Если элементы вложены (Repeatable внутри Repeatable), количество клонов умножается. Например, внешнее и внутреннее значение 100 приводят к созданию 10 000 клонов.

После отправки формы ограничения (constraints) каждого клонированного поля сканируют все дерево элементов в методе _find_field_value. Это приводит к нелинейному росту затрат на CPU и памяти. Один такой запрос может исчерпать ресурсы сервера, вызвав отказ в обслуживании.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости необходимы следующие условия:

  • В системе установлен пакет libhtml-formfu-perl в уязвимой версии.
  • Веб-приложение использует HTML::FormFu и содержит форму с элементом Repeatable, у которого задан атрибут counter_name.
  • Атакующий имеет сетевой доступ к веб-интерфейсу, где отображается такая форма.
  • Не требуется аутентификация, сессия или отправка тела запроса (достаточно GET-запроса).

Возможный сценарий атаки​


Атакующий обнаруживает веб-страницу, использующую HTML::FormFu, и находит параметр в URL, соответствующий counter_name элемента Repeatable. Он формирует запрос с завышенным значением этого параметра.

При обработке запроса библиотека начинает массовое клонирование элементов формы. Если форма сложная или элементы вложены, нагрузка на CPU и память резко возрастает. Сервер начинает медленно отвечать или перестает отвечать, что приводит к отказу в обслуживании для легитимных пользователей.

Поскольку атака не требует аутентификации, она может быть запущена автоматически с бот-сети или вручную одним атакующим.

Есть ли публичный эксплойт​


Доступны публичные патчи и обсуждения в репозитории проекта. На сайте MetaCPAN опубликован патч для версии 2.08. В GitHub-репозитории проекта HTML-FormFu есть issue, описывающий проблему.

Подтвержденная эксплуатация в реальных атаках (in-the-wild) в предоставленных источниках не задокументирована. Однако наличие публичных PoC и патчей означает, что атакующие могут легко воспроизвести атаку.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости в источниках не приведены. Можно использовать следующие неспецифичные признаки:

  • Резкое увеличение потребления CPU и памяти веб-сервером или Perl-процессами.
  • Запросы в логах веб-сервера с аномально длинными строками запроса, содержащими параметры, соответствующие counter_name.
  • Ошибки в логах приложения, связанные с исчерпанием памяти (Out of Memory) или превышением лимитов ресурсов.

Как обнаружить атаку​


Для обнаружения атаки можно использовать следующие методы:

  • Мониторинг потребления ресурсов (CPU, память) на серверах, где установлен libhtml-formfu-perl.
  • Анализ логов веб-сервера на предмет запросов с аномальными параметрами в строке запроса.
  • Использование WAF (Web Application Firewall) для ограничения длины строки запроса или конкретных параметров.
  • Проверка журналов приложений на ошибки, связанные с исчерпанием ресурсов.

Как проверить свою версию​


Для проверки версии пакета libhtml-formfu-perl в Ubuntu используйте следующие команды:

Bash:
cat /etc/os-release
uname -r
apt-cache policy libhtml-formfu-perl
ubuntu-security-status

Команда ubuntu-security-status покажет, есть ли доступные обновления безопасности для установленных пакетов.

Исправление​


Основной способ исправления — обновление пакета libhtml-formfu-perl до версии, содержащей исправление. Ubuntu публикует обновления через систему безопасности.

  • Выполните sudo apt update для обновления списков пакетов.
  • Выполните sudo apt upgrade для установки доступных обновлений.
  • Проверьте, что версия пакета изменилась и соответствует исправленной версии (см. официальную страницу Ubuntu Security).

Если обновление недоступно для вашей версии Ubuntu, рассмотрите возможность отключения использования элемента Repeatable с counter_name в приложении или применение временных мер защиты.

Временные меры защиты​


Пока обновление не установлено, можно применить следующие временные меры:

  • Ограничьте длину строки запроса на уровне веб-сервера (Nginx, Apache) или WAF.
  • Настройте WAF для блокировки запросов с аномально большими значениями параметров, соответствующих counter_name.
  • Если возможно, временно отключите или модифицируйте форму в приложении, чтобы не использовать Repeatable с counter_name.
  • Ограничьте доступ к уязвимой странице, если это возможно, с помощью IP-фильтрации или аутентификации.

Как проверить устранение уязвимости​


После обновления пакета проверьте, что уязвимость исправлена:

  • Убедитесь, что версия пакета libhtml-formfu-perl соответствует исправленной версии (см. официальную страницу Ubuntu Security).
  • Проведите тестовый запрос с завышенным значением counter_name в тестовой среде и убедитесь, что сервер не испытывает перегрузки.
  • Проверьте логи приложения на отсутствие ошибок, связанных с исчерпанием ресурсов.
  • Используйте ubuntu-security-status для подтверждения, что все обновления безопасности установлены.

Вывод​


CVE-2026-19873 представляет собой серьезный риск для систем Ubuntu, где установлен пакет libhtml-formfu-perl и используется HTML::FormFu с элементами Repeatable. Атака проста в реализации и не требует аутентификации.

Рекомендуется срочно обновить пакет до исправленной версии и применить временные меры защиты, если обновление задерживается. Регулярный мониторинг безопасности и обновление пакетов помогут снизить риск подобных уязвимостей.

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


  1. NVD — CVE-2026-19873
  2. Ubuntu OSV — CVE-2026-19873
  3. FIRST EPSS — CVE-2026-19873

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


  • 03.09.2026 — Опубликована первая версия материала.
  • 04.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ