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 до исправленных версий.

  1. Определите текущую версию Tomcat:
/opt/tomcat/bin/version.sh

  1. Обновите сервер до версии, в которой уязвимость устранена:
  2. Если вы используете ветку 11.0.x: обновитесь до 11.0.3 или выше.
  3. Если вы используете ветку 10.1.x: обновитесь до 10.1.35 или выше.
  4. Если вы используете ветку 9.0.x: обновитесь до 9.0.99 или выше.

  5. Скачайте актуальный дистрибутив с официального сайта Apache:

wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.35/bin/apache-tomcat-10.1.35.tar.gz

  1. После замены бинарных файлов перезапустите службу:
systemctl restart tomcat

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

Если немедленное обновление невозможно, примените следующие защитные меры для снижения риска эксплуатации:

  1. Ограничение 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>

  1. Настройка 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>

  1. Использование WAF (Web Application Firewall): Настройте правила фильтрации на уровне WAF или Reverse Proxy (Nginx/HAProxy), чтобы блокировать подозрительные запросы с использованием Partial PUT или аномальных последовательностей в путях (например, ./, ../, или специфических для Windows символов, если применимо).

  2. Проверка прав доступа: Запустите процесс Tomcat от имени пользователя с минимальными привилегиями в системе, чтобы ограничить область возможного ущерба при RCE.

chown -R tomcat:tomcat /opt/tomcat/webapps/
chmod -R 550 /opt/tomcat/webapps/