El robo de claves en Railway dejó 740.000 dólares en consultas de IA de terceros

El robo de claves en Railway dejó 740.000 dólares en consultas de IA de terceros

La plataforma tuvo que interrumpir bruscamente el servicio en plena jornada laboral.

Alternativas:
- La plataforma se vio obligada a cortar el servicio en pleno horario laboral.
- La plataforma tuvo que accionar el freno de emergencia en plena jornada laboral.

image

La intrusión en la plataforma en la nube Railway resultó en aproximadamente 740.000 dólares en gastos por solicitudes de IA ajenas. La empresa publicó la cadena de acceso a través de una vulnerabilidad previamente desconocida en el sistema de compilación de aplicaciones. Potencialmente se vieron afectados hasta 100.000 espacios de trabajo, pero Railway no confirmó el robo de secretos para cada cliente. Los detalles se dieron a conocer el 10 de noviembre.

El ataque comenzó el 20 de octubre, cuando el atacante salió del aislamiento de archivos de la compilación en una máquina virtual multialojada. La clave interna obtenida daba acceso a los servicios de Railway, aunque estaba destinada a la carga de imágenes listas. Los primeros signos del incidente los detectaron los ingenieros por accesos anómalos al registro de compilaciones varias horas después.

El planificador interno Temporal aceptó por error la clave robada como confiable. A través de su API, el atacante leyó los historiales de 353 compilaciones, incluidas las variables guardadas, y extrajo el monorrepositorio con el código fuente de Railway. Tras obtener el esquema de los servicios internos, el atacante empezó a buscar nuevas vías de acceso. La empresa no encontró indicios de descarga del código fuente de proyectos de clientes.

La segunda vía se abrió debido a una configuración incorrecta de confianza OIDC en el entorno en la nube. El atacante obtuvo acceso temporal a la infraestructura, consiguió una clave SSH, se introdujo en el servidor de control y halló datos para descifrar las variables de entorno. Desde las 04:42 hasta las 07:14 UTC del 21 de octubre, el atacante consultó el servicio de gestión de claves, eligiendo ante todo los secretos de proveedores de IA.

Railway estimó el límite superior de espacios afectados en 1,85 %, o aproximadamente 100.000. Los registros muestran en qué entornos pudo haberse producido el descifrado, pero no revelan la lista exacta de valores robados. Se confirmó la compromisión de los tokens asociados de 1.852 usuarios, incluido GitHub OAuth. La empresa revocó los tokens y no halló indicios de accesos a cuentas de Railway con su uso.

Las claves robadas se utilizaron para llamadas de pago a modelos, acumulando alrededor de 740.000 dólares en gastos no autorizados. En las solicitudes del atacante también aparecían secretos de servicios en la nube, bases de datos y sistemas de pago; sin embargo, no hay pruebas de acceso a las bases de datos de clientes. Railway busca la devolución de fondos por parte de los proveedores y promete cubrir los gastos que los proveedores de servicios no compensen.

El ataque encaja en una serie de robos de claves de servicios de IA. Wiz relacionó los informes de al menos nueve plataformas en octubre, incluidas Fireworks AI, OpenCode y Warp. Wiz también rastreó el uso posterior de las claves robadas. No detectaron una vulnerabilidad común entre los episodios, ni se ha probado la implicación de un mismo grupo. Una cacería similar de claves API se observó anteriormente en ataques a LiteLLM y otros sistemas de IA.

Railway detuvo las compilaciones dos veces, cambió las claves internas y trasladó las tareas a máquinas virtuales temporales separadas. El 22 de octubre restauraron el servicio para todos los planes. La empresa cerró las vías de acceso utilizadas y anteriormente recomendó a los clientes reemplazar los secretos. Aún no se han publicado los números CVE ni las puntuaciones CVSS para el método descrito de elusión del aislamiento.