Изследователи по сигурността от Cycode разкриха верига от уязвимости в AIT-GUI – базираната на браузър операторска конзола за инструментариума с отворен код AMMOS Instrument Toolkit на NASA/JPL. Тези пропуски позволяват на неудостоверен атакуващ да изпраща произволни команди към шината за управление на космическия апарат и неговите инструменти.

Веригата, проследявана като GHSA-p9r8-2q67-fp86 и оценена с 9.4 по системата за оценка CVSS v3.1, засяга версии на AIT-GUI 2.5.1 и по-ранни, като е коригирана във версия 2.5.2. В консултативния доклад, публикуван на 13 август 2026 г., се посочва, че не е назначен CVE идентификатор.

AMMOS Instrument Toolkit е рамка за изграждане на наземни системи за данни – софтуерът, който изпраща команди към инструменти и космически апарати и обработва връщащата се телеметрия. AIT-GUI е неговата операторска конзола, а въпросните крайни точки препредават операторските команди към командната шина.

„Обхватът на въздействие на неудостовено POST извикване се измерва в изпратени команди към инструментите, а не в компрометирани уеб страници“, споделят от Cycode в своя доклад.

Според информацията уеб сървърът на AIT-GUI прочита конфигурираната стойност на хоста и след това я отхвърля, като по подразбиране обвързва слушащия порт към твърдо кодирания адрес 0.0.0.0 на порт 8080. Също така той излага всеки маршрут, променящ състоянието, без никаква автентификация, оторизация или защита срещу фалшифициране на заявки от друга страна (CSRF).

Два от тези маршрути освен това изграждат пътища във файловата система въз основа на невалидирани входни данни. Проблемите са класифицирани като CWE-306, CWE-352 и CWE-22.

В доклада се посочва, че неудостоверена страна, която има достъп до порта, може да извърши следното:

  • Да изпраща произволни команди към инструментите и космическия апарат чрез POST /cmd
  • Да изпълнява скриптове от страна на сървъра чрез POST /script/run, включително файлове извън предвидената директория чрез преминаване по пътя (path traversal)
  • Да изпълнява командни последователности чрез POST /seq, включително файлове извън директорията, предадени на подпроцес

„Уеб GUI, използван за управление на космически апарати и инструменти, се доставя със сървър, който слуша на всеки мрежов интерфейс, не изисква парола от никого и може да бъде управляван от всяка уеб страница, която операторът случайно отвори“, заявява Ювал Елбар, изследовател по сигурността в Cycode.

Тъй като маршрутите приемат заявки с тяло application/x-www-form-urlencoded, които браузърите третират като „прости“ CORS заявки, крос-домейн POST заявка достига до тях без предварителна проверка (preflight). Поради това локални или защитени с защитна стена инсталации остават уязвими, ако оператор с достъп до конзолата през браузъра си посети страница, контролирана от атакуващ.

„Прихванат мрежов трафик от реален браузър потвърждава, че крос-домейн POST заявката се доставя без никакви предварителни OPTIONS заявки и сървърът я обработва“, се отбелязва в доклада.

Версията AIT-GUI 2.5.2 беше пусната на 12 август 2026 г. Тя обвързва конфигурирания хост (по подразбиране localhost), добавя кука before_request, която сравнява заглавните части Origin или Referer на заявката с Host на самия сървър за POST, PUT, DELETE и PATCH заявки, и ограничава маршрутите /script/run и /seq до техните конфигурирани коренови директории.

„Крайните точки, променящи състоянието (POST/PUT/DELETE/PATCH), вече отхвърлят крос-домейн заявки от браузъри чрез проверка за съвпадение на произхода (Origin/Referer спрямо Host), смекчавайки CSRF рисковете. Клиенти, които не са браузъри и не изпращат нито едно от двете заглавия, не са засегнати“, се посочва в списъка с промени на проекта за версия 2.5.2.

След преглед на доклада медията The Hacker News анализира изходния код за версии 2.4.1, 2.5.1 и 2.5.2 в хранилището на проекта. Във версия 2.5.2 кореновият маршрут все още извиква Sessions.create() и издава сесийна бисквитка на всяка заявка без проверка на идентификационните данни, а командният маршрут приема всяка заявка, носеща тази бисквитка.

На 20 август 2026 г. THN потвърди спрямо кода на версия 2.5.2, че това издание ограничава интерфейсите, на които конзолата слуша, и блокира крос-домейн заявки от браузъри, но не добавя автентификация към крайните точки за команди, скриптове или последователности.

Беше потвърдено и чрез PyPI на 20 август 2026 г., че последната публикувана версия на пакета ait-gui е 2.4.1, качена на 27 юли 2023 г., а версии 2.5.0, 2.5.1 и 2.5.2 не фигурират в историята на изданията там. Изходният код на 2.4.1 съдържа същото твърдо кодирано обвързване към 0.0.0.0 и същото неограничено изграждане на пътища за двата маршрута, а в PyPI няма регистрирани уязвимости за него. Докладът посочва екосистемата на пакета като pip.

Отделно от това, втори запис покрива същия дефект с липсваща автентификация в същия файл. CVE-2026-60112, оценен с 9.3 по CVSS v4 и приписан на Саидакбархон Махсудхонов, беше публикуван в Националната база данни за уязвимости (NVD) и GitHub Advisory Database на 29 юли 2026 г. – три седмици преди доклада на Cycode.

„AMMOS Instrument Toolkit (AIT) GUI преди версия 2.5.1 съдържа уязвимост, свързана с липсваща автентификация, която позволява на всеки неудостоверен мрежов атакуващ да получи валидна сесия и да изпраща произволни команди към космически апарати чрез извикване на Sessions.create() без никаква проверка на идентификационните данни“, съобщават от VulnCheck в доклад, съдържащ описанието на CVE уязвимостта.

Двата записа се разминават по отношение на корекцията за сигурност. VulnCheck и NVD посочват, че уязвимостта е във версии преди 2.5.1 и посочват коммит beb8fc0 като корекция, но консултативният доклад на Cycode изброява версия 2.5.1 като засегната.