CVE-2024-27198
JetBrains TeamCity
2024-03-07
JetBrains TeamCity contains an authentication bypass vulnerability that allows an attacker to perform admin actions.
Технический анализ и план устранения
Суть уязвимости
CVE-2024-27198 — это критическая уязвимость обхода аутентификации (Authentication Bypass) в веб-компоненте JetBrains TeamCity. Проблема вызвана некорректной обработкой путей в контроллере BaseController, что позволяет злоумышленнику получить доступ к защищенным эндпоинтам без авторизации.
Используя специально сформированный URL (например, через обращение к несуществующим ресурсам с определенными параметрами), атакующий может обойти фильтры безопасности и выполнить административные действия, включая создание новых учетных записей администратора или выполнение произвольного кода (RCE) на сервере через функции администрирования.
Как исправить
Основным и рекомендуемым способом устранения уязвимости является обновление TeamCity до версии 2023.11.4 или выше.
- Скачайте актуальную версию TeamCity с официального сайта JetBrains.
- Выполните резервное копирование базы данных и конфигурационных файлов.
- Остановите службу TeamCity.
- Установите обновление.
Для Linux:
./runAll.sh stop
Для Windows:
Stop-Service TeamCity
После установки обновления запустите службу и проверьте версию в консоли администрирования.
Временные меры
Если немедленное обновление невозможно, необходимо применить один из следующих методов защиты:
1. Установка плагина безопасности
JetBrains выпустила специальный патч-плагин для старых версий TeamCity (начиная с 2017.1 и выше).
- Скачайте плагин TeamCity Security Update Plugin.
- Загрузите его в TeamCity через меню Administration -> Plugins -> Upload plugin zip.
- Перезагрузка сервера не требуется.
2. Ограничение доступа на уровне Reverse Proxy Если TeamCity находится за Nginx или другим прокси-сервером, заблокируйте подозрительные запросы, содержащие попытки обхода путей. Пример конфигурации для Nginx:
location ~* /.*\?.*jsp=.* {
deny all;
}
3. Изоляция сервера Ограничьте доступ к веб-интерфейсу TeamCity, разрешив подключения только с доверенных IP-адресов администраторов через Firewall.
Для Linux (iptables):
iptables -A INPUT -p tcp --dport 8111 -s <TRUSTED_IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 8111 -j DROP