Schwachstelle in Glibc ld.so, die Root-Rechte im System ermöglicht

Das Unternehmen Qualys hat eine gefĂ€hrliche SicherheitsanfĂ€lligkeit (CVE-2023-4911) im Linker ld.so entdeckt, der als Teil der System-C-Bibliothek Glibc (GNU libc) geliefert wird. Die Schwachstelle ermöglicht es einem lokalen Benutzer, seine Berechtigungen im System zu erhöhen, indem er speziell formatierte Daten in der Umgebungsvariable GLIBC_TUNABLES angibt, bevor er eine ausfĂŒhrbare Datei mit dem SUID-Root-Flag startet, zum Beispiel /usr/bin/su.

Die erfolgreiche Ausnutzung dieser Schwachstelle wurde in Fedora 37 und 38, Ubuntu 22.04 und 23.04 sowie Debian 12 und 13 demonstriert. Es wird angenommen, dass die Schwachstelle auch in anderen Distributionen auftritt, die Glibc verwenden. Distributionen auf der Basis der System-C-Bibliothek Musl, wie Alpine Linux, sind von dem Problem nicht betroffen. Die Schwachstelle wurde in einem Patch behoben, der am 2. Oktober hinzugefĂŒgt wurde. Die Veröffentlichung von Paketupdates in den Distributionen kann auf den Seiten von Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo und ALT Linux verfolgt werden.

Die Schwachstelle wurde durch eine Änderung verursacht, die im April 2021 vorgenommen wurde und Teil der Version glibc 2.34 ist. Aufgrund eines Fehlers im Code zum Parsen der in der Umgebungsvariable GLIBC_TUNABLES angegebenen Zeichenfolge fĂŒhrt eine falsche Kombination von Parametern in dieser Variable dazu, dass das geparste Ergebnis ĂŒber den zugewiesenen Puffer hinaus geschrieben wird. Das Problem tritt auf, wenn anstelle von regulĂ€ren Folgen «name=val» die Parameter in Form einer doppelten Zuweisung «name=name=val» angegeben werden. In diesem Fall wird die Zuweisung zweimal verarbeitet, zuerst als «name=name=val», dann als «name=val». Aufgrund dieser doppelten Verarbeitung entsteht das Ergebnis «name=name=val:name=val», dessen GrĂ¶ĂŸe den Puffer tunestr ĂŒberschreitet.

Forscher haben einen stabilen Exploit entwickelt, der es ermöglicht, Root-Rechte mit fast jedem Programm mit dem suid root-Flag zu erlangen. Ausnahmen sind das Dienstprogramm sudo (Ă€ndert den Wert von ELF RUNPATH), die Tools chage und passwd in Fedora (geschĂŒtzt durch spezielle SELinux-Regeln) und das Tool snap-confine in Ubuntu (geschĂŒtzt durch spezielle AppArmor-Regeln). Die vorgeschlagene Ausnutzungsmethode funktioniert außerdem nicht in RHEL 8 und RHEL 9, obwohl diese Versionen ebenfalls anfĂ€llig sind (fĂŒr den Angriff ist die Erstellung eines anderen Exploits erforderlich). Der Code des Exploits wird spĂ€ter veröffentlicht, nachdem die Schwachstelle weitgehend behoben wurde. Um die AnfĂ€lligkeit Ihres Systems fĂŒr die Schwachstelle zu ĂŒberprĂŒfen, können Sie den folgenden Befehl verwenden, der im Falle eines Problems mit einem Crash endet: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '192x' 1`" \/usr\/bin\/su —help

Es wird besonders auf die Behebung von zwei weiteren Schwachstellen in Glibc hingewiesen:

  • CVE-2023-4806 — Zugriff auf einen bereits freigegebenen Speicherbereich (Use-after-free) in der Funktion getaddrinfo(), der auftritt, wenn das NSS-Plugin nur die Callback-Aufrufe „_gethostbyname2_r“ und „_getcanonname_r“ implementiert, jedoch den Aufruf „_gethostbyname3_r“ nicht unterstĂŒtzt. Um die Schwachstelle auszunutzen, muss der DNS-Server fĂŒr den angeforderten Host eine große Anzahl von IPv6- und IPv4-Adressen zurĂŒckgeben, was zum Absturz des Prozesses fĂŒhrt, der die Funktion getaddrinfo fĂŒr die Adresse Familie AF_INET6 mit den gesetzten Flags AI_CANONNAME, AI_ALL und AI_V4MAPPED aufruft.
  • CVE-2023-5156 — Speicherauslauf beim Aufruf der Funktion getaddrinfo fĂŒr die Adresse Familie AF_INET6 mit den gesetzten Flags AI_CANONNAME, AI_ALL und AI_V4MAPPED.

Quelle: opennet.ru

60GB SSD 8Gb DDR4