the_open_door
café
ESEN
← Volver al índice

RCE in JetBrains TeamCity (CVE-2023-42793)

TeamCity On-Premises anterior a 2023.05.4 arrastra un bypass de autenticación en su API REST que un atacante no autenticado puede encadenar hasta ejecución remota de código como el usuario del servidor CI.

La cadena tiene dos partes:

curl -X POST "http://<ip>/app/rest/users/id:1/tokens/RPC2" -H "Content-Type: application/json"

En un CI, esto es especialmente grave: el servidor suele guardar credenciales de despliegue, claves SSH y tokens de repositorio (secretos en el código), y su historial de build puede contener claves privadas recuperables (dump de .git).

Matices. Afecta a TeamCity On-Premises; TeamCity Cloud fue parcheado por el proveedor. La ruta exacta del bypass depende de la versión, por lo que conviene confirmar la versión (/login.html la muestra) antes de lanzar un PoC concreto.

Cómo detectarlo. El bypass deja una firma reconocible en el log de acceso: peticiones que fuerzan un 404 en un recurso previo y a continuación un POST no autenticado a /app/rest/users/id:1/tokens/..., es decir la creación de un token para una cuenta administrativa por una vía que salta la sesión. En el host, la fase de RCE se ve como el proceso de TeamCity (java) lanzando un proceso hijo anómalo tras modificarse los parámetros internos del servidor o desplegarse un plugin/script. La creación de un token administrativo desde una IP externa, o un cambio en la ruta de las herramientas de build seguido de ejecución, es la cadena.

Defensa. Actualizar a 2023.05.4 o posterior; restringir el acceso de red al panel de CI; rotar los tokens y credenciales almacenados tras cualquier sospecha, ya que su valor persiste más allá del parche.

Máquinas donde se aplica