JetBrains ha instado a los usuarios de su servicio en la nube de desarrollo Cadence a cambiar sus credenciales y a considerar que cualquier ejecución anterior y sus resultados no son fiables después de que atacantes explotaran una vulnerabilidad crítica sin parchear en su servidor TeamCity.
La situación resulta irónica, ya que JetBrains publicó el 27 de julio la vulnerabilidad CVE-2026-63077, una falla crítica en TeamCity On-Premises que permite a un atacante sin autenticar ejecutar comandos arbitrarios en el sistema operativo con privilegios del proceso de TeamCity, accediendo mediante HTTP o HTTPS.
Para el 7 de agosto, la empresa ya había informado que se estaban produciendo ataques contra servidores TeamCity sin parche. Sin embargo, uno de esos servidores vulnerables seguía expuesto: el propio servidor de JetBrains.
Según admitió la propia compañía tras descubrir la intrusión en su servicio Cadence, “el servidor debió haber sido parcheado como parte de nuestra respuesta a la vulnerabilidad, pero no fue así”.
Servidor TeamCity sin parche en Cadence
El ataque se dirigió contra api.cadence.jetbrains.com, el servidor que soporta Cadence, la plataforma de computación en la nube de JetBrains para PyCharm. El incidente fue detectado el 23 de agosto y el servidor desconectado el 24. Se sabe que la actividad maliciosa comenzó el 8 de agosto, por lo que el periodo de compromiso abarca más de dos semanas.
Cadence se integra con PyCharm por medio de un plugin opcional que permite a los desarrolladores ejecutar proyectos utilizando recursos de computación en la nube, con TeamCity detrás gestionando esas cargas de trabajo, ubicando el servidor comprometido en una zona especialmente sensible del entorno de desarrollo.
Compromiso de credenciales y código fuente
JetBrains confirmó que los atacantes obtuvieron una copia completa de respaldo del servidor Cadence de 2024, lo que expuso potencialmente toda la información almacenada en ella, incluyendo credenciales, archivos de configuración, artefactos y registros.
También fueron comprometidos varios usuarios y credenciales IAM de AWS, incluidos algunos vinculados a empleados de JetBrains que utilizaban Cadence. Se verificó acceso a archivos almacenados en buckets S3 dentro de cuentas AWS utilizadas por el servicio, aunque no se tiene claro si los buckets de clientes fueron afectados.
Los desarrolladores que sincronizaban proyectos mediante el plugin de PyCharm pudieron ver expuestos sus códigos fuente, así como cualquier credencial o configuración contenida en los proyectos.
Además, la filtración reveló nombres de usuario, nombres reales, direcciones de correo, tiempos de último acceso y direcciones IP asociadas, abriendo la posibilidad de que credenciales usadas durante ejecuciones en Cadence hayan permitido acceder a otros servicios vinculados.
Riesgo creciente en la cadena de suministro
JetBrains alertó que todos los secretos y credenciales almacenados en Cadence o usados durante las ejecuciones afectadas deben considerarse comprometidos. Por ello, recomiendan rotar claves y tokens de proveedores como AWS, Azure y Google Cloud, así como de plataformas colaborativas como GitHub, GitLab o Bitbucket.
También advierten sobre el riesgo en registros de paquetes y artefactos, incluyendo npm, Maven, NuGet, PyPI y registros de contenedores como Docker Hub, ECR, GCR y ACR. Un acceso no autorizado con credenciales de publicación podría permitir enviar paquetes maliciosos que se propaguen en la cadena de suministro, como ocurrió en recientes ataques en npm.
Las credenciales comprometidas podrían incluir también tokens de Slack, webhooks, claves SSH, claves de despliegue, cuentas de servicio y certificados digitales, incrementando el alcance del daño.
JetBrains aconseja tratar todo lo ejecutado en Cadence durante el periodo comprometido, así como las salidas generadas, como datos no fiables. Esto se debe a que la intrusión podría haber alterado procesos o resultados, afectando no solo la confidencialidad sino también la integridad de los datos y artefactos generados.
Los sistemas de integración continua y despliegue (CI/CD) como TeamCity suelen tener permisos sobre repositorios privados, dependencias, almacenamiento en nube, registros de paquetes y plataformas de despliegue. Su compromiso supone un riesgo elevado, ya que facilita el acceso atacante a múltiples vectores dentro del ecosistema de desarrollo.
Revisión exhaustiva tras el ataque
La recomendación de JetBrains no se limita a cambiar credenciales comprometidas, sino que también implica vigilar si esas credenciales fueron utilizadas para movimientos laterales o para alterar sistemas conectados.
Se aconseja examinar registros de auditoría de controles de versiones para detectar clonaciones, descargas no autorizadas, commits sospechosos y modificaciones en secretos o webhooks. También se deben revisar la creación o modificación de tokens de acceso personal, claves API y claves SSH.
En entornos en nube, se deben investigar cambios inesperados en IAM, creación de usuarios o cuentas de servicio sospechosas y accesos inusuales a almacenamiento como buckets S3. Los registros de autenticación pueden revelar usos no autorizados posteriores al compromiso inicial.
También es imprescindible verificar registros de paquetes y versiones publicados para detectar modificaciones o publicaciones inesperadas, especialmente donde Cadence tenía acceso para publicar.
Dado que JetBrains considera que todo lo ejecutado durante la vulnerabilidad debe tomarse como no confiable, la revisión se extiende a verificar artefactos producidos mediante Cadence, asegurándose de que coincidan con el código fuente original y resultados legítimos.
La compañía ha publicado seis direcciones IP asociadas a la explotación detectada: 150.109.230.104, 43.153.227.206, 62.210.127.48, 210.247.242.190, 15.235.225.205 y 152.233.30.18, advirtiendo que no son indicadores completos y que su ausencia no garantiza que una cuenta o sistema no haya sido comprometido.