CVE-2025-24813
Apache Tomcat
2025-04-01
Apache Tomcat contains a path equivalence vulnerability that allows a remote attacker to execute code, disclose information, or inject malicious content via a partial PUT request.
Технический анализ и план устранения
Суть уязвимости
CVE-2025-24813 представляет собой критическую уязвимость эквивалентности путей (path equivalence) в Apache Tomcat. Проблема возникает из-за некорректной обработки нормализации путей при обработке частичных HTTP-запросов (Partial PUT).
Злоумышленник может отправить специально сформированный запрос, который позволяет обойти ограничения безопасности и манипулировать файловой системой сервера. Это приводит к следующим последствиям: * Remote Code Execution (RCE): Возможность загрузки и исполнения произвольного кода (например, JSP-шеллов). * Information Disclosure: Несанкционированный доступ к защищенным файлам конфигурации или исходному коду приложения. * Content Injection: Внедрение вредоносного контента в существующие ресурсы сервера.
Как исправить
Основным и наиболее надежным способом устранения уязвимости является обновление Apache Tomcat до исправленных версий.
- Определите текущую версию Tomcat:
/opt/tomcat/bin/version.sh
- Обновите сервер до версии, в которой уязвимость устранена:
- Если вы используете ветку 11.0.x: обновитесь до 11.0.3 или выше.
- Если вы используете ветку 10.1.x: обновитесь до 10.1.35 или выше.
-
Если вы используете ветку 9.0.x: обновитесь до 9.0.99 или выше.
-
Скачайте актуальный дистрибутив с официального сайта Apache:
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.35/bin/apache-tomcat-10.1.35.tar.gz
- После замены бинарных файлов перезапустите службу:
systemctl restart tomcat
Временные меры
Если немедленное обновление невозможно, примените следующие защитные меры для снижения риска эксплуатации:
- Ограничение HTTP-методов:
Отключите поддержку метода
PUTв файлеweb.xml, если ваше приложение его не использует. Добавьте security-constraint:
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted Methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
- Настройка Read-Only режима для DefaultServlet:
Убедитесь, что параметр
readonlyустановлен вtrue(это значение по умолчанию, но его стоит проверить вconf/web.xml):
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
-
Использование WAF (Web Application Firewall): Настройте правила фильтрации на уровне WAF или Reverse Proxy (Nginx/HAProxy), чтобы блокировать подозрительные запросы с использованием Partial PUT или аномальных последовательностей в путях (например,
./,../, или специфических для Windows символов, если применимо). -
Проверка прав доступа: Запустите процесс Tomcat от имени пользователя с минимальными привилегиями в системе, чтобы ограничить область возможного ущерба при RCE.
chown -R tomcat:tomcat /opt/tomcat/webapps/
chmod -R 550 /opt/tomcat/webapps/