Dynamischer Loader , das in OpenBSD enthalten ist, kann unter bestimmten Bedingungen für -Anwendungen die Umgebungsvariable LD_LIBRARY_PATH belassen und somit das Laden von Drittanbieter-Code im Kontext eines mit erhöhten Rechten laufenden Prozesses ermöglichen. Patches zur Behebung der Schwachstelle sind für die Releases verfügbar. und . Binär-Patches () für die Plattformen amd64, i386 und arm64 sind bereits in Produktion und sollten zum Zeitpunkt der Veröffentlichung dieser Nachricht verfügbar sein.
Das Problem besteht darin, dass ld.so zunächst den Wert der Umgebungsvariable LD_LIBRARY_PATH extrahiert, diesen mit der Funktion _dl_split_path() in ein Array von Strings – Pfaden zu Verzeichnissen umwandelt. Wenn sich später herausstellt, dass der aktuelle Prozess als SUID/SGID-Anwendung läuft, werden das erstellte Array und die Umgebungsvariable LD_LIBRARY_PATH gelöscht. Falls während der Ausführung von _dl_split_path() jedoch ein Speichermangel auftritt (was aufgrund der expliziten Begrenzung der Größe von Umgebungsvariablen auf 256 Kilobyte schwer zu erreichen ist, aber theoretisch möglich), erhält die Variable _dl_libpath den Wert NULL, und die folgende Überprüfung des Wertes dieser Variablen lässt den Aufruf von _dl_unsetenv(„LD_LIBRARY_PATH“) auslassen.
Sicherheitsforscher haben eine Schwachstelle entdeckt , ebenso wie Probleme. Die Forscher, die die Schwachstelle entdeckt haben, haben die Schnelligkeit der Problemlösung hervorgehoben: Der Patch wurde vorbereitet und die Updates innerhalb von drei Stunden nach der Benachrichtigung durch das OpenBSD-Projekt veröffentlicht.
Zusatz: Dem Problem wurde die Nummer zugewiesen. In der Mailingliste oss-security wurde eine , die einen Exploit-Prototyp enthält, aktiviert in OpenBSD 6.6, 6.5, 6.2 und 6.1 auf den Architekturen
amd64 und i386 (der Exploit kann auch für andere Architekturen angepasst werden).
Das Problem ist in der Standardinstallation ausnutzbar und erlaubt es einem unprivilegierten lokalen Benutzer, Code mit Root-Rechten über die Bibliotheksersetzung beim Start der SUID-Utilities chpass oder passwd auszuführen. Um die Bedingungen für die Ausnutzung zu schaffen, wird eine Speichergrenzenbeschränkung RLIMIT_DATA über setrlimit gesetzt.
Quelle: opennet.ru
