Vulnerabilidades en NASA AIT-GUI podrían permitir a atacantes no autenticados ejecutar comandos en naves espaciales

Detalles de la vulnerabilidad

Investigadores de seguridad de Cycode han divulgado una cadena de vulnerabilidades en AIT-GUI, la consola de operador basada en navegador del AMMOS Instrument Toolkit (AIT) de NASA/JPL, que permitiría a un atacante no autenticado emitir comandos arbitrarios al bus de comandos de la nave espacial y los instrumentos. La cadena, registrada como GHSA-p9r8-2q67-fp86 y con una puntuación de 9.4 en CVSS v3.1, afecta a AIT-GUI versiones 2.5.1 y anteriores, y ha sido corregida en la versión 2.5.2. El aviso, publicado el 13 de agosto de 2026, señala que no se ha asignado un CVE para esta cadena específica.

El AMMOS Instrument Toolkit es un marco para construir sistemas de datos en tierra, el software que envía comandos a instrumentos y naves espaciales y procesa la telemetría que regresa. AIT-GUI es su consola de operador, y los endpoints en cuestión transmiten comandos del operador a un bus de comandos. Según Cycode, “el radio de explosión de un POST no autenticado se mide en comandos emitidos a instrumentos, no en páginas desfiguradas”.

El servidor web de AIT-GUI lee el valor de host configurado y luego lo descarta, vinculando el listener a la dirección fija 0.0.0.0 en el puerto 8080 por defecto, y expone cada ruta de cambio de estado sin autenticación, autorización ni protección contra CSRF. Dos de esas rutas también construyen rutas de sistema de archivos a partir de entradas no validadas. Los problemas se clasifican como CWE-306, CWE-352 y CWE-22.

Impacto y vectores de ataque

El aviso indica que una parte no autenticada que pueda alcanzar el puerto puede hacer lo siguiente: emitir comandos arbitrarios de instrumentos y naves espaciales a través de POST /cmd, ejecutar scripts en el servidor mediante POST /script/run (incluyendo archivos fuera del directorio previsto mediante path traversal), y ejecutar secuencias de comandos vía POST /seq (incluyendo archivos fuera del directorio pasados a un subproceso).

“Una interfaz web usada para manejar comandos de naves espaciales e instrumentos se envió con un servidor que escucha en cada interfaz de red, no pide contraseña a nadie, y puede ser dirigida por cualquier página web que un operador abra”. – Yuval Elbar, investigador de seguridad en Cycode

Debido a que las rutas aceptan cuerpos de tipo application/x-www-form-urlencoded, que los navegadores tratan como solicitudes “simples” CORS, el aviso señala que un POST de origen cruzado llega sin preflight, por lo que una implementación local o detrás de firewall sigue siendo explotable si un operador con acceso al navegador visita una página controlada por el atacante.

Corrección y discrepancias

AIT-GUI 2.5.2, lanzado el 12 de agosto de 2026, vincula el host configurado (por defecto localhost), añade un hook before_request que compara el Origin o Referer de la solicitud con el Host del propio servidor para métodos POST, PUT, DELETE y PATCH, y restringe /script/run y /seq a sus raíces configuradas. El proyecto indicó en el changelog: “Los endpoints de cambio de estado (POST/PUT/DELETE/PATCH) ahora rechazan solicitudes de navegador de origen cruzado mediante una verificación de mismo origen (Origin/Referer vs Host), mitigando CSRF. Los clientes no navegador que no envían ni una ni otra cabecera no se ven afectados”.

Tras revisar el aviso, The Hacker News examinó el código fuente etiquetado para las versiones 2.4.1, 2.5.1 y 2.5.2. En 2.5.2, la ruta raíz aún llama a Sessions.create() y emite una cookie de sesión a cualquier solicitud sin comprobación de credenciales, y la ruta de comando acepta cualquier solicitud que lleve esa cookie. Además, se confirmó que la versión 2.5.2 restringe dónde escucha la consola y bloquea solicitudes de origen cruzado dirigidas por navegador, pero no añade autenticación a los endpoints de comando, script o secuencia.

