
Összefoglaló
2023 végén biztonsági kutatók felfedeztek egy kritikus, láncolt sebezhetőséget, amely a Cisco IOS XE webes felhasználói felületét érinti, és amely lehetővé teszi a nem hitelesített támadók számára, hogy teljes irányítást szerezzenek az érintett eszközök felett. A támadási lánc két biztonsági sebezhetőséget - CVE-2023-20198 és CVE-2023-20273 - kombinál, amelyek együttes kihasználása root szintű parancsfuttatáshoz vezet az IOS XE-t futtató Linux-állomáson. Ez lehetővé teszi a teljes eszközátvételt, a tartós hozzáférést és a lehetséges oldalirányú mozgást a vállalati hálózatokon keresztül.
- CVE-2023-20198: A Cisco IOS XE Software 16.0.x és 17.9.x közötti verzióiban jelen lévő sebezhetőség lehetővé teszi a nem hitelesített támadók számára a kezdeti hozzáférés megszerzését és 15. jogosultsági szintű (rendszergazda) fiók létrehozását a webes felhasználói felületen keresztül. A létrehozást követően a támadó bármilyen rendszergazdai műveletet végezhet az eszközön, ami súlyos biztonsági kockázatot jelent.

- CVE-2023-20273: szintű jogosultságokkal rendelkező hitelesített felhasználóknak lehetővé teszi, hogy tetszőleges parancsokat futtassanak root jogosultságokkal az alapul szolgáló Linux operációs rendszeren a szoftverkezelő komponensben található parancsinjekciós hibán keresztül.

Az OPSWAT ösztöndíjprogram során ösztöndíjasaink, Hoa X.Nguyen és Nhan Nguyen, mélyreható technikai elemzést végeztek erről a támadási láncról. Kutatásunk során reprodukáltuk a sebezhetőségeket egy IOS XE 17.01-et futtató Cisco Catalyst 9300-24T-E switch-en, bemutatva, hogy a hibák hogyan láncolhatók össze a rendszer teljes kompromittálásának eléréséhez valós körülmények között.
Háttér
Cisco IOS XE áttekintés

A Cisco IOS XE egy modern, moduláris hálózati operációs rendszer, amely a Cisco számos vállalati platformjának - köztük útválasztóknak, kapcsolóknak és vezeték nélküli vezérlőknek - az alapját képezi. Egyesíti a klasszikus Cisco IOS gazdag funkcionalitását egy biztonságosabb, programozhatóbb és Linux-alapú architektúrával, így a hálózati rendszergazdák számára rugalmasságot és jobb teljesítményt biztosít.
Az IOS XE alapvetően egy Linux operációs rendszerként fut, amely az IOSd (IOS Daemon) nevű főfolyamatnak ad otthont. Ez a démon kezeli a hagyományos hálózati feladatokat, például az útválasztást, a CLI-kezelést és a konfigurációvezérlést. Az IOS XE 17.01-ben az IOSd bináris állománya a /usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms címen található.
A korábbi Cisco rendszerekkel ellentétben az SSH-n keresztül csatlakozó IOS XE-felhasználók nem a Linux-környezetben, hanem egy korlátozott IOSd alrendszer héjában helyezkednek el. Ez a kialakítás elszigeteli az operációs rendszer valódi root-szintű hozzáférését, jelentősen megerősítve a felhasználói interakciók és a gazdakernel közötti általános biztonsági határt.
Cisco jogosultsági szintek
A Cisco-eszközök hierarchikus jogosultsági modellt alkalmaznak a felhasználói jogosultságok ellenőrzésére:
- 0. szint - Nulla szintű hozzáférés: Ez a legkorlátozottabb szint. Általában csak korlátozott számú alapvető parancsot engedélyez, mint például a kijelentkezés, engedélyezés, letiltás, súgó és kilépés.
- 1. szint - User EXEC üzemmód: Alapértelmezett hozzáférés a standard bejelentkezésekhez, amely lehetővé teszi a rendszer alapvető megtekintését, de nem változtathatja meg a konfigurációt.
- 15. szint - Privileged EXEC mód: Ez a legmagasabb jogosultsági szint, amely teljes ellenőrzést biztosít az eszköz felett. Az ezen a szinten lévő felhasználók minden parancsot végre tudnak hajtani, beleértve a konfigurációs parancsokat is, és újra tudják tölteni az eszközt.
A középszintek (2-14) testre szabhatók, hogy bizonyos jogosultságokat adjanak. A jogosultságok öröklődnek, ami azt jelenti, hogy a magasabb szintek felhasználói automatikusan rendelkeznek az alacsonyabb szintek jogaival.
Cisco webes felhasználói felület architektúra
A Cisco IOS XE webes felhasználói felület böngészőalapú felületet biztosít az eszközök kezeléséhez és felügyeletéhez - konfigurációs és diagnosztikai funkciókat kínál parancssori hozzáférés nélkül.A webes felhasználói felület belsőleg az NGINX-et használja middleware proxy-ként a felhasználói kérések különböző belső szolgáltatásokhoz, köztük a Web Services Management Agent (WSMA) felé történő továbbításához.
A WSMA komponens kommunikációs hídként szolgál a webes felhasználói felület és az alapul szolgáló IOSd démon között, és a webes alapú műveleteket megfelelő IOS XE konfigurációs parancsokká fordítja.

