Investigadores de seguridad de la empresa Cycode revelaron una cadena de vulnerabilidades en AIT-GUI, una consola de operaciones basada en navegador para el framework abierto AMMOS Instrument Toolkit (NASA/JPL), diseñado para construir sistemas terrestres de control de naves espaciales e instrumentos. La cadena, rastreada como GHSA-p9r8-2q67-fp86 con una puntuación de 9.4 según CVSS v3.1, permite a un atacante no autenticado enviar comandos arbitrarios al bus de comandos del software. Se ven afectadas las versiones 2.5.1 y anteriores; se declara que la corrección está disponible en la versión 2.5.2, pero el análisis del código fuente muestra que la autenticación en los endpoints clave sigue sin implementarse. Hasta el momento no se han registrado casos de explotación en condiciones reales.
Esencia técnica de las vulnerabilidades
Según los investigadores, el servidor web de AIT-GUI lee el valor configurado de host, pero luego lo ignora y vincula el listener a la dirección fija 0.0.0.0 en el puerto 8080. Esto significa que el servidor acepta conexiones desde todas las interfaces de red. Al mismo tiempo, todas las rutas que modifican el estado del sistema están disponibles sin autenticación, sin autorización y sin protección frente a falsificación de solicitudes entre sitios (CSRF).
Las vulnerabilidades se han clasificado en tres categorías CWE:
- CWE-306: ausencia de autenticación para funciones críticas
- CWE-352: falsificación de solicitudes entre sitios
- CWE-22: bypass de ruta (path traversal)
Un atacante no autenticado con acceso de red al puerto puede:
- Enviar comandos arbitrarios a instrumentos y naves espaciales mediante
POST /cmd - Ejecutar scripts del lado servidor a través de
POST /script/run, incluidos archivos fuera del directorio permitido mediante path traversal - Ejecutar secuencias de comandos mediante
POST /seq, pasando al subproceso archivos de directorios arbitrarios
El vector de ataque vía CSRF reviste un peligro especial. Dado que las rutas aceptan cuerpos de petición en formato application/x-www-form-urlencoded, los navegadores los consideran como solicitudes CORS «simples» y los envían sin una petición previa OPTIONS. Tal como señalan los investigadores, si un operador con acceso a la consola abre en el navegador una página controlada por el atacante, la petición POST entre sitios se enviará y será procesada por el servidor, incluso si este se despliega detrás de un firewall.
Carácter incompleto de la corrección en la versión 2.5.2
La versión AIT-GUI 2.5.2 fue publicada el 12 de agosto de 2026. Según el registro de cambios, implementa tres mejoras clave:
- Vinculación al host configurado (por defecto, localhost en lugar de 0.0.0.0)
- Verificación de Origin/Referer frente a Host para peticiones POST, PUT, DELETE y PATCH a fin de proteger contra CSRF
- Restricción de las rutas
/script/runy/seqa directorios raíz configurados
Sin embargo, el análisis del código fuente de la versión 2.5.2 mostró que no se añadió autenticación a los endpoints de comandos, scripts y secuencias. La ruta raíz sigue llamando a Sessions.create() y emite una cookie de sesión para cualquier petición sin verificar credenciales, y la ruta de comandos acepta cualquier solicitud que incluya esa cookie. Así, la corrección reduce la superficie de ataque, pero no elimina el problema fundamental de ausencia de autenticación.
Conflicto entre los registros de vulnerabilidades
La situación se complica por la existencia de un registro paralelo de la vulnerabilidad. CVE-2026-60112, con una puntuación de 9.3 según CVSS v4 y publicado el 29 de julio de 2026 —tres semanas antes del informe de Cycode—, describe el mismo defecto de ausencia de autenticación. Sin embargo, los registros difieren en la definición de las versiones afectadas: VulnCheck y la entrada de NVD indican que la vulnerabilidad afecta a versiones hasta la 2.5.1 y remiten al commit beb8fc0 como parche, mientras que Cycode considera vulnerable la 2.5.1 y señala la 2.5.2 como versión corregida. No obstante, el análisis del código fuente de ambas versiones muestra que la emisión no autenticada de sesiones está presente tanto en la 2.5.1 como en la 2.5.2.
Además, parte del alcance declarado de la vulnerabilidad en el informe de Cycode podría estar exagerado: el análisis del código fuente de la versión 2.5.1 demostró que la ruta /script/run ya contiene la canonización y la comprobación de profundidad de ruta que recomienda el propio informe. La construcción de ruta sin restricciones en la 2.5.1 solo está presente en la ruta /seq.
Problema de distribución a través de PyPI
Un aspecto de importancia crítica: la última versión del paquete ait-gui en PyPI es la 2.4.1, subida el 27 de julio de 2023. Las versiones 2.5.0, 2.5.1 y 2.5.2 no figuran en el historial de lanzamientos de PyPI. Esto significa que los usuarios que instalan el paquete mediante pip reciben una versión con vinculación fija a 0.0.0.0 y una construcción de ruta sin restricciones en ambas rutas. Al mismo tiempo, PyPI no muestra información sobre vulnerabilidades para este paquete y ninguno de los registros de vulnerabilidades está integrado en el sistema Dependabot.
Contexto más amplio de la seguridad del software terrestre de la NASA
AIT-GUI no es el único componente del software terrestre de la NASA con problemas de seguridad aún no resueltos. La base de datos GitHub Advisory contiene registros de varias vulnerabilidades en proyectos relacionados, incluido un bypass de ruta en AMMOS Instrument Toolkit (CVE-2026-47731), vulnerabilidades críticas en el servidor de secuenciación NASA-AMMOS Aerie/PlanDev (CVE-2026-71214) y en la implementación de referencia de Asynchronous Network Management System (CVE-2026-71289).
Merece especial atención CVE-2024-35058, una vulnerabilidad crítica de ejecución remota de código en la función de API wait de la biblioteca NASA AIT-Core, publicada en mayo de 2024. Afecta a las versiones hasta la 2.5.2 inclusive, y en su entrada en GitHub Advisory Database todavía se indica que no existen versiones corregidas.
Recomendaciones
Las organizaciones que utilicen AIT-GUI deberían adoptar las siguientes medidas:
- Comprobar de inmediato si el puerto 8080 de AIT-GUI es accesible desde redes no confiables y restringir el acceso mediante segmentación de red
- Actualizar a la versión 2.5.2 desde el repositorio de GitHub (no a través de PyPI, donde la versión actual no está disponible), teniendo en cuenta que esto reduce, pero no elimina, el riesgo
- Situar un servidor reverse proxy con autenticación completa delante de AIT-GUI, dado que el propio servidor no implementa verificación de credenciales
- Restringir el acceso de los operadores de la consola a recursos web externos para minimizar el riesgo de ataques CSRF
- Realizar una auditoría de las instancias desplegadas de AIT-Core en relación con CVE-2024-35058, para la cual no existe parche
La situación con AIT-GUI pone de manifiesto un problema sistémico: el software para gestionar infraestructura espacial crítica, originalmente desarrollado para entornos aislados, se vuelve vulnerable cuando cambia el modelo de despliegue. Las discrepancias entre los registros de vulnerabilidades, la ausencia de versiones actualizadas en PyPI y el carácter incompleto del parche en la 2.5.2 implican que la única medida de protección fiable por el momento sigue siendo colocar una capa externa de autenticación delante de todas las instancias de AIT-GUI, independientemente de la versión instalada.