Na serveru telnetd z balíčku GNU InetUtils byla odhalena zranitelnost, která umožňuje připojení pod jakýmikoli uživateli, včetně uživatele root, bez ověření hesla. Identifikátor CVE zatím nebyl přidělen. Zranitelnost se projevuje od verze InetUtils 1.9.3 (2015) a zůstává neopravená v aktuálním vydání 2.7.0. Oprava je dostupná ve formě patchů (1, 2).
Problém je způsoben tím, že k ověření hesla proces telnetd volá utilitu "/usr/bin/login", přičemž jako argument předává uživatelské jméno zadané klientem při připojení k serveru. Utilita "login" podporuje možnost "-f", která umožňuje přihlášení bez provádění autentifikace (předpokládá se, že tato možnost je použita, když uživatel již prošel ověřením). Pokud se tedy podaří dosadit možnost "-f" do uživatelského jména, je možné se připojit bez ověření hesla.
Při běžném připojení nelze použít uživatelské jméno ve formátu "-f root", ale v telnetu je režim automatického připojení aktivovaný možností "-a". V tomto režimu se uživatelské jméno nebere z příkazového řádku, ale předává se prostřednictvím proměnné prostředí USER. Při volání utility login se hodnota této proměnné prostředí dosadila bez dalšího ověření a bez escapování speciálních znaků. Tím pádem stačí nastavit hodnotu proměnné prostředí USER na "-f root" a připojit se k telnetovému serveru s použitím možnosti "-a": $ USER='-f root' telnet -a jméno_serveru
Změna, která vedla k zranitelnosti, byla přidána do kódu telnetd v březnu 2015 a souvisela s odstraněním problému, který neumožňoval určit uživatelské jméno v režimu autologin bez autentifikace v Kerberosu. Jako řešení byla přidána podpora přenosu uživatelského jména pro režim autologin prostřednictvím proměnné prostředí, ale kontrolu správnosti uživatelského jména z proměnné prostředí zapomněli přidat.
Zdroj: opennet.ru
