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
Временное решение
Если немедленное обновление невозможно, выполните одно из следующих действий:
-
Отключите 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.
- Найдите файл
-
Ограничьте доступ к порту 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
- Пример для
-
Измените адрес привязки 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.
- В файле