CVE-2023-42793

JetBrains TeamCity

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

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

2023-10-04

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

JetBrains TeamCity contains an authentication bypass vulnerability that allows for remote code execution on TeamCity Server.

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

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

CVE-2023-42793 представляет собой критическую уязвимость обхода аутентификации (Authentication Bypass) в сервере JetBrains TeamCity. Проблема заключается в некорректной обработке определенных URL-путей, что позволяет неавторизованному злоумышленнику получить доступ к административным эндпоинтам без ввода логина и пароля.

Эксплуатация данной уязвимости ведет к полному захвату сервера (Remote Code Execution), краже исходного кода, учетных данных из переменных окружения и возможности внедрения вредоносного кода в процессы сборки (атака на цепочку поставок).

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

Основным способом устранения является обновление TeamCity до версии 2023.05.4 или выше.

Для Linux систем:

  1. Остановите сервер:
./teamcity-server.sh stop

  1. Сделайте резервную копию базы данных и директории Data Directory.
  2. Скачайте новую версию и распакуйте её поверх текущей установки или в новую директорию с переносом конфигурации.
  3. Запустите сервер:
./teamcity-server.sh start

Для Windows систем:

  1. Остановите службу TeamCity.
  2. Выполните резервное копирование данных.
  3. Запустите инсталлятор новой версии (.exe) и следуйте инструкциям мастера обновления.
  4. Запустите службу TeamCity.

Временные меры

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

1. Использование плагина безопасности (Security Patch Plugin) JetBrains выпустила специальный плагин для версий TeamCity 2018.2 и новее, который закрывает уязвимость без полного обновления системы. - Скачайте TeamCity-auth-patch-plugin.zip с официального сайта JetBrains. - Установите его через раздел Administration > Plugins. - Перезагрузка сервера не требуется.

2. Ограничение доступа на уровне Reverse Proxy Если TeamCity находится за Nginx или другим прокси-сервером, заблокируйте доступ к подозрительным путям. Пример для Nginx:

location ~* /app/rest/users/id:1/tokens/RPC2 {
    deny all;
}

3. Проверка на компрометацию После применения мер защиты обязательно проверьте список администраторов и наличие подозрительных токенов доступа в разделе Administration > Users.