Im Jahr 2023 meldete das Qualys-Team eine Schwachstelle mit hoher Kritikalität, die eine große Anzahl von Linux-Versionen betraf. Dabei handelte es sich um eine Eskalation lokaler Privilegien durch Ausnutzung des Pufferüberlaufs im dynamischen Loader der GNU-C-Bibliothek (glibc).
Der dynamische Lader, der die Umgebungsvariable GLIBC_TUNABLES verarbeitet, verursacht diesen Überlauf, und ein böswilliger Agent könnte diese Variable verwenden, um Binärdateien mit SUID-Berechtigungen zu starten und so Code mit erhöhten Rechten auszuführen.
Um diese Schwachstelle zu reproduzieren, wurde eine Testumgebung implementiert. Zunächst müssen Sie auf die anfällige Maschine zugreifen:
Um die Ausnutzung durchführen zu können, müssen Sie den bereitgestellten POC verstehen.
Der dynamische Loader verwendet die Umgebungsvariablen gclib_tunables, die es Entwicklern ermöglichen, das Verhalten der Bibliothek zur Laufzeit dynamisch zu ändern.
In diesem Fall sucht der Code nach allen gclib_tunables-Variablen in den Umgebungsvariablen und kopiert sie in eine neue Variable. Die Sicherheitslücke entsteht, wenn die Variable unerwartete Eingaben enthält, da diese nicht sicher verarbeitet werden und einen Pufferüberlauf verursachen.
Als Verwertungsvoraussetzung müssen Sie über Folgendes verfügen:
- Ausführen von Code mit eingeschränkten Berechtigungen auf einem anfälligen System.
POC
Nachdem wir mithilfe der Datei gen_libc.py, die sich in diesem Fall bereits auf dem Computer befindet, überprüft haben, ob sie für Looney Tunables anfällig ist, führen wir sie aus, um den Exploit zu generieren.
Der nächste Schritt besteht darin, den Exploit mit GCC zu kompilieren. Die Datei, die kompiliert werden muss, ist exp.c
Nach der Ausführung beider Befehle werden zwei Dateien generiert, der zum Ausnutzen der Sicherheitslücke erforderliche POC:
- Eine ausführbare Datei: „exp“
Nach dem Ausführen der Datei, die den Exploit enthielt, können Sie nach kurzer Zeit sehen, wie der Exploit abgeschlossen und die Eskalation der Rechte erfolgreich durchgeführt wurde.
Abschluss
Diese Schwachstelle in der GNU-C-Bibliothek (glibc) unterstreicht die Bedeutung einer sicheren Verwaltung von Umgebungsvariablen auf Linux-Systemen. Um diese Schwachstelle gezielt zu mindern, muss das Glibc-Paket auf die gemeinsam verfügbaren neuen Versionen aktualisiert werden und es muss überprüft werden, ob die Änderungen zufriedenstellend angewendet wurden.