CVE-2020-1938

Apache Tomcat

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

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

2022-03-03

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

Apache Tomcat treats Apache JServ Protocol (AJP) connections as having higher trust than, for example, a similar HTTP connection. If such connections are available to an attacker, they can be exploited.

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

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

Уязвимость CVE-2020-1938 (GhostCat) позволяет атакующему, имеющему доступ к порту AJP (обычно 8009), читать или включать произвольные файлы из файловой системы сервера Tomcat. Это возможно из-за излишнего доверия к AJP-соединениям по сравнению с HTTP.

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

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

  • Для Apache Tomcat 9.x: обновитесь до версии 9.0.31 или новее.
  • Для Apache Tomcat 8.5.x: обновитесь до версии 8.5.51 или новее.
  • Для Apache Tomcat 7.x: обновитесь до версии 7.0.100 или новее.

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

sudo apt update
sudo apt install tomcat9

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

sudo yum update tomcat

После обновления обязательно перезапустите службу Tomcat:

sudo systemctl restart tomcat9

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

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

  1. Отключите AJP-коннектор. Это наиболее эффективный способ.

    • Найдите файл server.xml (обычно в /etc/tomcat9/ или /opt/tomcat/conf/).
    • Закомментируйте или удалите строку, содержащую protocol="AJP/1.3". xml <!-- Закомментируйте этот блок --> <!-- <Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" /> -->
    • Перезапустите Tomcat.
  2. Ограничьте доступ к порту AJP (8009). Настройте брандмауэр, чтобы разрешать соединения только с доверенных IP-адресов (например, с балансировщика нагрузки).

    • Пример для ufw (Ubuntu): bash sudo ufw deny 8009/tcp
    • Пример для firewalld (RHEL/CentOS): bash sudo firewall-cmd --permanent --remove-port=8009/tcp sudo firewall-cmd --reload
  3. Измените адрес привязки AJP-коннектора. Настройте его слушать только на localhost (127.0.0.1 или ::1), если это не нарушит архитектуру.

    • В файле server.xml измените атрибут address: xml <Connector protocol="AJP/1.3" address="127.0.0.1" port="8009" redirectPort="8443" />
    • Перезапустите Tomcat.