Following the vulnerability discovered at the end of January, which allowed connection as the root user without password verification, several privilege escalation methods have been identified in the telnetd server from the GNU InetUtils suite. These are a result of the incomplete remediation of the vulnerability from 1999 (CVE-1999-0073).
Sårbarhederne skyldes, at telnetd muliggør transmission af miljøvariabler fra klienten til serveren ved hjælp af ENVIRON-optionen. Sådanne miljøvariabler sættes og behandles i konteksten af telnetd's proces og sendes til de børneprocesser, der startes af den, inklusive den proces /bin/login, der køres med root-rettigheder. Sårbarheden CVE-1999-0073 tillod telnet-klienten at sende miljøvariablen LD_LIBRARY_PATH, hvis opsætning fører til indlæsning af den brugerdefinerede delte biblioteksfil ved opstart af login-processen. Hvis en angriber kan uploade filer til en maskine, der understøtter telnet-forbindelse, kan de indlæse et specielt designet bibliotek og organisere dets indlæsning med root-rettigheder.
I telnetd fra GNU InetUtils blev sårbarheden rettet ved at forbyde farlige miljøvariabler gennem filtrering baseret på maskerne «LD_», «LIBPATH», «ENV», «IFS» og «_RLD_». Den ubenævnte miljøvariabel «CREDENTIALS_DIRECTORY», som behandles ved opstart af /usr/bin/login, forblev dog ublokkeret. Ved hjælp af denne miljøvariabel kunne brugeren ændre mappen med legitimationsoplysninger og placere en fil login.noauth i den nye mappe, som satte værdien til «yes» og aktiverede login uden kodeord (svarende til at videregive flaget «-f» til login-processen). Indstillingen gælder for alle brugere, inklusive root.
Angrebet involverer, at en ikke-privilegeret bruger opretter en undermappe i deres hjemmemappe, uploader en fil login.noauth til den og forsøger at logge ind ved at sætte miljøvariablen «CREDENTIALS_DIRECTORY=oprettet mappe» og videregive miljøvariablen «USER=root» (telnet har en automatisk tilslutningsmode, hvor brugernavnet tages ikke fra kommandolinjen, men sendes via miljøvariablen USER). Eksempel på exploit.
Der blev opdaget endnu en måde at opnå root-adgang via telnetd, som er relateret til manipulation af miljøvariablerne OUTPUT_CHARSET og LANGUAGE, behandlet af GNU gettext-biblioteket, samt miljøvariablen GCONV_PATH, der bruges i glibc. Ved at sætte miljøvariablerne OUTPUT_CHARSET og LANGUAGE kan angriberen aktivere karakterkodningskonverteringsfunktionen i gettext, hvilket kalder funktionen iconv_open(). Når funktionen iconv_open() udføres under indlæsning af konfigurationsfilen gconv-modules, beregnes stien under hensyntagen til miljøvariablen GCONV_PATH. Ved at indsætte filen gconv-modules kan man organisere lastningen af sin egen delt biblioteksfil under output af den lokaliserede streng af login-processen.
CVE-identifikatorer er endnu ikke tildelt de angivne sårbarheder. Som en beskyttelsesmetode overvejes det at anvende en hvidliste over tilladte værdier ("TERM", "DISPLAY", "USER", "LOGNAME" og "POSIXLY_CORRECT") ved at blokere alle andre miljøvariabler, ligesom det gøres med miljøvariablerne i OpenSSH. Sårbarhederne er bekræftet i GNU InetUtils-pakken, implementeringen af telnetd, der leveres i Debian, Ubuntu og afledte distributioner. Rettelser til GNU InetUtils er endnu ikke tilgængelige. I Rocky Linux 9 leveres en modificeret telnetd, der ikke er sårbar, hvor hvidliste-kontrol er aktiveret i stedet for filtrering af farlige miljøvariabler. Hvidliste-filtrering er også implementeret i telnetd fra FreeBSD. I OpenBSD blev telnetd fjernet fra systemet i 2005. server Opdagelsen af en sårbarhed i slutningen af januar, der gjorde det muligt at tilslutte sig som root-bruger uden passwordkontrol, der er fundet flere måder til at hæve sine privilegier i telnetd-serveren fra GNU InetUtils-pakken.
Kilde: opennet.ru