También se confirmó vía PyPI que la última versión publicada del paquete ait-gui es la 2.4.1, subida el 27 de julio de 2023, y que las versiones 2.5.0, 2.5.1 y 2.5.2 no aparecen en el historial de publicaciones. El código fuente de 2.4.1 presenta el mismo enlace fijo 0.0.0.0 y la misma construcción de rutas sin restricción en ambas rutas, y PyPI no lista vulnerabilidades para ella. El aviso identifica el ecosistema de paquetes afectado como pip.

Otros registros y contexto

Por separado, un segundo registro cubre el mismo defecto de falta de autenticación en el mismo archivo. CVE-2026-60112, con una puntuación de 9.3 en CVSS v4 y atribuido a Saidakbarxon Maxsudxonov, fue publicado en la National Vulnerability Database y en la GitHub Advisory Database el 29 de julio de 2026, tres semanas antes del informe de Cycode. VulnCheck describió: “AMMOS Instrument Toolkit (AIT) GUI anterior a 2.5.1 contiene una vulnerabilidad de autenticación faltante que permite a cualquier atacante de red no autenticado obtener una sesión válida y emitir comandos arbitrarios a la nave espacial llamando a Sessions.create() sin comprobación de credenciales”.

Los dos registros difieren sobre la corrección. VulnCheck y la NVD sitúan el fallo en versiones anteriores a 2.5.1 y citan el commit beb8fc0 como parche, pero el aviso de Cycode lista 2.5.1 como afectada y 2.5.2 como la versión corregida. El repositorio muestra la emisión de sesión no autenticada presente tanto en 2.5.1 como en 2.5.2.

Un elemento del alcance del aviso de Cycode no se cumple para la versión que menciona. El aviso afirma que los hallazgos se verificaron en la versión 2.5.1 y en master, pero The Hacker News encontró que el código fuente etiquetado de 2.5.1 ya confina scriptPath en /script/run mediante la canonicalización y comprobación de contención que el aviso recomienda. La construcción de rutas sin restricción en 2.5.1 está en /seq.

GHSA-p9r8-2q67-fp86 no aparece en la base de datos global de GitHub, y CVE-2026-60112 está listado allí como sin revisar, sin paquete, sin rango de versiones afectadas y sin soporte de Dependabot. Ninguno de los dos registros se refleja en los datos de vulnerabilidad de PyPI para el paquete.

Elbar fue el autor del commit que contiene la corrección el 10 de julio de 2026, e incluye un Co-Authored-By atribuyendo al modelo Claude Opus 4.8 de Anthropic. Añade 18 pruebas de regresión, y su mensaje indica que fallan en el código previo al parche y pasan después. “Este bug fue encontrado de la manera que creemos que se hará la mayoría de la investigación real de aquí en adelante: un investigador humano trabajando junto con análisis de código asistido por IA”, dijeron desde Cycode.

Ninguna de las dos registros menciona una misión que ejecute el software, ni reportan explotación. La GitHub Advisory Database contiene varios otros registros sin revisar para software de tierra de NASA, incluyendo CVE-2026-47731, descrito como un path traversal en el AMMOS Instrument Toolkit que resulta en appending arbitrario de archivos que puede desencadenarse a través de la red, y registros críticos para el servidor de secuenciación NASA-AMMOS Aerie/PlanDev (CVE-2026-71214) y para la implementación de referencia del Sistema de Gestión de Red Asíncrona (CVE-2026-71289).

Las librerías núcleo del toolkit tienen una entrada más antigua sin resolver. CVE-2024-35058, una vulnerabilidad crítica de ejecución remota de código en la función de espera de API de NASA AIT-Core, fue publicada en mayo de 2024, afecta a versiones hasta 2.5.2 inclusive, y su registro en la GitHub Advisory Database aún no lista versiones parcheadas.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *