Исследователи безопасности из компании Cycode раскрыли цепочку уязвимостей в AIT-GUI — браузерной операторской консоли для открытого фреймворка AMMOS Instrument Toolkit (NASA/JPL), предназначенного для построения наземных систем управления космическими аппаратами и инструментами. Цепочка, отслеживаемая как GHSA-p9r8-2q67-fp86 с оценкой 9.4 по CVSS v3.1, позволяет неаутентифицированному атакующему отправлять произвольные команды на командную шину программного обеспечения. Затронуты версии 2.5.1 и более ранние; исправление заявлено в версии 2.5.2, однако анализ исходного кода показывает, что аутентификация на ключевых эндпоинтах по-прежнему отсутствует. Случаев эксплуатации в реальных условиях на данный момент не зафиксировано.
Техническая суть уязвимостей
По данным исследователей, веб-сервер AIT-GUI считывает настроенное значение хоста, но затем игнорирует его, привязывая слушатель к жёстко заданному адресу 0.0.0.0 на порту 8080. Это означает, что сервер принимает соединения со всех сетевых интерфейсов. При этом все маршруты, изменяющие состояние системы, доступны без аутентификации, авторизации и защиты от межсайтовой подделки запросов (CSRF).
Уязвимости классифицированы по трём категориям CWE:
- CWE-306 — отсутствие аутентификации для критических функций
- CWE-352 — межсайтовая подделка запросов
- CWE-22 — обход пути (path traversal)
Неаутентифицированный атакующий, имеющий сетевой доступ к порту, может:
- Отправлять произвольные команды инструментам и космическим аппаратам через
POST /cmd - Запускать серверные скрипты через
POST /script/run, включая файлы за пределами разрешённой директории посредством обхода пути - Выполнять командные последовательности через
POST /seq, передавая в подпроцесс файлы из произвольных каталогов
Особую опасность представляет вектор атаки через CSRF. Поскольку маршруты принимают тела запросов в формате application/x-www-form-urlencoded, браузеры рассматривают их как «простые» запросы CORS и отправляют без предварительного запроса OPTIONS. Как сообщают исследователи, если оператор, имеющий доступ к консоли, откроет в браузере страницу, контролируемую атакующим, межсайтовый POST-запрос будет доставлен и обработан сервером — даже при развёртывании за межсетевым экраном.
Неполнота исправления в версии 2.5.2
Версия AIT-GUI 2.5.2 была выпущена 12 августа 2026 года. Согласно журналу изменений, в ней реализованы три ключевых улучшения:
- Привязка к настроенному хосту (по умолчанию — localhost вместо 0.0.0.0)
- Проверка Origin/Referer относительно Host для запросов POST, PUT, DELETE и PATCH для защиты от CSRF
- Ограничение маршрутов
/script/runи/seqнастроенными корневыми директориями
Однако анализ исходного кода версии 2.5.2 показал, что аутентификация на эндпоинтах команд, скриптов и последовательностей не добавлена. Корневой маршрут по-прежнему вызывает Sessions.create() и выдаёт сессионную cookie любому запросу без проверки учётных данных, а командный маршрут принимает любой запрос с этой cookie. Таким образом, исправление снижает поверхность атаки, но не устраняет фундаментальную проблему отсутствия аутентификации.
Конфликт между записями об уязвимостях
Ситуацию усложняет наличие параллельной записи об уязвимости. CVE-2026-60112, оценённая в 9.3 по CVSS v4 и опубликованная 29 июля 2026 года — за три недели до отчёта Cycode — описывает тот же дефект отсутствия аутентификации. Однако записи расходятся в определении затронутых версий: VulnCheck и запись NVD указывают, что уязвимость затрагивает версии до 2.5.1 и ссылаются на коммит beb8fc0 как на патч, тогда как Cycode считает 2.5.1 уязвимой и называет 2.5.2 исправленной версией. При этом анализ исходного кода обеих версий показывает, что неаутентифицированная выдача сессий присутствует и в 2.5.1, и в 2.5.2.
Дополнительно, часть заявленного объёма уязвимости в отчёте Cycode может быть преувеличена: анализ исходного кода версии 2.5.1 показал, что маршрут /script/run уже содержит канонизацию и проверку вложенности пути, которые рекомендует сам отчёт. Неограниченная конструкция пути в 2.5.1 присутствует только на маршруте /seq.
Проблема распространения через PyPI
Критически важный аспект: последняя версия пакета ait-gui на PyPI — это 2.4.1, загруженная 27 июля 2023 года. Версии 2.5.0, 2.5.1 и 2.5.2 отсутствуют в истории релизов PyPI. Это означает, что пользователи, устанавливающие пакет через pip, получают версию с жёстко заданной привязкой к 0.0.0.0 и неограниченной конструкцией путей на обоих маршрутах. При этом PyPI не отображает информацию об уязвимостях для этого пакета, а ни одна из записей об уязвимостях не интегрирована в систему Dependabot.
Более широкий контекст безопасности наземного ПО NASA
AIT-GUI — не единственный компонент наземного программного обеспечения NASA с нерешёнными проблемами безопасности. В базе данных GitHub Advisory содержатся записи о нескольких уязвимостях в смежных проектах, включая обход пути в AMMOS Instrument Toolkit (CVE-2026-47731), критические уязвимости в сервере секвенирования NASA-AMMOS Aerie/PlanDev (CVE-2026-71214) и в эталонной реализации Asynchronous Network Management System (CVE-2026-71289).
Отдельного внимания заслуживает CVE-2024-35058 — критическая уязвимость удалённого выполнения кода в функции API wait библиотеки NASA AIT-Core, опубликованная в мае 2024 года. Она затрагивает версии вплоть до 2.5.2 включительно, и в её записи в GitHub Advisory Database до сих пор указано отсутствие исправленных версий.
Рекомендации
Организациям, использующим AIT-GUI, следует предпринять следующие шаги:
- Немедленно проверить, доступен ли порт 8080 AIT-GUI из недоверенных сетей, и ограничить доступ средствами сетевой сегментации
- Обновиться до версии 2.5.2 из репозитория GitHub (не через PyPI, где актуальная версия недоступна), учитывая, что это снижает, но не устраняет риск
- Разместить перед AIT-GUI обратный прокси-сервер с полноценной аутентификацией, поскольку сам сервер не реализует проверку учётных данных
- Ограничить доступ операторов консоли к внешним веб-ресурсам для минимизации риска CSRF-атак
- Провести аудит развёрнутых экземпляров AIT-Core на предмет CVE-2024-35058, для которой патч отсутствует
Ситуация с AIT-GUI демонстрирует системную проблему: программное обеспечение для управления критической космической инфраструктурой, изначально разработанное для изолированных сред, оказывается уязвимым при изменении модели развёртывания. Расхождения между записями об уязвимостях, отсутствие актуальных версий в PyPI и неполнота патча в 2.5.2 означают, что единственной надёжной мерой защиты на данный момент остаётся размещение внешнего слоя аутентификации перед всеми экземплярами AIT-GUI, независимо от установленной версии.