A hozzáférés-szabályozás érvényesítése érdekében minden egyes kérés SOAP-alapú hitelesítésnek és jogosultság-ellenőrzésnek van alávetve egy külön HTTP-fejléc (Priv-Level) segítségével, biztosítva, hogy csak az engedélyezett felhasználók végezzenek jogos műveleteket.

Technikai elemzés
CVE-2023-20198 - Hitelesítés megkerülése és jogosultságok megnövekedése
Munkatársaink felfedezték, hogy a sebezhetőség a Cisco IOS XE webes felhasználói felület HTTP végpontjában gyökerezik. A bejövő kérések feldolgozása során a Web UI a parancsokat és a hozzájuk tartozó felhasználói engedélyeket egy belső végpontra (/lua5) továbbítja, amelyeket az NGINX a protokolltól függően két WSMA kezelő - /webui_wsma_http vagy /webui_wsma_https - egyikéhez továbbít.


Az IOSd bináris statikus elemzése egy olyan NGINX konfigurációt is feltár, amely tartalmaz egy alapértelmezett fallback kezelőt:

A sebezhetőség abból ered, ahogyan az NGINX és az IOSd kezeli az URL-kódolást. Mindkét komponens egymástól függetlenül dekódolja az URL-útvonalakat, így a támadó kihasználhatja a kettős kódolás megkerülését.
Például, ha a /webui_wsma_https-t /%2577ebui_wsma_https-ként küldik, az NGINX egyetlen dekódolást végez, és a /%77ebui_wsma_https-tlátja (ami nem felel meg közvetlenül a védett belső útvonalnak), így a kérést egy kevésbé korlátozó visszaeső kezelőn keresztül küldi el. Amikor a kérés eléri az IOSd backendjét, az IOSd egy második dekódolást végez, és az útvonalat /webui_wsma_https-re oldja fel.

Mivel az NGINX ezt a rosszul formázott kérést kezdetben az alapértelmezett kezelőjével továbbítja, nem tudja érvényesíteni a normál hitelesítési és hozzáférés-ellenőrzési logikát. Ennek eredményeképpen a támadó hamisított Priv-Level fejlécet tud beilleszteni, és rendszergazdai szintű (15) jogosultságokat rendelhet magához. Egy új felhasználó létrehozására vonatkozó parancsot tartalmazó SOAP XML hasznos teherrel kombinálva ez egy magas jogosultságú helyi fiók csendes létrehozását eredményezi.

