Новая уязвимость в libxml2: переполнение буфера в утилите xmlcatalog может привести к выполнению кода

vulnerability

Разработчики libxml2 выпустили исправление для уязвимости CVE-2026-11979, связанной с переполнением стека в утилите xmlcatalog при работе в режиме "--shell". Проблема затрагивает все версии библиотеки вплоть до 2.15.3 включительно. По шкале CVSS 4.0 ей присвоен низкий уровень опасности (1,8 балла), однако потенциальная возможность выполнения произвольного кода делает её серьёзной. Примечательно, что мейнтейнеры проекта не согласились с такой классификацией и сочли находку обычной ошибкой, а не уязвимостью.

Уязвимость CVE-2026-11979

Библиотека libxml2 - одна из самых распространённых реализаций парсинга XML на языке C. Она используется в сотнях проектов, включая операционные системы Linux, macOS, а также инструменты веб-разработки. Утилита xmlcatalog предназначена для работы с SGML- и XML-каталогами, и, помимо стандартного режима командной строки, поддерживает интерактивный режим "--shell", в котором пользователь последовательно вводит команды.

Исследователи обнаружили, что функция "usershell()", обрабатывающая пользовательский ввод в этом интерактивном режиме, использует буферы фиксированного размера на стеке без корректной проверки границ. Если подать на вход строку, длина которой превышает ожидаемую, происходит переполнение внутренних буферов "command", "arg" и "argv". В результате нарушается целостность стека, что может привести к аварийному завершению процесса или, при определённых условиях, к выполнению произвольного кода с правами процесса xmlcatalog.

Сложность эксплуатации оценивается как низкая: атака требует локального доступа к системе и взаимодействия с пользователем (например, убедить его запустить xmlcatalog с определённым аргументом). При этом фактор автоматизации атакующего (AT:P по CVSS 4.0) указывает, что злоумышленнику необходимо самостоятельно подготовить окружение. В то же время после успешного переполнения возможна компрометация стека, что при должной доработке может позволить реализовать полноценную эксплуатацию.

Разработчики libxml2 не согласились с тем, что данная ошибка является уязвимостью. В официальном примечании к CVE указано: "Мейнтейнеры проекта не согласились с тем, что эта проблема является уязвимостью, и сочли её багом".  Подобные разногласия между сообществом Open Source и системами учёта уязвимостей возникают нередко, но в данном случае исправление всё же было подготовлено и включено в репозиторий.

Исправление содержится в коммите "c2e233fc". Пользователям рекомендовано обновить libxml2 до версии, включающей этот коммит, - обычно это версия 2.15.4 или более поздняя, в зависимости от дистрибутива. Для систем, где нет возможности оперативно обновиться, временной мерой может служить отказ от запуска xmlcatalog в режиме "--shell" с непроверенными входными данными. Поскольку утилита xmlcatalog не является критичной для большинства пользователей, ограничение её использования снижает риск.

Следует подчеркнуть, что сам факт существования переполнения стека в популярной библиотеке, пусть даже и в утилите с низкими привилегиями, остаётся значимым. На протяжении последних лет libxml2 неоднократно подвергалась аудиту, и подобные ошибки обычно устраняются до публикации CVE. Тем не менее данный случай иллюстрирует, как даже востребованные и зрелые проекты могут содержать уязвимости, остававшиеся незамеченными долгое время. Разработчикам, использующим libxml2 в своих продуктах, стоит включить актуализацию этой библиотеки в план обновлений безопасности.

Ссылки

Комментарии: 0