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 систем:
- Остановите сервер:
./teamcity-server.sh stop
- Сделайте резервную копию базы данных и директории Data Directory.
- Скачайте новую версию и распакуйте её поверх текущей установки или в новую директорию с переносом конфигурации.
- Запустите сервер:
./teamcity-server.sh start
Для Windows систем:
- Остановите службу TeamCity.
- Выполните резервное копирование данных.
- Запустите инсталлятор новой версии (.exe) и следуйте инструкциям мастера обновления.
- Запустите службу 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.