En serie nya sårbarheter i telnetd som möjliggör root-privilegier i systemet

I februari upptäcktes en sårbarhet som tillät att logga in som root-användare utan lösenordsverifiering. Flera sätt att öka sina privilegier har nu identifierats i telnetd-servern från GNU InetUtils, till följd av en ofullständig åtgärd av en sårbarhet som upptäcktes 1999 (CVE-1999-0073).

Sårbarheterna orsakas av att telnetd tillåter att klienten skickar miljövariabler till servern med hjälp av ENVIRON-alternativet. Dessa miljövariabler hanteras i sammanhanget av telnetd-processen och vidarebefordras till de underprocesser som körs av den, inklusive processen /bin/login som körs med root-rättigheter. Sårbarheten CVE-1999-0073 tillät telnet-klienten att skicka miljövariabeln LD_LIBRARY_PATH, vars inställning ledde till att den angivna delade biblioteket laddades vid start av login-processen. Om det finns möjlighet att ladda filer till systemet som stöder telnet-anslutningar kan angriparen ladda ett speciellt utformat bibliotek och organisera dess laddning med root-rättigheter.

I telnetd från GNU InetUtils åtgärdades sårbarheten genom att förbjuda farliga miljövariabler genom filtrering med maskerna "LD_", "LIBPATH", "ENV", "IFS" och "_RLD_". Den miljövariabel som inte blockerades var "CREDENTIALS_DIRECTORY", som hanteras vid start av /usr/bin/login. Genom denna miljövariabel kunde en användare ändra katalogen med autentiseringsinställningar och placera en fil med namnet login.noauth i den nya katalogen, med värdet "yes", vilket aktiverar inloggning utan lösenord (motsvarar att skicka flaggan "-f" till login-processen). Inställningen gäller för alla användare, inklusive root.

Attacken innebär att en icke-privilegierad användare skapar en underkatalog i sin hemkatalog, laddar en fil med namnet login.noauth dit och försöker logga in med att ange miljövariabeln "CREDENTIALS_DIRECTORY=skapad katalog" och att skicka miljövariabeln "USER=root" (i telnet finns en automatisk anslutningsläge där användarnamnet tas inte från kommandoraden, utan skickas via miljövariabeln USER). Exempel på exploit.

Ytterligare ett sätt att få root-åtkomst via telnetd har upptäckts. Detta är kopplat till manipulering av miljövariablerna OUTPUT_CHARSET och LANGUAGE, som hanteras av GNU gettext-biblioteket, samt miljövariabeln GCONV_PATH, som används i glibc. Genom att ställa in miljövariablerna OUTPUT_CHARSET och LANGUAGE kan en angripare aktivera funktionaliteten för teckenkodningskonvertering i gettext, vilket aktiverar funktionen iconv_open(). När funktionen iconv_open() exekveras vid laddning av konfigurationsfilen gconv-modules beräknas sökvägen med hänsyn till miljövariabeln GCONV_PATH. Genom att byta ut gconv-modules-filen kan en angripare orsaka att en egen delad bibliotek laddas vid utskrift av en lokaliserad sträng av login-processen.

CVE-id för de märkta sårbarheterna har ännu inte tilldelats. Som metod för skydd övervägs att använda en vit lista för tillåtna värden ("TERM", "DISPLAY", "USER", "LOGNAME" och "POSIXLY_CORRECT"), med blockering av alla andra miljövariabler, på samma sätt som hanteringen av miljövariabler görs i OpenSSH. Sårbarheterna har bekräftats i GNU InetUtils-paketet, implementationen av telnetd som levereras i Debian, Ubuntu och härledda distributioner. servern I Rocky Linux 9 levereras en modifierad telnetd som inte är sårbar, där istället för filtrering av farliga miljövariabler en vitlistakontroll inkluderas. Filtrering enligt vitlista har också genomförts i telnetd från FreeBSD. I OpenBSD togs telnetd bort från systemet år 2005.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster