Дупка в софтуер на NASA: команди без оторизация

Компанията за сигурност Cycode оповести на 18 август критична поредица от слабости в AIT-GUI — браузърната операторска конзола на инструментариума AMMOS на NASA. Неавтентикиран атакуващ е можел да изпраща команди към космически апарати и научни инструменти, да пуска скриптове от страна на сървъра и да изпълнява командни последователности. Уязвимостта се води под GHSA-p9r8-2q67-fp86 с оценка 9.4 по CVSS 3.1 и засяга всички версии до 2.5.1 включително. Кръпката излезе във версия 2.5.2 на 12 август.
Какво е AIT-GUI
AMMOS Instrument Toolkit е open source рамка на NASA и Лабораторията за реактивно движение (JPL), с която екипите изграждат наземни системи за данни. През нея се изпращат командите нагоре и се обработва телеметрията, която се връща обратно. AIT-GUI е уеб интерфейсът към тази рамка — това, което операторът вижда в браузъра си.
Тоест говорим не за сайта на агенцията, а за конзолата, която стои между човека и командната шина на апарата.
Четири слабости, събрани в една верига
Cycode описва проблема като композиция от няколко грешки, всяка от които поотделно изглежда битова:
- Игнориран
hostв конфигурацията. Сървърът прочита зададения адрес и после мълчаливо го изхвърля, като се закача твърдо на0.0.0.0— тоест на всички мрежови интерфейси, порт 8080 по подразбиране. Администратор, който е написалlocalhost, е получавал точно обратното. - Липса на автентикация и оторизация (CWE-306). Нито един от маршрутите, които променят състояние, не е изисквал вход в системата. Сесийна бисквитка се е получавала с обикновено
GET /към началната страница. - Няма CSRF защита (CWE-352). Заявките са приемани като form-encoded, което ги прави „прости” за CORS и минава без preflight.
- Path traversal (CWE-22). Маршрутите
/seqи/script/runса градили пътища във файловата система от непроверен вход.
Демонстрацията на изследователите се събира в един ред:
curl -X POST http://TARGET:8080/cmd --data-urlencode 'command=NO_OP 1 2 3'
Защо firewall не е бил достатъчен
Най-неприятната част е втората атака. Липсата на CSRF защита означава, че не е нужен пряк мрежов достъп до сървъра. Достатъчно е операторът, който има отворена конзолата, да посети зловреден сайт — формата в страницата изпраща заявката от неговия браузър, от неговата машина, вътре в защитения периметър.
Така дори инсталация, вързана само локално или зад firewall, е оставала достижима. Уязвимостта е открита от Yuval Elbar от Cycode чрез анализ на кода с помощта на AI и последваща човешка проверка.
Цитатът от техническия разбор на Cycode обобщава залога добре: обхватът на поражението при неавтентикиран POST тук се мери в изпратени команди към инструменти, а не в обезобразени страници.
Снимка: NASA/JPL-Caltech
Какво поправя 2.5.2 и какво остава
Според публикацията на Infosecurity Magazine JPL е потвърдила и отстранила проблема. Новата версия:
- закача сървъра на реално конфигурирания хост, по подразбиране localhost;
- добавя проверка за същия произход при заявките, които променят състояние;
- ограничава
/script/runи/seqдо техните конфигурирани директории.
Cycode обаче определя корекцията като частична. Слабостта CWE-306 остава: крайните точки продължават да приемат всяка валидна сесийна бисквитка, без да искат креденшъли. Отстранено е далечното изложение и CSRF векторът, но не и същинската липса на автентикация.
Има и объркваща подробност около разпространението — в PyPI последната публикувана версия си остава 2.4.1 от юли 2023 г., а 2.5.0–2.5.2 съществуват само като тагове в GitHub. Ако обновявате, вземете кода от хранилището, не от пакетния индекс.
Отделно, в края на юли беше публикувана CVE-2026-60112 с оценка 9.3 по CVSS 4 в същия периметър, открита от Saidakbarxon Maxsudxonov.
Ако поддържате инсталация на AIT-GUI, освен ъпгрейда прегледайте историята на изпълнените команди и последователности за необяснима активност. Публична експлоатация не е засичана, но проверката е евтина.
Контекст
Случаят е поредното напомняне, че наследеният оперативен софтуер често е писан за затворена мрежа и никога не е преразглеждан, след като тази мрежа е спряла да бъде затворена. Същата седмица видяхме пет уязвимости с максималната оценка 10 в мрежовия софтуер на Cisco, а дни по-рано — критична дупка в GitLab, експлоатирана 48 часа след кръпката.
Разликата тук е в мащаба на последствията. Няма публично посочени мисии и няма данни за реални атаки, но самата възможност неавтентикиран POST да стигне до командната шина на инструмент показва колко тънка е била преградата. Ъпгрейдът до 2.5.2 е задължителен минимум, не финал — докато автентикацията не се появи, конзолата не бива да е достъпна от нищо, на което не се доверявате напълно.
Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.
Предпочитан източник в Google