Das Unternehmen Qualys hat eine gefährliche Sicherheitsanfälligkeit (CVE-2023-6246) in der Standard-C-Bibliothek Glibc entdeckt, die es ermöglicht, durch Manipulation beim Start von SUID-Anwendungen Code mit erhöhten Rechten auszuführen. Die Forscher konnten einen funktionierenden Exploit entwickeln, der root-Rechte durch Manipulation der Befehlszeilenargumente beim Start des Programms su ermöglicht.
Die Sicherheitsanfälligkeit wird durch einen Pufferüberlauf in der Funktion __vsyslog_internal() verursacht, die beim Aufruf der Funktionen syslog() und vsyslog() verwendet wird. Das Problem tritt auf, weil ein Fehler beim Versuch, einen zu langen Anwendungsnamen über das Makro SYSLOG_HEADER auszugeben, auftritt. Bei dem Versuch, den Puffer unter Berücksichtigung des langen Namens zu erweitern, tritt ein Fehler auf, nach dem Daten in den ursprünglichen kleineren Puffer geschrieben werden.
Bei der Durchführung eines Angriffs über das Tool su kann der Angreifer den Namen des Prozesses beim Starten der Anwendung ändern, indem er den Wert von argv[0] ersetzt, der verwendet wird, um Informationen über den Programmnamen im Log auszugeben. Dadurch kann eine kontrollierte Überschreibung von Daten außerhalb des reservierten Puffers erreicht werden. Diese Überlauftechnik kann dann genutzt werden, um die Struktur nss_module in der nss-Bibliothek zu überschreiben, um eine Shared Library zu erstellen und diese mit root-Rechten zu laden.
Das Problem tritt ab der Version glibc 2.37 auf, die im August 2022 veröffentlicht wurde und eine Änderung zur Behandlung von Situationen enthält, in denen zu große Nachrichten geschrieben werden. Der die Sicherheitsanfälligkeit einführende Fix wurde in den Branch glibc 2.36 backportiert sowie in die Pakete von Distributionen mit älteren glibc-Versionen, da der betreffende Fix die Schwachstelle CVE-2022-39046 beseitigte, die zu einem Datenleck aus dem Heap führte. Ironischerweise führte der Fix einer nicht kritischen Sicherheitsanfälligkeit zur Entstehung eines kritischen Problems. Erwähnenswert ist, dass über eine ähnliche Schwachstelle in der Funktion vsyslog() der libc-Bibliothek 5.4.3 bereits 1997 berichtet wurde.
Eine Sicherheitsanfälligkeit wurde in Debian 12/13, Ubuntu 23.04/23.10 und Fedora 37-39 bestätigt. Ein Exploit zur Erlangung von Root-Rechten durch nicht privilegierte Benutzer wurde in einer vollständig aktualisierten Umgebung von Fedora 38 unter Verwendung aller standardmäßig aktivierten Schutzmechanismen demonstriert. Die Sicherheitsanfälligkeit kann nur lokal ausgenutzt werden, da sie die Übertragung von mehr als 1024 Bytes über das Argument argv[0] oder den Ident-Parameter in der Funktion openlog() erfordert.
Die Behebung der Sicherheitsanfälligkeit wurde vor einigen Stunden in die Codebasis von Glibc aufgenommen und wird Bestandteil des morgigen Updates von Glibc 2.39 sein, zusammen mit der Behebung von zwei weiteren Sicherheitsanfälligkeiten (CVE-2023-6779, CVE-2023-6780), die ebenfalls den Code von __vsyslog_internal() betreffen und zu einem Pufferüberlauf führen. Darüber hinaus hat Qualys auf einen Pufferüberlauf in der Implementierung der Funktion qsort() hingewiesen, der von den Entwicklern von Glibc nicht als Sicherheitsanfälligkeit eingestuft wurde, da die Ausnutzung die Verwendung einer untypischen Vergleichsfunktion als Argument beim Aufruf von qsort erfordert, die die Differenz der verglichenen Parameter zurückgibt.
Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Протестировать подверженность системы уязвимости можно следующей командой: $ (exec -a «`printf ‘%0128000x’ 1`» /usr/bin/su < /dev/null)
Quelle: opennet.ru
