CVE-2025-58360

OSGeo GeoServer

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2025-12-11

Официальное описание

OSGeo GeoServer contains an improper restriction of XML external entity reference vulnerability that occurs when the application accepts XML input through a specific endpoint /geoserver/wms operation GetMap and could allow an attacker to define external entities within the XML request.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость CVE-2025-58360 относится к классу XXE (XML External Entity) и затрагивает компонент обработки XML-запросов в OSGeo GeoServer. Проблема локализована в эндпоинте /geoserver/wms при вызове операции GetMap. Из-за отсутствия ограничений на парсинг внешних сущностей в XML-парсере, злоумышленник может передать специально сформированный XML-документ, содержащий вредоносные конструкции <!ENTITY или <!DOCTYPE. Успешная эксплуатация данной уязвимости позволяет атакующему: - Читать произвольные локальные файлы на сервере (например, /etc/passwd, конфигурационные файлы с паролями к БД). - Выполнять атаки подделки запросов со стороны сервера (SSRF) для сканирования внутренней сети и обращения к внутренним API. - Инициировать отказ в обслуживании (DoS) через исчерпание ресурсов сервера (атака типа "Billion Laughs").

Как исправить

Единственным надежным способом полного устранения уязвимости является обновление OSGeo GeoServer до актуальной версии, содержащей патч безопасности от разработчиков. Перед началом обновления обязательно создайте резервную копию директории с данными (Data Directory) и конфигурацией. Остановите службу веб-сервера (в данном примере используется Tomcat).

systemctl stop tomcat9

Создайте резервную копию текущих данных GeoServer.

cp -r /var/lib/tomcat9/webapps/geoserver/data /opt/geoserver_data_backup

Удалите уязвимую версию приложения из директории веб-сервера.

rm -rf /var/lib/tomcat9/webapps/geoserver*

Скачайте архив с пропатченной версией GeoServer (замените URL на актуальный релиз с официального сайта).

wget https://sourceforge.net/projects/geoserver/files/GeoServer/latest/geoserver-latest-war.zip

Распакуйте новый WAR-файл в директорию веб-сервера.

unzip geoserver-latest-war.zip geoserver.war -d /var/lib/tomcat9/webapps/

Запустите службу веб-сервера.

systemctl start tomcat9

Временные меры

Если оперативное обновление системы невозможно, необходимо внедрить компенсирующие меры на уровне сетевой инфраструктуры и Web Application Firewall (WAF). Настройте WAF для инспекции тела POST-запросов, направляемых к уязвимому эндпоинту. Создайте правило, блокирующее запросы, содержащие объявления внешних сущностей. Пример правила для ModSecurity, блокирующего XXE-векторы для эндпоинта WMS:

SecRule REQUEST_URI "@beginsWith /geoserver/wms" "id:100001,phase:2,deny,status:403,msg:'Potential XXE in GeoServer WMS',chain"
SecRule REQUEST_BODY "@rx (<!DOCTYPE|<!ENTITY)" "t:none,t:lowercase"

Ограничьте доступ к эндпоинту /geoserver/wms на уровне reverse-proxy (например, Nginx), разрешив к нему обращения только с доверенных IP-адресов, если сервис используется исключительно для внутренних нужд. В качестве дополнительной защиты на уровне JVM (если позволяет архитектура развертывания), принудительно отключите обработку внешних сущностей через параметры запуска Java. Добавьте следующие флаги в переменную окружения CATALINA_OPTS или JAVA_OPTS в конфигурации Tomcat (setenv.sh):

export CATALINA_OPTS="$CATALINA_OPTS -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.stream.XMLInputFactory=com.sun.xml.internal.stream.XMLInputFactoryImpl"

Перезапустите службу для применения параметров JVM.

systemctl restart tomcat9