Az január végén felfedezett sérülékenység után, amely lehetővé tette a root felhasználóhoz való kapcsolódást jelszó ellenőrzés nélkül, a GNU InetUtils csomag telnetd szerverében több olyan módszert azonosítottak, amelyek lehetővé tették a jogosultságok emelését, ennek következményeként, hogy sem a 1999-es évben (CVE-1999-0073) a sérülékenységet nem sikerült teljesen megszüntetni.
A sérülékenységek a telnetd azon képességéből adódnak, hogy a kliens környezeti változókat adhat át a szervernek az ENVIRON opció segítségével. Az ilyen környezeti változók a telnetd folyamat kontextusában kerülnek beállításra és feldolgozásra, majd átkerülnek az általa indított gyermek folyamatokba, beleértve a root jogokkal indított /bin/login folyamatot. A CVE-1999-0073 sérülékenység lehetővé tette a telnet kliens számára, hogy átadja az LD_LIBRARY_PATH környezeti változót, amelynek beállítása a felhasználó által megadott megosztott könyvtár betöltéséhez vezetett a login folyamat indításakor. Ha a rendszer támogatja a fájlok betöltését telnet protokollon keresztül, a támadó képes lett volna speciálisan elkészített könyvtár betöltésére és annak root jogokkal való betöltésére.
A GNU InetUtils telnetd sérülékenységét a veszélyes környezeti változók, mint például a „LD_”, „LIBPATH”, „ENV”, „IFS” és „_RLD_” szűrésével sikerült megszüntetni. Ugyanakkor a „CREDENTIALS_DIRECTORY” környezeti változó, amely a /usr/bin/login indításakor kerül feldolgozásra, nem lett letiltva. Ezen környezeti változó segítségével a felhasználó módosíthatta a hitelesítési beállításokat tartalmazó könyvtárat, és elhelyezhetett egy login.noauth fájlt az új könyvtárban, amelynek értéke „yes”, így lehetővé téve a belépést jelszó nélkül (ez hasonló a login folyamat számára megadott „-f” zászlóhoz). A beállítás minden felhasználóra vonatkozik, beleértve a root-ot is.
A támadás lényege, hogy a nem privilegizált felhasználó egy almappát hoz létre a saját otthoni könyvtárában, fájlt tölt fel login.noauth néven, majd kísérletet tesz a belépésre az „CREDENTIALS_DIRECTORY=megfelelő könyvtár” környezeti változó beállításával és az „USER=root” környezeti változó átadásával (a telnet-ben van egy automatikus csatlakozási mód, ahol a felhasználó neve nem a parancssorból kerül átvételre, hanem a USER környezeti változón keresztül). Példa az exploitálásra.
Ezután egy újabb módot tártak fel a root-hozzáférés megszerzésére a telnetd-n keresztül, amely a GNU gettext könyvtár által feldolgozott OUTPUT_CHARSET és LANGUAGE környezeti változók manipulációjával, valamint a glibc-ben használt GCONV_PATH környezeti változóval kapcsolatos. Az OUTPUT_CHARSET és LANGUAGE környezeti változók beállításával a támadó aktiválhatja a karakterkódolás átalakítási funkciót a gettext-ben, amely meghívja az iconv_open() függvényt. Ezzel párhuzamosan, az iconv_open() függvény végrehajtásakor a gconv-modules konfigurációs fájl betöltésekor az útvonal a GCONV_PATH környezeti változó figyelembevételével számítódik. A gconv-modules fájl behelyettesítésével lehetőség nyílik arra, hogy a folyamat a bejelentkezési időszak alatt saját megosztott könyvtárat töltsön be a lokalizált szöveg kimenetekor.
A CVE-azonosítók a megjelölt sérülékenységekhez még nem lettek hozzárendelve. A védelem módszereként a megengedett értékek fehérlistájának alkalmazását fontolgatják ("TERM", "DISPLAY", "USER", "LOGNAME" és "POSIXLY_CORRECT"), blokkolva minden más környezeti változót, hasonlóan ahhoz, ahogy az OpenSSH esetében a környezeti változókkal dolgoznak. A sérülékenységek megerősítést nyertek a GNU InetUtils csomagban, amely a telnetd-t a Debian, Ubuntu és a származékos disztribúciók számára kínálja. a szerver A telnetd, amely a Debian, Ubuntu és a származékos disztribúciókban érkezik, érintett a problémákban. A GNU InetUtils javításai jelenleg nem érhetők el. A Rocky Linux 9 egy módosított telnetd-t tartalmaz, amely nem sebezhető, ebben a veszélyes környezeti változók szűrése helyett fehérlista-alapú ellenőrzést alkalmaznak. A fehérlista-szűrés szintén megvalósításra került a FreeBSD telnetd-jében. Az OpenBSD telnetd-t 2005-ben eltávolították a rendszerből.
Forrás: opennet.ru
