libxml2 2.9.10: утечка памяти в xmlSchemaValidateStream (CVE-2019-20388)
В библиотеке libxml2 версии 2.9.10 обнаружена уязвимость CVE-2019-20388, приводящая к утечке памяти при вызове функции xmlSchemaValidateStream через xmlSchemaPreRun в xmlschemas.c. Проблема затрагивает приложения, использующие валидацию XML по схеме с потоковой передачей данных. При длительной или повторяющейся обработке это может привести к постепенному исчерпанию памяти.
Подробности
Уязвимость затрагивает libxml2 версии 2.9.10. Причина кроется в функции xmlSchemaPreRun, расположенной в файле xmlschemas.c. При вызове функции xmlSchemaValidateStream, предназначенной для валидации XML-документа по схеме в потоковом режиме, происходит утечка памяти: выделенные ресурсы не освобождаются корректно. Тип уязвимости — CWE-401 (Missing Release of Memory after Effective Lifetime), то есть отсутствие освобождения памяти после завершения её использования. Это классическая утечка, которая сама по себе не позволяет злоумышленнику выполнить произвольный код или получить несанкционированный доступ к данным, однако при многократном или длительном вызове уязвимого пути в приложении потребление памяти будет неуклонно расти. На практике это создаёт риск отказа в обслуживании (Denial of Service): сервис, регулярно валидирующий XML-потоки по схеме, со временем может исчерпать доступную память и аварийно завершиться либо стать недоступным. Особенно актуально это для серверных приложений, принимающих и обрабатывающих внешние XML-данные, где один и тот же процесс обслуживает множество запросов. Сведения о значении CVSS в записи CVE отсутствуют, поэтому количественная оценка критичности не приводится. Характер уязвимости указывает на умеренный уровень риска: эксплуатация не требует привилегий и сложных условий, но и не приводит к компрометации конфиденциальности или целостности данных.Что делать
Основная рекомендация — обновить libxml2 до версии, в которой утечка устранена. Если приложение использует libxml2 как зависимость, следует проверить актуальность версии библиотеки в вашем окружении и у поставщика дистрибутива или фреймворка. Дополнительные меры: - ограничить объём памяти, доступный процессам, выполняющим валидацию недоверенного XML (например, через cgroups или лимиты контейнера), чтобы утечка не приводила к падению всей системы; - по возможности ограничить частоту и размер обрабатываемых XML-потоков, особенно из внешних источников; - настроить мониторинг потребления памяти для сервисов, работающих с XML-схемами, чтобы своевременно выявлять аномальный рост. Если обновление невозможно в короткие сроки, перечисленные митигации помогут снизить последствия, но не устранят саму уязвимость. Итог: CVE-2019-20388 — утечка памяти в libxml2 2.9.10 при потоковой валидации XML по схеме. Прямой угрозы компрометации данных нет, но возможен отказ в обслуживании из-за исчерпания памяти. Рекомендуется обновить библиотеку и ограничить ресурсы процессов, работающих с недоверенным XML.Источник: CVE Project (cvelistV5)
