Un atacante usó credenciales internas filtradas para comprometer los clústeres compartidos y los servidores dedicados de GCP, y acabó leyendo las variables de entorno almacenadas en la base de datos de la plataforma Zeabur. Este artículo explica qué ocurrió, qué datos se vieron afectados, qué hemos hecho y qué tienes que hacer.
Este artículo también está disponible en English, 繁體中文, 简体中文, 日本語 y Bahasa Indonesia.
Todas las horas de este artículo se expresan en tiempo universal coordinado (UTC).
El 15 de octubre de 2026 a las 13:56 recibimos el aviso de un usuario y abrimos una investigación. Al cotejar después los registros vimos que el atacante ya usaba credenciales internas de Zeabur desde el 14 de octubre a la 01:36, unas 36 horas antes de que nos diéramos cuenta. Durante todo ese tiempo usó credenciales válidas y los canales de acceso legítimos de Zeabur, y no saltó ninguna alerta.
El atacante entró por dos rutas que el 15 de octubre convergieron en la red interna de Zeabur, desde donde leyó la base de datos de la plataforma. Ninguna de las rotaciones posteriores al incidente de agosto cubrió las credenciales que usó esta vez.
| Concepto | Detalle |
|---|---|
| Estado | Informe definitivo |
| Qué tienes que hacer | Sustituye todas las contraseñas y claves almacenadas en Zeabur, también las que ya cambiaste después del incidente de agosto. Véase Qué tienes que hacer |
| Duración | Del 14 de octubre a la 01:36 al 15 de octubre a las 21:05 (última actividad del atacante en los registros) |
| Detección | 15 de octubre a las 13:56, por el aviso de un usuario, unas 36 horas después de que el atacante usara las credenciales por primera vez. Véase Detección |
| Contención | 15 de octubre: a las 17:58 eliminamos el nodo del atacante en la red interna y a las 20:36 bloqueamos el SSH desde Internet a los servidores dedicados de GCP. Se ha cerrado la sesión de todos los usuarios |
| Impacto | Variables de entorno y datos de cuentas de la base de datos de la plataforma, servicios y bases de datos de los clústeres compartidos y 101 servidores dedicados de GCP. Las variables de entorno migradas a servidores propios después de agosto quedan fuera de la lectura. Véase Alcance |
| Causa más probable | La filtración del repositorio de configuración privado de Zeabur, por una vía que no se puede confirmar. Las credenciales del repositorio estaban en texto plano y no caducaban, y la interfaz de administración de los clústeres estaba abierta a Internet. Véase Causas raíz |
| Término | Significado |
|---|---|
| Confirmado | Hay un registro directo |
| Evaluado | Coinciden la hora y el contenido, pero falta un registro directo |
| No se puede confirmar | No hay registros que consultar; lo tratamos siempre como filtrado |
| Hipótesis | Explicación posible respaldada solo por pruebas indirectas; se recogen en Hipótesis no demostradas |
Hazlo ahora, sin esperar al correo de aviso. Los datos filtrados todavía pueden utilizarse, y las credenciales que ya cambiaste después del incidente de agosto también tienen que volver a cambiarse.
Trata el servidor como comprometido:
/root/.ssh/authorized_keys las claves con el comentario @zeabur-pentest o que no reconozcas.google-sudoers, las cuentas del sistema, crontab, los servicios de systemd y las cargas de trabajo de k3s.Comprueba en la consola si después del 14 de octubre se restableció la contraseña de root o se reinstaló el sistema, y confirma, con las comprobaciones indicadas arriba para GCP, que no hay métodos de inicio de sesión desconocidos.
| Sistema | Datos afectados | Alcance | Grado de certeza |
|---|---|---|---|
| Base de datos de la plataforma | Variables de entorno de servicios almacenadas en Zeabur (nombres y valores) | 3.218.965 registros | Confirmado |
| Base de datos de la plataforma | Cuentas (correo electrónico, nombre de usuario, número de teléfono, etc.), proyectos, entornos y servicios | 321.810 cuentas | Confirmado |
| Base de datos de la plataforma | Claves de API de zSend (en texto plano) | 566, revocadas | Confirmado |
| Base de datos de la plataforma | Tokens de acceso a la plataforma | 11.536, solo hashes, no recuperables; todos revocados | Confirmado |
| Clústeres compartidos | Variables de entorno y secretos de todos los servicios | 9 regiones | Confirmado en parte; el resto no se puede confirmar |
| Clústeres compartidos | Contenido de bases de datos | 865 servicios de bases de datos | Evaluado (véase la explicación más abajo) |
| Servidores dedicados de GCP | Todos los datos del servidor | 101 servidores, 92 usuarios | Inicio de sesión confirmado |
| Servidores dedicados de Hetzner y DigitalOcean | Permisos de administración de los servidores | 359 y 48 servidores | No se puede confirmar si se utilizaron |
| GitHub App | Acceso a los repositorios de GitHub autorizados por los usuarios | 15/10 de 15:05 a 18:54 | No se puede confirmar si se utilizó |
| Copias de seguridad de bases de datos de usuarios | Copias de seguridad de las regiones de Taipéi (tpe1) y Hong Kong (hkg1) | Dos regiones | No se puede confirmar si se descargaron |
A continuación se detalla cada sistema.
El 15 de octubre, de 16:10 a 16:47, el atacante leyó los datos de la tabla anterior. Los datos de cuenta incluyen la información de la página de perfil, como el correo electrónico, el nombre de usuario y el número de teléfono. De las tablas de verificación en dos pasos y de llaves de acceso solo se consultaron estadísticas; no hay registros de lectura de su contenido. Los tokens de acceso a la plataforma solo se guardan como hashes, pero aun así los hemos revocado todos.
Lo que más buscaba el atacante eran claves de API que pudiera usar directamente, sobre todo de servicios de IA: buscó claves de API y claves privadas en las variables de entorno y los archivos de configuración, leyó de forma masiva las credenciales de n8n y de new-api/one-api, y también intentó llamar a Amazon Bedrock con las claves de AWS de Zeabur. Esto lo deducimos del contenido de los comandos y del comportamiento posterior. El atacante también leyó los datos de cuenta, y tratamos como filtrado todo lo que leyó.
Después del incidente de agosto, Zeabur ofreció a los usuarios de servidores dedicados indicaciones y una función de migración con un clic: rotar las credenciales, eliminar las variables de entorno y los archivos de configuración almacenados en Zeabur y guardarlos en su propio servidor. En los proyectos que completaron la migración, estos datos solo están en el servidor del usuario y quedan fuera de lo que se leyó esta vez; en los que no migraron, las variables de entorno seguían almacenadas en Zeabur y también se leyeron. Esto no cubre las filtraciones causadas por el compromiso del propio host: en los servidores dedicados de GCP comprometidos hay que seguir los pasos de Qué tienes que hacer.
El 15 de octubre, de 16:12 a 17:19, el atacante llamó a la API de Zeabur con la identidad de dos cuentas para leer listas de cuentas y proyectos; una de ellas era la cuenta de un empleado de Zeabur. Estas solicitudes no modificaron ningún recurso.
El atacante leyó la clave con la que se emiten las credenciales de inicio de sesión, y evaluamos que falsificó las credenciales con ella: los tokens de acceso a la plataforma solo se guardan como hashes, y el atacante no los leyó de forma masiva hasta las 16:47, lo que no explica una suplantación que empezó a las 16:12. A las 20:25 rotamos la clave de firma y se cerró la sesión de todos los usuarios.
El atacante ejecutó comandos de lectura dentro de los contenedores de 865 bases de datos. Los registros de auditoría solo recogen los comandos, no su salida, y algunos comandos fallaron por errores, así que no se puede confirmar cuántos datos se leyeron realmente de cada base de datos. Esta es nuestra estimación según el contenido de los comandos:
| Objetivo | Cantidad | Datos leídos |
|---|---|---|
| n8n con PostgreSQL | 736 | Credenciales de terceros, usuarios, proyectos, variables y workflows |
| PostgreSQL (tabla por tabla) | 211 | Hasta 50.000 filas por tabla; ninguna en la región de Taipéi (tpe1) |
| new-api/one-api | 10 | Claves de servicios de IA, tokens de acceso y usuarios |
| Redis | 1 | Entradas cuyo nombre contiene palabras como token o secret |
| MongoDB, MariaDB | 1 cada una | En Taipéi (tpe0) no hay contenido de los comandos; se tratan como filtradas por completo |
Revisamos 607 instancias de n8n con PostgreSQL, y 602 tenían la clave de cifrado en una variable de entorno, así que las credenciales de terceros guardadas en n8n quedaron tan expuestas como si estuvieran en texto plano. Estas lecturas se hicieron dentro del contenedor, por lo que rotar las contraseñas de base de datos después del incidente de agosto no protegía frente a ellas.
Además, en la región de Tokio (hnd1), al menos 2 bases de datos PostgreSQL tenían instalado desde el 14 de octubre a la 01:51 un programa que se conectaba a un servidor externo, y una de ellas seguía conectándose el 15 de octubre a las 16:24. Si el punto de entrada fue una contraseña filtrada en agosto no se puede confirmar. Al descubrirlo avisamos a los usuarios afectados para que sustituyeran sus credenciales.
El atacante inició sesión como root en 101 servidores; el último inicio de sesión fue el 15 de octubre a las 20:36. En 50 de ellos añadió claves públicas SSH bajo su control para poder volver a entrar más adelante. También creó 5 máquinas virtuales en el proyecto de GCP de Zeabur y montó en ellas 16 copias de discos de servidores de clientes.
Tratamos los 101 servidores como si sus datos se hubieran filtrado y pudieran tener puertas traseras. Hemos avisado por correo electrónico a los usuarios afectados y restablecido la contraseña de root de estos servidores.
Los tokens con los que se administran los servidores de clientes en Hetzner y DigitalOcean estaban en código interno y en variables de entorno, y se filtraron junto con la base de datos de la plataforma. Con ellos se puede restablecer la contraseña, reinstalar el sistema o copiar discos. El 16 de octubre a la 01:09 revocamos todos los tokens. Ninguno de los dos proveedores ofrece una API de auditoría de operaciones, así que no se puede confirmar si se usaron. Solo hemos podido descartar una cosa: los restablecimientos de contraseña y la creación de imágenes del 15 de octubre en Hetzner los hicieron los propios clientes y tareas programadas del sistema. En DigitalOcean no tenemos resultados del cotejo.
De los 890 servidores de Linode, en los 847 que tienen registros no hay inicios de sesión del atacante. No hay registros de uso de las credenciales de administración de Tencent Cloud.
El 15 de octubre a las 15:05, el atacante leyó la clave privada de la GitHub App de Zeabur. Con ella se puede acceder a los repositorios a los que los usuarios han dado acceso a Zeabur. A las 18:54 rotamos la clave privada. No se puede confirmar si llegó a usarse: no tenemos los registros de auditoría completos de la organización de GitHub, y GitHub Support nunca respondió a nuestra solicitud de registros.
El atacante utilizó varias claves de AWS de Zeabur. La mayoría de las solicitudes se rechazaron, pero el atacante listó las copias de seguridad de bases de datos de usuarios de dos regiones y el contenido de las subidas de código fuente; si los descargó no se puede confirmar. Todos sus intentos de llamar a Amazon Bedrock fallaron y no generaron cargos.
| Función | Periodo afectado (UTC) | Estado actual |
|---|---|---|
| Inicio de sesión | Desde el 15/10 a las 20:25 es necesario volver a iniciar sesión | Normal |
| zSend y correos del sistema (incluidos los enlaces de inicio de sesión) | 15/10 20:00–22:02 | Restablecido; hay que volver a crear las claves de zSend |
| Inicio de sesión con GitHub y despliegues | 15/10 18:54–22:49 | Restablecido |
| Compilaciones | 15/10 20:05–22:56; en la región de China, hasta el 16/10 01:44 | Restablecido |
| Copias de seguridad de bases de datos | 15/10 20:33–22:13 | Restablecido |
| Administración de servidores dedicados de GCP | 15/10 17:31–20:35 | Restablecido; solo mediante SSH web |
| Renovación automática de servidores dedicados | Tencent Cloud, 15/10 22:55–16/10 01:08: 154 fallos | Restablecido; los cargos se han devuelto como saldo de la cuenta |
| Restablecimiento de contraseña y registros de inicio de sesión SSH de Tencent Cloud | Desde el 15/10 | Restablecido |
| Clústeres de Kubernetes dedicados de Linode | Desde el 15/10 | Restablecido |
El atacante siguió dos rutas: la ruta A entró desde los clústeres compartidos en AWS y en el servicio de gestión de secretos de Zeabur, y la ruta B consiguió acceso root a los servidores dedicados de GCP. El 15 de octubre, las dos rutas convergieron en la red interna de Zeabur. Las técnicas de MITRE ATT&CK de cada paso figuran en el anexo.
Estos inicios de sesión se produjeron el 14 de octubre, más de un día antes de la primera lectura conocida de secretos de producción en la ruta A (15 de octubre, 14:52), así que el origen de la ruta B no puede explicarse con los secretos leídos en la ruta A. Entre el 1 y el 5 de septiembre, un origen desconocido ya había iniciado sesión con la contraseña de root en el mismo grupo de servidores, unos 98 de ellos el 5 de septiembre. Si se trata del mismo atacante no se puede confirmar.
La conclusión de que se leyó la base de datos de la plataforma se basa en los registros de conexión de ambos extremos de la red interna y en los registros de la base de datos: las 29 conexiones a la base de datos de ese periodo corresponden a este nodo, y los inicios de sesión y las consultas de esas conexiones pueden rastrearse uno por uno, con un total de 8.903 registros de operaciones.
El 15 de octubre a las 13:56 recibimos el aviso de un usuario y solo entonces abrimos la investigación. Habían pasado unas 36 horas desde que el atacante usó credenciales por primera vez (14 de octubre, 01:36), y su actividad del 14 de octubre había durado más de 16 horas.
En todo ese tiempo no saltó ninguna alerta:
Unas 4 horas después de abrir la investigación eliminamos el nodo del atacante en la red interna. Estas fueron las medidas del 15 y el 16 de octubre:
| Hora (15 de octubre) | Medida |
|---|---|
| 14:43–15:56 | La interfaz de administración de los clústeres compartidos solo admite conexiones de sistemas de Zeabur |
| 15:32 | Revocación del token de administración del clúster utilizado; nueva rotación a las 21:47 |
| 17:17, 17:31 | Desactivación de las dos claves de GCP que utilizó el atacante |
| 17:58 | Eliminación del nodo del atacante en la red interna y revocación de la credencial con la que se creó |
| 18:51 | Eliminación de la clave de acceso a las copias de seguridad de los clústeres |
| 18:54 | Rotación de la clave privada de la GitHub App, la clave del servicio de pagos y el secreto de GitHub OAuth |
| 18:55 | Eliminación de la contraseña de root de la configuración de inicialización de los servidores de GCP |
| 20:05–21:22 | Desactivación de 24 claves de AWS filtradas o cuya filtración no puede descartarse, sustituidas por claves nuevas con menos permisos |
| 20:25 | Rotación de la clave de firma de inicio de sesión; se cierra la sesión de todos los usuarios |
| 20:34–20:36 | Retirada de permisos a la cuenta de servicio predeterminada de los servidores de GCP; bloqueo del SSH desde Internet a los servidores de GCP |
| 20:47 | Revocación de las 566 claves de API de zSend |
| 21:46 | Los clústeres dedicados gestionados por Zeabur solo admiten conexiones de sistemas de Zeabur |
| 16/10 01:09 | Revocación de los tokens filtrados de Hetzner y DigitalOcean |
El atacante llegó a usar parte de las credenciales que pusimos el mismo día de la respuesta, y el problema estaba en la copia de seguridad diaria de los clústeres. Esa copia incluye todos los recursos del clúster, secretos incluidos, y el atacante había leído la clave de acceso a las copias de seguridad el 15 de octubre a las 15:04:
Está confirmado que la copia de seguridad incluyó la clave nueva y que después se usó; que el atacante descargara esa copia es una evaluación. La clave usada a las 20:30 también pudo salir de una copia que el atacante ya tuviera antes de las 18:51.
El atacante tenía desde el principio el token de administración de los clústeres de Zeabur y varias claves de la nube. Estas credenciales estaban en el repositorio de configuración privado de Zeabur y, como se había hecho siempre, se guardaban en texto plano. Lo más probable es que se filtrara este repositorio, pero la vía no se puede confirmar; las hipótesis figuran en Hipótesis no demostradas.
Este es el segundo incidente de seguridad de Zeabur en menos de dos meses. Muchos usuarios hicieron cambios después de agosto siguiendo nuestras indicaciones, y querrán saber por qué volvió a ocurrir pese a esas medidas y si los dos incidentes están relacionados.
Qué se hizo después de agosto. Rotamos las claves internas que entonces se confirmó que se habían filtrado y desactivamos las Legacy API Keys. En el producto, los proyectos de servidores dedicados pueden migrar sus variables de entorno y archivos de configuración a su propio servidor, eliminar las credenciales SSH que guarda Zeabur y consultar los registros de inicio de sesión SSH. En los avisos y el anuncio del incidente de agosto también recomendamos a los usuarios rotar sus credenciales, eliminar las variables de entorno y los archivos de configuración almacenados en Zeabur, y migrarlos a su propio servidor.
Por qué volvió a ocurrir. La rotación de agosto no cubrió el token de administración de los clústeres ni las claves de AWS guardadas en texto plano en el repositorio de configuración, y la contraseña de root de la configuración de inicialización de los servidores de GCP tampoco se había corregido. Esas son precisamente las credenciales que utilizó el atacante esta vez. El informe del incidente de agosto decía que se habían «desactivado o rotado todas las claves administrativas internas»; esa afirmación no era completa, y aquí la corregimos.
Zeabur cesará su actividad el 31 de diciembre de 2026, por lo que aquí solo figuran las mejoras ya aplicadas.
| Acción | Estado |
|---|---|
| Revocar el token de administración del clúster utilizado y permitir en la interfaz de administración solo conexiones de sistemas de Zeabur | Completada |
| Eliminar la contraseña de root de la configuración de inicialización de los servidores de GCP y bloquear el SSH desde Internet | Completada |
| Sustituir las claves de AWS por claves nuevas con menos permisos | Completada |
| Permitir conexiones a la base de datos de la plataforma solo desde servicios designados | Completada |
| Dejar de guardar secretos en texto plano en las copias de seguridad de los clústeres y guardar la clave de las copias por separado del resto de secretos | Completada |
| Nuevas alertas: uso inusual de permisos de administración, ejecución de comandos dentro de contenedores, lectura masiva de secretos o bases de datos, unión de nodos nuevos a la red interna y uso de claves de la nube desde orígenes desconocidos | Completada en una primera fase |
Con los registros disponibles, los puntos siguientes seguían sin poder determinarse al cerrar este informe. Tratamos como filtrados todos los datos y credenciales en los que no se puede descartar un acceso.
31.57.201.201, que inició sesión con la contraseña de root en servidores dedicados de GCP a principios de septiembre, es el mismo atacante.Estas son las explicaciones que consideramos más probables. Las respaldan pruebas indirectas, pero carecen de registros directos y no deben citarse como hechos. Al cerrar este informe, ninguna se había demostrado ni descartado.
103.237.102.191: el 10 de octubre a las 18:27 navegó por Zeabur sin iniciar sesión, y el 14 de octubre accedió a los clústeres compartidos con el token de administración.23.106.46.239: desde el 12 de octubre a las 12:52 hizo numerosos intentos en la API de Zeabur sin iniciar sesión, el 13 de octubre intentó iniciar sesión por SSH en servidores dedicados y el 14 de octubre a la 01:36 usó por primera vez las claves de AWS filtradas.| Hora (UTC) | Evento |
|---|---|
| 10 de enero de 2024 | Se crea el token de administración de los clústeres compartidos, sin caducidad |
| 20 de enero de 2026 | El token de administración se escribe en texto plano en el repositorio de configuración |
| 27 de agosto | En el incidente de agosto se lee la clave privada de la GitHub App; su relación con este incidente es una hipótesis |
| 30 de agosto y 2 de septiembre | El repositorio de configuración se descarga como archivo comprimido con la autorización de GitHub de un empleado; no se puede confirmar quién lo descargó |
| 31 de agosto | Sustitución de la clave privada de la GitHub App; las credenciales en texto plano del repositorio de configuración no se rotan |
| 1–5 de septiembre | Un origen desconocido inicia sesión con la contraseña de root en unos 98 servidores dedicados de GCP |
| 3 de septiembre | Se detecta que la configuración de inicialización de los servidores de GCP guarda la contraseña de root; no se corrige antes del incidente |
| 10 de octubre, 18:27 | Una IP utilizada después en el abuso de credenciales aparece por primera vez en los registros de acceso de la API de Zeabur (sin iniciar sesión) |
| 13 de octubre, 21:27 | Una IP del atacante intenta iniciar sesión por SSH en 3 servidores dedicados hasta las 23:04, sin éxito en todos los casos |
| 14 de octubre, 01:36 | El atacante utiliza por primera vez las claves de AWS de Zeabur |
| 14 de octubre, 01:40 | El atacante accede por primera vez a los clústeres compartidos con el token de administración |
| 14 de octubre, 12:39 | El atacante lee la configuración y los secretos de todos los servicios de los clústeres compartidos |
| 14 de octubre, 13:40 | El atacante empieza a leer datos dentro de los contenedores de bases de datos y, a la vez, a iniciar sesión en los servidores dedicados de GCP |
| 14 de octubre, 17:04 | Último comando dentro de los contenedores de bases de datos |
| 15 de octubre, 13:56 | Tras recibir el aviso de un usuario, se inicia la investigación |
| 15 de octubre, 14:43 | Empieza la restricción de los orígenes de conexión a la interfaz de administración de los clústeres compartidos |
| 15 de octubre, 14:52 | El atacante empieza a leer unos 53 secretos de producción, hasta las 16:51 |
| 15 de octubre, 15:02 | La clave de despliegue de un servicio desactivado lee el repositorio de configuración (hipótesis: el atacante) |
| 15 de octubre, 15:30 | El atacante une un nodo a la red interna de Zeabur |
| 15 de octubre, 15:42 | El atacante descarga copias de seguridad de bases de datos de usuarios del almacenamiento de Zeabur |
| 15 de octubre, 16:06 | El atacante busca claves de API en los datos obtenidos, hasta las 18:13 |
| 15 de octubre, 16:10 | El atacante empieza a leer la base de datos de la plataforma, hasta las 16:47 |
| 15 de octubre, 16:12 | El atacante empieza a llamar a la API suplantando cuentas, hasta las 17:19 |
| 15 de octubre, 17:58 | Se elimina el nodo del atacante en la red interna |
| 15 de octubre, 19:50 | Segunda oleada de inicios de sesión del atacante en servidores dedicados de GCP, hasta las 20:36 |
| 15 de octubre, 20:25 | Rotación de la clave de firma de inicio de sesión; se cierra la sesión de todos los usuarios |
| 15 de octubre, 20:36 | Se bloquea el SSH desde Internet a los servidores dedicados de GCP y cesan los inicios de sesión del atacante |
| 15 de octubre, 20:48 | La página de estado se actualiza para indicar que también se vieron afectados la base de datos de la plataforma y los servidores dedicados |
| 15 de octubre, 21:01 | El atacante intenta acceder a nodos de los clústeres compartidos y se le deniega el acceso |
| 15 de octubre, 21:05 | Última actividad del atacante observada (AWS) |
| 16 de octubre, 01:09 | Revocación de los tokens de Hetzner y DigitalOcean |
Si encuentras alguno de los siguientes indicadores en tus sistemas o en los registros de tu proveedor de servicios, trata las credenciales relacionadas como filtradas y ponte en contacto con nosotros. El atacante utilizó de forma masiva servidores proxy rotativos; la tabla solo recoge direcciones representativas. La confianza sigue la escala de 0 a 100 de STIX: Confirmado equivale a 85, Evaluado a 60 y No se puede confirmar a 30. La versión legible por máquina está en el archivo STIX 2.1, donde los indicadores de IP son válidos hasta el 13 de enero de 2027.
| Tipo | Indicador | Dónde aparece | Confianza |
|---|---|---|---|
| IP | 23.106.46.239 | Acceso a clústeres, API de la nube, inicios de sesión SSH | 85 |
| IP | 102.244.78.57 | API de la nube, modificaciones de configuración de GCP | 85 |
| IP | 103.237.102.191 | Acceso a clústeres, API de la nube | 85 |
| IP | 103.112.139.162 | Primer uso del token de administración del clúster | 85 |
| IP | 45.146.232.28 | Validación de claves de AWS | 85 |
| IP | 216.98.11.198, 45.58.38.175 | Inicios de sesión SSH en servidores dedicados | 85 |
| IP | 52.220.72.188 | Dirección a la que se conectaba el programa instalado en PostgreSQL | 85 |
| IP | 31.57.201.201 | Inicios de sesión con la contraseña de root en servidores dedicados de GCP a principios de septiembre; no se puede confirmar su relación con este incidente | 30 |
| Clave SSH | Comentario *@zeabur-pentest, huella SHA256:EdBc0uephoOMemIRKK0SRV2TRR45n52tJm1yErVU1iM | Clave que el atacante añadió a los servidores dedicados | 85 |
| User-Agent | Contiene a la vez Boto3/1.43.111 y os/linux#6.12.86+deb13-amd64 | Cliente con el que el atacante usó las claves de AWS; por sí solo da falsos positivos, así que combínalo con la IP de origen y la clave | 60 |
Ordenada según las tácticas de MITRE ATT&CK.
| Táctica | Técnica | Sección del artículo |
|---|---|---|
| Acceso inicial | T1078.004 Cuentas válidas: cuentas en la nube | Ruta A, paso 1 |
| Acceso inicial | T1133 Servicios remotos externos | Convergencia de las dos rutas, paso 1 |
| Ejecución | T1609 Comando de administración de contenedores | Ruta A, paso 3 |
| Persistencia | T1098.004 Manipulación de cuentas: claves SSH autorizadas | Ruta B, pasos 2 y 3 |
| Evasión de defensas | T1578.002 Modificación de la infraestructura de computación en la nube: creación de instancias en la nube | Servidores dedicados de GCP |
| Evasión de defensas | T1578.001 Modificación de la infraestructura de computación en la nube: creación de instantáneas | Servidores dedicados de GCP |
| Acceso a credenciales | T1552.001 Credenciales sin proteger: credenciales en archivos | Ruta A, paso 1 |
| Acceso a credenciales | T1552.007 Credenciales sin proteger: API de contenedores | Ruta A, paso 2 |
| Acceso a credenciales | T1552 Credenciales sin proteger | Ruta B, paso 1 |
| Acceso a credenciales | T1555.006 Credenciales de almacenes de contraseñas: almacenes de gestión de secretos en la nube | Ruta A, paso 5 |
| Acceso a credenciales | T1606 Falsificación de credenciales web | Suplantación de cuentas |
| Acceso a credenciales | T1110 Fuerza bruta (hipótesis) | Intentos de SSH anteriores al 14 de octubre |
| Descubrimiento | T1580 Descubrimiento de infraestructura en la nube | Sistemas internos de Zeabur |
| Movimiento lateral | T1021.004 Servicios remotos: SSH | Ruta B, paso 1 |
| Recopilación | T1530 Datos de almacenamiento en la nube | Ruta A, paso 4 |
| Recopilación | T1213.006 Datos de repositorios de información: bases de datos | Convergencia de las dos rutas, paso 2 |
| Impacto | T1496.004 Secuestro de recursos: secuestro de servicios en la nube (sin éxito) | Sistemas internos de Zeabur |
Si necesitas ayuda, o detectas accesos inusuales o cargos que no puedas explicar, ponte en contacto con nosotros a través de Zeabur Support. Antes de escribirnos, revoca las credenciales afectadas y facilita únicamente información enmascarada; no incluyas claves ni contraseñas todavía válidas en un ticket de soporte ni en ningún canal público.
Si alguien usa las credenciales filtradas, es posible que tengas que asumir cargos adicionales, y lo sentimos mucho. Con su situación financiera actual, Zeabur no puede asumir los costes de servicios de terceros derivados de este incidente. La mayoría de los proveedores de nube y de API tienen vías de reclamación o de condonación, y puedes adjuntar este informe como explicación. Si el proveedor te pide otros justificantes, indícanoslo en un ticket y haremos lo posible por facilitarlos. Este incidente no afecta a los reembolsos del saldo de la cuenta; los detalles están en el seguimiento del incidente de seguridad de octubre.
Zeabur ha anunciado que cesará su actividad el 31 de diciembre de 2026, una decisión de carácter operativo. Hasta entonces seguiremos atendiendo las solicitudes de soporte relacionadas con este incidente.
Supimos de este incidente por el aviso de un usuario, unas 36 horas después de que el atacante empezara a usar las credenciales. Proteger las credenciales que guardas en Zeabur era responsabilidad nuestra, y no lo conseguimos. Pedimos disculpas a todos los usuarios afectados.
El equipo de Zeabur