CVE-2017-12617

Apache Tomcat

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

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

2022-03-25

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

When running Apache Tomcat, it is possible to upload a JSP file to the server via a specially crafted request. This JSP could then be requested and any code it contained would be executed by the server.

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

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

Уязвимость (CVE-2017-12617) позволяет злоумышленнику обойти защиту сервера Apache Tomcat и загрузить на него вредоносный JSP-файл. Это возможно при определенной конфигурации (readonly=false для контекста по умолчанию) и использовании специально сформированных HTTP-запросов (например, с добавлением / в конце имени файла: shell.jsp/). После успешной загрузки злоумышленник может обратиться к этому файлу, и код внутри него будет выполнен на сервере с правами пользователя Tomcat, что приведет к полному компрометированию системы.

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

Основное решение — обновить Apache Tomcat до исправленной версии.

  • Для Apache Tomcat 9.x: обновитесь до версии 9.0.1 или новее.
  • Для Apache Tomcat 8.5.x: обновитесь до версии 8.5.23 или новее.
  • Для Apache Tomcat 8.0.x: обновитесь до версии 8.0.47 или новее.
  • Для Apache Tomcat 7.x: обновитесь до версии 7.0.81 или новее.

Пример для Ubuntu/Debian (если Tomcat установлен из репозитория):

sudo apt update
sudo apt install tomcat9

Пример для CentOS/RHEL:

sudo yum update tomcat

Для установки вручную: скачайте исправленную версию с официального сайта https://tomcat.apache.org, остановите службу, замените файлы и перезапустите.

Временное решение

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

  1. Установите readonly=true для контекста по умолчанию. Это основная настройка, предотвращающая эксплуатацию. В файле conf/web.xml найдите определение сервлета default и убедитесь, что параметр readonly установлен в true. 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> После изменения перезапустите Tomcat.

  2. Настройте WAF (Web Application Firewall). Добавьте правило, блокирующее запросы на загрузку (PUT, POST) файлов с расширением .jsp и .jspx (включая варианты с дополнительными слешами или точками в конце имени).

  3. Ограничьте доступ. Если функционал загрузки файлов через HTTP-методы PUT не требуется, полностью отключите его на уровне обратного прокси (nginx, Apache HTTPD) или брандмауэра.