Dynamischer Lader
Der Kern des Problems: Während des Betriebs extrahiert ld.so zunächst den Wert der Variablen LD_LIBRARY_PATH aus der Umgebung und wandelt ihn mithilfe der Funktion _dl_split_path() in ein Array von Zeichenfolgen um – Pfade zu Verzeichnissen. Wenn sich später herausstellt, dass der aktuelle Prozess von einer SUID/SGID-Anwendung gestartet wird, werden das erstellte Array und tatsächlich die Variable LD_LIBRARY_PATH gelöscht. Wenn gleichzeitig _dl_split_path() nicht mehr genügend Speicher vorhanden ist (was aufgrund der expliziten 256-kB-Grenze der Umgebungsvariablen schwierig, aber theoretisch möglich ist), erhält die Variable _dl_libpath den Wert NULL und wird anschließend überprüft Der Wert dieser Variablen führt dazu, dass der Aufruf von _dl_unsetenv("LD_LIBRARY_PATH") übersprungen wird.
Von Experten entdeckte Sicherheitslücke
Zusatz: Dem Problem wurde eine Nummer zugewiesen
amd64 und i386 (der Exploit kann für andere Architekturen angepasst werden).
Das Problem kann in der Standardinstallation ausgenutzt werden und ermöglicht es einem unprivilegierten lokalen Benutzer, Code als Root über die Bibliotheksersetzung auszuführen, wenn er die Dienstprogramme chpass oder passwd suid ausführt. Um die für den Betrieb erforderlichen Bedingungen für wenig Arbeitsspeicher zu schaffen, legen Sie das RLIMIT_DATA-Limit über setrlimit fest.
Source: opennet.ru