AIT-GUI, la consola web de código abierto que opera instrumentos en misiones espaciales, exponía endpoints de comando sin ninguna barrera de seguridad.
Investigadores de Cycode descubrieron que AIT-GUI, la interfaz web del AMMOS Instrument Toolkit de NASA/JPL, inicia un servidor HTTP sin autenticación, autorización ni protección CSRF en ninguno de sus endpoints que cambian estado. Cualquiera con acceso al puerto — o cualquier sitio web que un operador visite en el mismo navegador — puede enviar comandos arbitrarios a instrumentos de naves espaciales, ejecutar scripts del lado del servidor o lanzar secuencias de comandos. La vulnerabilidad está rastreada como GHSA-p9r8-2q67-fp86 con puntuación CVSS de 9.4 (Crítica) y fue corregida en AIT-GUI 2.5.2.
Cuatro debilidades ordinarias con consecuencias extraordinarias
AMMOS (Advanced Multi-Mission Operations System) es un framework de código abierto utilizado por NASA/JPL y otras misiones para controlar naves espaciales e instrumentos, enviar comandos y procesar los datos que retornan. AIT-GUI es la interfaz web que los operadores usan para hacer esto en tiempo real. La vulnerabilidad no es un solo defecto: son cuatro debilidades web comunes que se componen en algo con consecuencias inusuales.
La primera es que el servidor lee la configuración de host establecida por el operador y luego la ignora, vinculándose en cambio a 0.0.0.0, lo que significa todas las interfaces de red. Un operador que configura host: localhost para mantener la consola en loopback obtiene un servidor expuesto a toda la red alcanzable de todos modos. La segunda y tercera debilidades derivan de la primera: no hay requisito de login, no hay compuerta de sesión, no hay token CSRF y no hay restricción de origen cruzado en ninguna ruta. El endpoint POST /cmd toma lo que llega en el campo de comando, lo parsea y lo entrega directamente al bus de comandos sin verificación alguna entre la red y el hardware.
La cuarta debilidad reside en POST /seq y POST /script/run, que construyen rutas del sistema de archivos uniendo entrada de usuario sin confinamiento sobre un directorio raíz. Un valor de seqfile como ../../../../something se resuelve fuera del directorio de secuencias previsto. Los investigadores de Cycode señalaron que la verificación de confinamiento correcta ya existe en la misma base de código, en una ruta hermana llamada /scripts/load: el patrón seguro ya estaba escrito, simplemente no se aplicó de manera consistente.
Por qué un firewall no detiene el ataque CSRF en este caso
El riesgo CSRF es especialmente grave porque un firewall no lo detiene. Los navegadores pueden enviar ciertas solicitudes de formulario desde otro sitio web sin verificar primero con el sitio objetivo. Si un operador abre una página maliciosa en el mismo navegador que usa para la consola, esa página puede enviar comandos como POST /cmd, POST /seq o POST /script/run. El atacante no necesita acceso directo al sistema ni a su puerto de red: solo necesita que el operador abra un enlace malicioso.
Esta característica del protocolo HTTP convierte la falla en un vector de ataque remoto sin necesidad de penetrar la red. Un operador que revisa su correo personal o visita un sitio comprometido mientras tiene la consola abierta en otra pestaña puede ejecutar comandos en hardware espacial sin saberlo. La solicitud POST se envía con las credenciales del navegador (aunque en este caso no hay credenciales que validar), y el servidor la acepta sin cuestionar su origen.
Cómo la IA asistió el hallazgo pero no lo confirmó
El equipo de investigación de Cycode usó una combinación de análisis de código asistido por IA y validación humana para encontrar y confirmar los problemas. La IA manejó la revisión inicial de la base de código, marcando patrones reconocibles: rutas que cambian estado sin autenticación en ningún punto de su camino de llamada, entrada de usuario fluyendo desde un parámetro de solicitud hacia una llamada de subproceso sin sanitización, y un valor de configuración que se leía y luego se descartaba silenciosamente.
El investigador humano confirmó luego que cada patrón era explotable y redujo cada uno a una prueba de concepto funcional, incluyendo una demostración CSRF autocontenida que manejó un navegador headless real y registró cero preflights de red. Ese segundo paso importa: una coincidencia de patrón apunta a un candidato, un exploit reproducido confirma que el hallazgo es real. Cycode declara explícitamente que solo reporta el segundo tipo.
Exposición en América Latina por adopción de frameworks abiertos de NASA
Aunque AMMOS es un framework desarrollado para misiones de NASA/JPL, su naturaleza de código abierto lo hace disponible para cualquier organización que opere instrumentos remotos o sistemas de telemetría. En América Latina, instituciones académicas y agencias espaciales emergentes en Argentina, Brasil, Chile y México han adoptado componentes de frameworks abiertos de NASA para proyectos de satélites pequeños y estaciones terrestres. Si alguna de estas implementaciones desplegó AIT-GUI antes de la versión 2.5.2 sin aislar el puerto de redes no confiables, la superficie de ataque es idéntica a la de una misión de NASA.
La dependencia de software de control crítico sin revisión de seguridad propia es un patrón recurrente en el sector espacial regional. La corrección está disponible, pero la ventana entre el despliegue inicial y la aplicación del parche puede haber dejado instancias expuestas. Cualquier operador que haya ejecutado una instancia expuesta antes del parche debería tratarlo como motivo para auditar el historial de comandos y secuencias, dado que un POST no autenticado no deja rastro a nivel de usuario por diseño.
Nuestro análisis
Este caso revela un patrón que se repite en software operacional y de sistemas terrestres: heredan las mismas debilidades web que cualquier aplicación, pero con un costo de falla mucho más alto. Autenticación, defensa CSRF y confinamiento de entrada no son extras opcionales en un panel que comanda hardware. Lo notable aquí no es que existan vulnerabilidades web en un proyecto de código abierto — eso es esperable — sino que el patrón seguro ya estaba escrito en la misma base de código y simplemente no se aplicó de manera consistente. La lógica de confinamiento de rutas en /scripts/load funcionaba correctamente; POST /seq y POST /script/run no la usaban.
La combinación de análisis asistido por IA y validación humana que Cycode describe es el modelo correcto: la IA marca candidatos, el humano confirma explotabilidad. Pero el hallazgo también subraya que la revisión de seguridad en proyectos de infraestructura crítica no puede depender de que un tercero externo encuentre lo que ya debería haberse detectado en revisión interna. La corrección en AIT-GUI 2.5.2 cierra la ventana, pero la pregunta que queda es cuántas otras consolas de control — espaciales, industriales, de infraestructura — están ejecutando servidores HTTP sin autenticación en 0.0.0.0 porque nadie verificó que la configuración de host se respetara realmente.