Beveiligingsonderzoekers bij Cycode hebben een reeks tekortkomingen onthuld in AIT-GUI, de browsergebaseerde operatorconsole voor NASA/JPL’s open-source AMMOS Instrument Toolkit, waarmee een niet-geverifieerde aanvaller willekeurige opdrachten kan geven aan het ruimtevaartuig en de instrumentopdrachtbus van de software.
De keten, gevolgd als GHSA-p9r8-2q67-fp86 en beoordeeld als 9.4 op het CVSS v3.1-scoresysteem, heeft invloed op AIT-GUI versies 2.5.1 en eerder en is verholpen in versie 2.5.2. In het advies, gepubliceerd op 13 augustus 2026, staat dat er geen CVE aan is toegewezen.
De AMMOS Instrument Toolkit is een raamwerk voor het bouwen van gronddatasystemen, de software die opdrachten naar instrumenten en ruimtevaartuigen verzendt en de telemetrie verwerkt die weer naar beneden komt. AIT-GUI is de operatorconsole en de betreffende eindpunten geven operatoropdrachten door aan een opdrachtbus.
“De straal van een niet-geverifieerde POST wordt gemeten in uitgegeven instrumentopdrachten, niet in onleesbare pagina’s”, aldus Cycode in het artikel.
Volgens het advies leest de AIT-GUI-webserver de geconfigureerde hostwaarde en gooit deze vervolgens weg, waardoor de luisteraar standaard wordt gebonden aan het hardgecodeerde adres 0.0.0.0 op poort 8080, en wordt elke statusveranderende route zichtbaar zonder authenticatie, zonder autorisatie en zonder bescherming tegen cross-site request forgery (CSRF).
Twee van deze routes bouwen ook bestandssysteempaden op basis van niet-gevalideerde invoer. De problemen zijn geclassificeerd als CWE-306, CWE-352 en CWE-22.
Het advies zei dat een niet-geauthenticeerde partij die de haven kan bereiken het volgende kan doen:
- Geef willekeurige instrument- en ruimtevaartuigopdrachten uit via POST /cmd
- Voer scripts aan de serverzijde uit via POST /script/run, inclusief bestanden buiten de beoogde map via het doorlopen van paden
- Voer opdrachtreeksen uit via POST /seq, inclusief bestanden buiten de map die aan een subproces worden doorgegeven
“Een web-GUI die wordt gebruikt om ruimtevaartuigen en instrumenten te besturen, heeft een server geleverd die op elke netwerkinterface luistert, niemand om een wachtwoord vraagt en kan worden bestuurd door elke webpagina die een operator toevallig opent”, zegt Yuval Elbar, een beveiligingsonderzoeker bij Cycode.
Omdat de routes application/x-www-form-urlencoded bodies accepteren, die browsers behandelen als ‘eenvoudige’ CORS-verzoeken, zegt het advies dat een cross-origin POST hen bereikt zonder preflight, zodat een host-local of firewalled implementatie misbruikbaar blijft als een operator met browsertoegang tot de console een pagina bezoekt die door een aanvaller wordt beheerd.
“Het vastgelegde netwerkverkeer van een echte browser bevestigt dat de cross-origin POST wordt afgeleverd zonder preflightverzoeken van OPTIONS, en dat de server het verwerkt”, aldus het advies.
AIT-GUI 2.5.2 werd uitgebracht op 12 augustus 2026. Het bindt de geconfigureerde host, standaard ingesteld op localhost, voegt een before_request hook toe die de Origin of Referer van een verzoek vergelijkt met de eigen Host van de server voor POST, PUT, DELETE en PATCH, en beperkt /script/run en /seq tot hun geconfigureerde roots.
“Statusveranderende eindpunten (POST/PUT/DELETE/PATCH) weigeren nu cross-origin browserverzoeken via een controle van dezelfde oorsprong (Origin/Referer vs Host), waardoor CSRF wordt beperkt. Niet-browserclients die geen van beide headers verzenden, worden hierdoor niet beïnvloed”, aldus het project in de changelog voor versie 2.5.2.
Na het advies te hebben bekeken, onderzocht The Hacker News de getagde bron voor versies 2.4.1, 2.5.1 en 2.5.2 in de repository van het project. In 2.5.2 roept de rootroute nog steeds Sessions.create() aan en geeft een sessiecookie uit voor elk verzoek zonder een verificatie van de inloggegevens, en de opdrachtroute accepteert elk verzoek dat dat cookie bevat.
THN bevestigde op 20 augustus 2026 tegen de getagde 2.5.2-bron dat de release beperkt waar de console luistert en browsergestuurde cross-origin-verzoeken blokkeert, en geen authenticatie toevoegt aan de opdracht-, script- of reekseindpunten.
We hebben ook via PyPI op 20 augustus 2026 bevestigd dat de laatst gepubliceerde release van het ait-gui-pakket 2.4.1 is, geüpload op 27 juli 2023, en dat versies 2.5.0, 2.5.1 en 2.5.2 niet voorkomen in de releasegeschiedenis. De 2.4.1-bron bevat dezelfde hardgecodeerde 0.0.0.0-binding en dezelfde onbeperkte padconstructie op beide routes, en PyPI vermeldt er geen kwetsbaarheden voor. Het advies identificeert het getroffen pakketecosysteem als pip.
Afzonderlijk dekt een tweede record hetzelfde ontbrekende authenticatiedefect in hetzelfde bestand. CVE-2026-60112, beoordeeld met een 9,3 op CVSS v4 en toegeschreven aan Saidakbarxon Maxsudxonov, werd op 29 juli 2026 gepubliceerd in de National Vulnerability Database en de GitHub Advisory Database, drie weken vóór het schrijven van Cycode.
“AMMOS Instrument Toolkit (AIT) GUI vóór 2.5.1 bevat een ontbrekende authenticatiekwetsbaarheid waarmee elke niet-geverifieerde netwerkaanvaller een geldige sessie kan verkrijgen en willekeurige ruimtevaartuigopdrachten kan geven door Sessions.create() aan te roepen zonder enige verificatie van de inloggegevens”, aldus VulnCheck in een advies met de CVE-beschrijving.
De twee records zijn het niet eens over de oplossing. VulnCheck en de NVD-invoer plaatsen de fout in versies vóór 2.5.1 en noemen commit beb8fc0 als de patch, maar het Cycode-advies vermeldt 2.5.1 als getroffen en 2.5.2 als de vaste release. De repository toont de niet-geverifieerde sessie-uitgifte die aanwezig is in zowel 2.5.1 als 2.5.2.
Eén element van de reikwijdte van het Cycode-advies geldt niet voor de release die het noemt. Het advies stelt dat de bevindingen zijn geverifieerd in release 2.5.1 en op master, en The Hacker News ontdekte dat de getagde 2.5.1-bron scriptPath al beperkt tot /script/run met behulp van de canonicalisatie- en containmentcontrole die het advies aanbeveelt. De onbeperkte padconstructie in 2.5.1 staat op /seq.
GHSA-p9r8-2q67-fp86 verschijnt niet in de wereldwijde adviesdatabase van GitHub, en CVE-2026-60112 wordt daar vermeld als niet-beoordeeld, zonder pakket, zonder getroffen versiebereik en zonder Dependabot-ondersteuning. Geen van beide records wordt weerspiegeld in de kwetsbaarheidsgegevens van PyPI voor het pakket.
Elbar schreef de commit met de oplossing op 10 juli 2026 en bevat een co-auteur van een trailer met de naam Anthropic’s Claude Opus 4.8-model. Het voegt 18 regressietests toe, en het bericht stelt dat ze falen op de prefixcode en daarna slagen.
“Deze bug werd gevonden op de manier waarvan we denken dat het meeste echte onderzoek vanaf nu zal worden gedaan: een menselijke onderzoeker die samenwerkt met AI-ondersteunde codeanalyse”, aldus Cycode in het artikel.
Geen van beide records noemt een missie die de software draait, en geen van beide rapporteert exploitatie. De GitHub Advisory Database bevat verschillende andere niet-beoordeelde records voor NASA-grondsoftware, waaronder CVE-2026-47731, beschreven als een padtraversal in de AMMOS Instrument Toolkit, resulterend in willekeurige bestandstoevoegingen die via het netwerk kunnen worden geactiveerd, en kritische records voor de NASA-AMMOS Aerie / PlanDev-sequencing-server (CVE-2026-71214) en de referentie-implementatie van het asynchrone netwerkbeheersysteem (CVE-2026-71289).
De kernbibliotheken van de toolkit bevatten een ouder, onopgelost item. CVE-2024-35058, een kritieke fout bij het uitvoeren van externe code in de API-wachtfunctie van NASA AIT-Core, werd in mei 2024 gepubliceerd en heeft betrekking op versies tot en met 2.5.2, en in het GitHub Advisory Database-record worden de gepatchte versies nog steeds vermeld als geen.