CVE-2024-34393: критическая уязвимость type confusion в libxmljs2
В библиотеке libxmljs2 обнаружена уязвимость типа type confusion, возникающая при обработке специально сформированного XML. Эксплуатация может привести к отказу в обслуживании, утечке данных, бесконечному циклу, а на 32-битных системах с флагом XML_PARSE_HUGE — к удалённому выполнению кода. Уровень опасности — HIGH (CVSS 8.1).
Подробности
Уязвимости присвоен идентификатор CVE-2024-34393, базовая оценка CVSS — 8.1 (HIGH). Суть проблемы — type confusion: при вызове функции на результате attrs() для разобранного узла библиотека может некорректно интерпретировать тип данных. Это открывает возможность для целого спектра атак: - отказ в обслуживании (DoS) — как на 32-битных, так и на 64-битных системах; - утечка данных; - бесконечный цикл, приводящий к зависанию процесса; - удалённое выполнение кода (RCE) — на 32-битных системах при включённом флаге XML_PARSE_HUGE. Наиболее критичный сценарий — RCE — реализуется при стечении двух условий: 32-битная архитектура и активированный флаг XML_PARSE_HUGE, который снимает ограничения на размер разбираемого документа. В таких конфигурациях атакующий, контролирующий содержимое XML, потенциально может добиться выполнения произвольного кода в контексте процесса Node.js. Даже без RCE последствия эксплуатации серьёзны: утечка данных и DoS способны нарушить работу сервиса и скомпрометировать конфиденциальную информацию. Точные версии библиотеки, подверженные уязвимости, в записи CVE не перечислены, поэтому рекомендуется ориентироваться на актуальные релизы libxmljs2 и проверять информацию у мейнтейнеров проекта.Что делать
Основная рекомендация — обновить libxmljs2 до версии, в которой уязвимость устранена. Перед обновлением стоит уточнить наличие исправленного релиза в репозитории проекта и в официальных источниках. Если обновление невозможно в краткосрочной перспективе, следует применить компенсирующие меры: - не включать флаг XML_PARSE_HUGE без крайней необходимости — на 32-битных системах это ключевой фактор риска RCE; - по возможности перевести сервисы на 64-битную архитектуру, что снижает вероятность RCE, хотя не устраняет DoS и утечку данных; - ограничить размер и источник обрабатываемых XML-документов, валидировать входные данные и не разбирать XML из недоверенных источников; - изолировать процессы парсинга (sandbox, ограничения по памяти и CPU, отдельные контейнеры) для снижения ущерба от DoS и потенциального RCE. Также стоит провести аудит кода: найти места, где вызывается attrs() и далее применяются функции к результату, и убедиться, что эти участки не работают с недоверенным вводом. Итог: CVE-2024-34393 — серьёзная уязвимость в libxmljs2 с оценкой CVSS 8.1, способная привести к DoS, утечке данных и, в определённых конфигурациях, к удалённому выполнению кода. Ключевые шаги — обновление библиотеки до исправленной версии, отказ от XML_PARSE_HUGE на 32-битных системах и ограничение обработки недоверенного XML.Источник: CVE Project (cvelistV5)
