CVE-2023-45612
Описание CVE
В JetBrains Ktor до версии 2.3.5 конфигурация по умолчанию ContentNegotiation с XML-форматом была уязвима к XXE.
Уязвимость была исправлена @marychatte 29 сентября 2023 года (https://github.com/ktorio/ktor/pull/3770). Причиной уязвимости стала атака на цепочку поставок, основанная на ошибочной конфигурации внешней библиотеки xmlutil версии 0.86.1.

Основываясь на руководстве OWASP (https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html), исправление недостаточно полное. Я нашёл интересный ответ здесь (https://security.stackexchange.com/questions/260956/java-xxe-vulnerability): Основная цель — отключить DTD, что в основном и является основной защитой от этой атаки.
Что такое OWASP?
- OWASP (Open Worldwide Application Security Project) — это глобальное некоммерческое сообщество, ориентированное на повышение безопасности программного обеспечения. Оно предоставляет бесплатные независимые от поставщиков ресурсы: документацию, инструменты и обучение, чтобы помочь разработчикам, исследователям безопасности и организациям создавать безопасные приложения. Один из самых известных проектов — OWASP Top 10, который описывает наиболее критичные риски безопасности веб-приложений.
Доказательство концепции
Рекомендации по предотвращению
- Обновите: Ktor ≥ 2.3.5 и xmlutil до исправленных версий
- Усиление парсинга XML:
- Отключите объявления DOCTYPE
- Отключите внешние сущности (general/parameter)
- Отключите загрузку внешних DTD
- Включите FEATURE_SECURE_PROCESSING
- Отключите XInclude
- Предпочитайте JSON XML, если это строго не требуется
- Принцип минимальных привилегий: запускайте службы без доступа к файловой системе/сети для парсинга
- Валидация входных данных: отклоняйте полезные нагрузки с объявлениями DOCTYPE на уровне приложения
Ссылки: