JetBrains расследует взлом собственного облачного сервиса Cadence, который подключается к PyCharm отдельным плагином и позволяет запускать проекты на удаленных вычислительных ресурсах. Для управления такими заданиями Cadence использовал TeamCity — и именно уязвимый TeamCity-сервер стал точкой входа для атакующих.
Злоумышленники воспользовались CVE-2026-63077 — критической уязвимостью TeamCity On-Premises, позволяющей удаленно выполнять команды без предварительной авторизации. Исправление для нее JetBrains выпустила еще 27 июля. Сервер Cadence должен был получить патч в рамках этой кампании, но остался уязвимым. Инцидент компания признала в сообщении об инциденте.
Атакующие находились в инфраструктуре как минимум с 8 августа. JetBrains обнаружила эксплуатацию 23 августа и 24 августа отключила сервер api.cadence.jetbrains.com. Компания подтвердила кражу персональных данных, компрометацию полной резервной копии Cadence за 2024 год, учетных записей AWS IAM и доступ к файлам в собственных S3-хранилищах. Исходный код проектов, синхронизированных из PyCharm, тоже мог оказаться доступен злоумышленникам.
Cadence — размещаемый JetBrains сервис, интегрированный с PyCharm через необязательный плагин. Он позволяет отправлять проект на удаленные вычислительные ресурсы и выполнять его там. Оркестрацией таких запусков занимался TeamCity.
Такое устройство сервиса делает последствия компрометации особенно неприятными. Среда выполнения может иметь доступ не просто к исходному коду, а к секретам, необходимым проекту: облачным ключам, токенам репозиториев, учетным данным реестров пакетов, ключам развертывания и другим системам разработки.
JetBrains теперь рекомендует считать потенциально скомпрометированными все секреты, которые хранились в Cadence, находились в резервной копии или передавались запускам на атакованном сервере.
CVE-2026-63077 затрагивает TeamCity On-Premises и получила 9,8 из 10 баллов по CVSS 3.1. Для эксплуатации не нужны учетная запись, права пользователя или какие-либо действия жертвы. Достаточно сетевого доступа к уязвимому серверу TeamCity по HTTP или HTTPS.
Проблема относится к классу CWE-502 — десериализации непроверенных данных. Упрощенно: TeamCity восстанавливал Java-объекты из полученных данных с недостаточно жесткими ограничениями на допустимые классы. Это позволяло собрать специальную цепочку объектов и в итоге добиться выполнения команды операционной системы.
Вектор атаки находился в протоколе, который используют агенты TeamCity при опросе сервера. Успешный эксплойт запускает команды с правами процесса TeamCity. Если процесс имеет широкий доступ к системе, атакующий потенциально получает конфигурацию, сохраненные учетные данные, данные сборок и возможность вмешиваться в последующие стадии CI/CD — непрерывной интеграции и доставки ПО.
Исследователь Антони Трембле передал информацию об уязвимости JetBrains 10 июля. Компания публично раскрыла CVE-2026-63077 27 июля и выпустила исправленные версии TeamCity 2025.11.7 и 2026.1.3. Для установок начиная с TeamCity 2017.1 появился отдельный защитный плагин на случай, если администратор не может сразу обновить весь сервер.
TeamCity Cloud отдельно обновлять не требовалось: JetBrains сообщила, что необходимые меры в своем облачном сервисе применила централизованно и признаков эксплуатации TeamCity Cloud не обнаружила.
5 августа CVE-2026-63077 появилась в каталоге Known Exploited Vulnerabilities американского агентства CISA. Попадание туда означает, что эксплуатация уязвимости в реальных атаках подтверждена, а не существует только в лабораторных условиях.
7 августа JetBrains выпустила дополнительное предупреждение: компания уже получала сообщения об успешных атаках и попытках эксплуатации непропатченных TeamCity-серверов. Администраторам рекомендовали срочно обновиться, установить защитный плагин либо временно ограничить внешний доступ к серверу.
Подтвержденная JetBrains активность злоумышленников внутри Cadence начинается 8 августа — через день после этого предупреждения.
В публикации об инциденте JetBrains признает внутренний сбой процесса обновления.
«Сервер должен был быть исправлен в рамках нашего реагирования на уязвимость, но этого не произошло».
Компания не раскрыла, почему именно сервер выпал из процесса установки исправлений. После обнаружения атаки JetBrains отключила его, аннулировала токены доступа, которыми плагин Cadence в PyCharm соединялся с сервисом, начала уведомлять пострадавших пользователей и профильные органы.
JetBrains пока подтверждает компрометацию одного узла — api.cadence.jetbrains.com. Расследование при этом продолжается, поэтому это не следует трактовать как окончательный вывод обо всем масштабе инцидента.
JetBrains подтвердила извлечение персональной информации из атакованной среды. В перечень входят:
-
имена пользователей;
-
настоящие имена;
-
адреса электронной почты;
-
время последнего входа;
-
последний IP-адрес, с которого пользователь обращался к сервису.
Количество затронутых пользователей компания пока не раскрыла.
Для атакующих такой набор полезен прежде всего при адресном фишинге и социальной инженерии. Имя, рабочий адрес почты, информация об использовании Cadence и связанные IP-адреса позволяют сделать письмо от имени JetBrains, GitHub, облачного провайдера или работодателя значительно правдоподобнее.
Сама JetBrains также предупреждает о риске целевого фишинга, выдачи себя за другого человека и других мошеннических коммуникаций после утечки.
Атакующие получили доступ к полной резервной копии Cadence, сделанной в 2024 году.
JetBrains рекомендует считать потенциально раскрытыми учетные данные, конфигурацию, артефакты, журналы и другие сведения, которые находились внутри этой резервной копии.
Из бэкапа были скомпрометированы несколько учетных записей AWS Identity and Access Management — системы Amazon Web Services для управления пользователями, ролями и правами доступа. Вместе с ними оказались раскрыты связанные ключи и секреты. Среди пострадавших IAM-пользователей были сотрудники самой JetBrains, использовавшие Cadence.
Это один из самых опасных элементов инцидента. Рабочий облачный ключ позволяет действовать через штатные интерфейсы AWS и обращаться к ресурсам с теми правами, которыми обладала скомпрометированная учетная запись. Повторно использовать уязвимость в TeamCity для этого уже не требуется.
JetBrains подтверждает, что атакующие получили доступ к файлам в Amazon S3-бакетах, расположенных в AWS-аккаунтах компании и использовавшихся Cadence.
Полный объем просмотренной или похищенной информации еще устанавливается.
Подтверждений доступа к S3-хранилищам непосредственно в аккаунтах клиентов пока нет. Здесь важна точная формулировка: JetBrains не утверждает, что клиентские бакеты остались нетронутыми. Компания пишет, что пока не знает, обращались ли злоумышленники к ним.
Часть пользователей могла настроить Cadence на работу с собственными хранилищами. Учетные данные, которыми сервис получал такой доступ, также могли быть скомпрометированы.
JetBrains не подтверждает массовую кражу всех проектов пользователей, но считает возможным доступ к исходному коду, который PyCharm синхронизировал с атакованным сервером.
Если разработчик загружал проект в Cadence для выполнения, компания рекомендует считать потенциально скомпрометированными сам код и находившиеся внутри него учетные данные или конфигурацию.
На практике проверять стоит .env-файлы, конфигурации развертывания, облачные профили, API-ключи, SSH-ключи, адреса внутренней инфраструктуры и другие секреты, которые могли находиться в каталоге проекта или передаваться процессу во время запуска.
Ограничиваться поиском секретов непосредственно в исходниках тоже рискованно. Они могли оказаться в резервной копии, журналах, переменных окружения, входных и выходных данных запусков или конфигурации Cadence.
Пользователям Cadence рекомендуют отозвать и выпустить заново все учетные данные, которые могли использоваться при облачных запусках.
JetBrains отдельно перечисляет ключи и токены:
-
AWS, Azure и Google Cloud;
-
GitHub, GitLab и Bitbucket;
-
npm, Maven, NuGet и PyPI;
-
Docker Hub, Amazon ECR, Google Container Registry и Azure Container Registry;
-
Slack;
-
API-сервисов;
-
SSH и систем развертывания;
-
служебных аккаунтов;
-
ключей и сертификатов цифровой подписи.
Полный перечень шире: потенциально скомпрометированным нужно считать любой секрет от внешней системы, доступный запуску Cadence.
JetBrains позволяет запросить у своей службы безопасности перечень известных компании учетных данных и секретов, связанных с конкретным использованием Cadence. Такой список сама компания называет неполным: отсутствие ключа в нем не означает, что ключ точно не был доступен злоумышленникам.
JetBrains привела шесть IP-адресов, связанных с наблюдавшейся эксплуатацией:
150.109.230.104
43.153.227.206
62.210.127.48
210.247.242.190
15.235.225.205
152.233.30.18
Проверять журналы компания рекомендует начиная с 8 августа 2026 года.
Отсутствие этих адресов в логах не доказывает, что систему не затронули. JetBrains подчеркивает, что опубликованные индикаторы компрометации не являются исчерпывающими.
Среди других признаков компания перечисляет неожиданные входы с новых IP и географических точек, массовое клонирование репозиториев, незнакомые коммиты, изменение веб-хуков и секретов, появление новых токенов и SSH-ключей, создание служебных учетных записей, изменение IAM-ролей и необычный доступ к облачным хранилищам.
Инцидент Cadence непосредственно касается пользователей облачного сервиса JetBrains. Уязвимость CVE-2026-63077 при этом остается отдельной проблемой для организаций с собственными установками TeamCity.
JetBrains рекомендует искать в журналах TeamCity сообщение:com.thoughtworks.xstream.converters.ConversionException
Его наличие само по себе не доказывает взлом, но может соответствовать попытке или успешной эксплуатации и требует расследования.
На уже обновленном сервере может встретиться: com.thoughtworks.xstream.security.ForbiddenClassException
Такой журнал способен указывать на попытку эксплуатации, которую уже заблокировало исправление. Администраторам также советуют проверить список неавторизованных build-агентов и обратить внимание на неожиданные записи, особенно с именами, начинающимися с scan.
Rapid7 независимо разобрала механизм CVE-2026-63077 и подтвердила, что исправление в TeamCity 2026.1.3 блокирует продемонстрированную цепочку десериализации. Исследователи также опубликовали демонстрационный эксплойт для проверки защищенности систем.
Уязвимость не обнаружили постфактум уже внутри Cadence. JetBrains получила закрытое сообщение о CVE-2026-63077 10 июля, опубликовала исправление 27 июля, а к 5 августа эксплуатация уже была подтверждена настолько надежно, что CISA внесло проблему в каталог Known Exploited Vulnerabilities. 7 августа JetBrains повторно предупредила клиентов о реальных атаках. На следующий день начинается подтвержденный компанией период активности злоумышленников в собственном Cadence.
Компания сама предупреждала, что успешная эксплуатация CVE-2026-63077 способна раскрыть конфигурацию TeamCity и сохраненные учетные данные, а также поставить под угрозу сборки и связанные CI/CD-системы. В Cadence эта цепочка рисков перестала быть теоретической: злоумышленники добрались до резервной копии, облачных учетных записей и S3-хранилищ.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.