Ez a kihasználás nem igényel előzetes hitelesítést, és a támadó a webes felhasználói felületen keresztül teljes konfigurációs ellenőrzést biztosít az eszköz felett - létrehozva a támadási lánc első szakaszát.
CVE-2023-20273 - Parancsbevitel a Software
Az újonnan létrehozott rendszergazdai fiókkal történő hitelesítés után a támadó kihasználhatja a CVE-2023-20273-as biztonsági rést, amely a szoftverkezelő komponensben (/webui/rest/softwareMgmt/*) található parancsinjekciós sebezhetőség. Ezt a végpontot a legitim rendszergazdáknak szánták, hogy szoftvercsomagokat telepítsenek vagy frissítsenek az eszközön.
A hiba a validateSmuRequest(req) függvény bemeneti érvényesítési logikájából ered, amely a validator.validateIPv4IPv6HostNameAddress(req.ipaddress) függvényt hívja a kérelemben megadott IP-cím ellenőrzésére. Ez az érvényesítési lépés azt hivatott biztosítani, hogy a megadott cím helyesen van formázva és biztonságosan használható.
A validateIPv4IPv6HostNameAddress-en belül az érvényesítés az utils.isIPv6Address(ip) segédrutinra támaszkodik az IPv6 szintaxis megfelelőségének értékeléséhez. Ez a függvény úgy próbálja elemezni a bemenetet, hogy kettőspontokon (:) osztja azt, és minden egyes szegmenst egy reguláris kifejezéssel értékel, amelynek célja az érvénytelen hexadecimális minták vagy a tartományon kívüli értékek elutasítása. A megvalósítás hibája ebben a reguláris kifejezésben rejlik: a túlságosan megengedő * kvantor miatt bármilyen bemeneti adatra megfelel, így a rosszul formált vagy rosszindulatú értékek ellenőrzés nélkül átmehetnek az érvényesítésen.

Következésképpen a támadó által ellenőrzött adatokat érvényesnek fogadják el, és a későbbi logikába áramlanak, ahol felhasználják a parancsszerkesztésben. A nem megbízható IP-címértéket végül a runPexecCommand() függvényben használják fel a TFTP-kérést kezdeményező rendszerparancs felépítésére. Mivel ez a művelet bemenet-érvényesítés vagy menekítés nélkül történik, a támadó tetszőleges parancsokat juttathat be a folyamatba, ami a parancs fokozott jogosultságokkal történő végrehajtásához és a Cisco eszköz teljes kompromittálásához vezet.

A koncepció bizonyítása (Proof of Concept - PoC)
Az OPSWAT során Hoa X. Nguyen és Nhan Nguyen ösztöndíjasaink egy ellenőrzött, levegővel elzárt laboratóriumban reprodukálták a láncolt exploitot egy IOS XE 17.01-et futtató Cisco Catalyst 9300-24T-E-n. A kihasználási folyamat a következő szakaszokban foglalható össze:

- Kétszeresen kódolt kérés: speciálisan kialakított POST küldése egy kétszeresen kódolt belső elérési útvonalra (pl. /%2577ebui_wsma_https), amely a proxy fallbacken keresztül kerül továbbításra, és hamisított Priv-Level fejlécet és számlanyitási SOAP hasznos terhet tartalmaz.
- Admin munkamenet megszerzése: jelentkezzen be a létrehozott fiókkal, és gyűjtse be a munkamenet/CSRF tokeneket.
- Hasznos teher feltöltése: a webes felhasználói felület feltöltésével helyezze el a támadó_shell.sh fájlt az eszközön (csak rendszergazdai művelet).
- Végrehajtás SMU-n keresztül: küldjön SMU-kérelmet egy manipulált ip-címmel (pl, 100:100:100:100:$(/bin/sh /bootflash/attacker_shell.sh))); az érvényesítés megkerülésre kerül, és a feltöltött szkript root-ként végrehajtódik.

Helyreállítás
A Cisco kiadta a Cisco IOS XE Software javított verzióit, amelyek mind a CVE-2023-20198, mind a CVE-2023-20273 CVE-2023-20273 kódot tartalmazzák. A 16.0.x és 17.9.x közötti érintett kiadásokat üzemeltető szervezeteknek azonnal frissíteniük kell a Cisco hivatalos biztonsági közleményében ismertetett legújabb javított verzióra. A frissítések alkalmazása hatékonyan megszünteti az alapul szolgáló sebezhetőségeket, és megakadályozza a jogosulatlan jogosultságnövelést vagy parancsbevitelt a webes felhasználói felületen keresztül.
Azokban a környezetekben, ahol az azonnali frissítés nem lehetséges, a rendszergazdáknak korlátozniuk vagy letiltaniuk kell a webes felhasználói felület nem megbízható hálózatokról történő elérését, szigorú hitelesítési ellenőrzéseket kell alkalmazniuk a felügyeleti felületek esetében, és folyamatosan figyelniük kell a rendszer szokatlan viselkedését, például a jogosulatlan fiókok létrehozását vagy a rendellenes konfigurációs módosításokat.
Az általános kiberbiztonság megerősítése érdekében a szervezetek kiegészíthetik a szállítói foltozást az OPSWAT MetaDefender Platformjával, amely egy olyan egységes biztonsági keretrendszer, amelyet a kritikus infrastruktúra védelmére terveztek a fájlok, eszközök és adatfolyamok fenyegetéseinek észlelése és megelőzése révén. A MetaDefender integrálása a hálózati és üzemeltetési munkafolyamatokba növeli a láthatóságot, mélyebb fenyegetésvizsgálatot biztosít, és további védelmet nyújt az irányítási rendszereket célzó potenciális kihasználási kísérletekkel szemben.
Az időben történő Cisco-frissítések, a robusztus hozzáférés-ellenőrzés és a MetaDefender Platform által támogatott többszintű védelmi stratégia kombinálásával a szervezetek jelentősen csökkenthetik a hasonló exploit-láncoknak való kitettséget, és erősebb, ellenállóbb biztonsági pozíciót tarthatnak fenn.
