Dynamischer Loader , das Teil von OpenBSD ist, kann unter bestimmten Bedingungen fĂŒr -Anwendungen die Umgebungsvariable LD_LIBRARY_PATH beibehalten und damit ermöglichen, von Dritten stammenden Code im Kontext eines Prozesses auszufĂŒhren, der mit erhöhten Rechten lĂ€uft. Patches zur Behebung der SicherheitsanfĂ€lligkeit 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 zum Download verfĂŒgbar sein.
Das Problem besteht darin, dass ld.so wĂ€hrend seiner AusfĂŒhrung zunĂ€chst den Wert der Umgebungsvariable LD_LIBRARY_PATH aus der Umgebung extrahiert, ihn mit der Funktion _dl_split_path() in ein Array von Strings â Pfaden zu Verzeichnissen â umwandelt. Sollte sich spĂ€ter herausstellen, dass der aktuelle Prozess als SUID/SGID-Anwendung gestartet wurde, wird das erstellte Array sowie die Umgebungsvariable LD_LIBRARY_PATH geleert. Wenn wĂ€hrend der AusfĂŒhrung von _dl_split_path() jedoch ein Speicherengpass auftritt (was aufgrund einer klaren Begrenzung der GröĂe von Umgebungsvariablen auf 256 Kilobyte schwierig ist, aber theoretisch möglich), erhĂ€lt die Variable _dl_libpath den Wert NULL, und die anschlieĂende ĂberprĂŒfung des Wertes dieser Variablen fĂŒhrt dazu, dass der Aufruf von _dl_unsetenv(
SicherheitsanfÀlligkeit wurde von den Spezialisten , ebenso wie Probleme. Die Sicherheitsforscher, die die AnfÀlligkeit entdeckt haben, haben die schnelle Lösung des Problems hervorgehoben: Der Patch wurde vorbereitet und die Updates innerhalb von drei Stunden nach der Benachrichtigung durch das Projekt OpenBSD veröffentlicht.
Zusatz: Der AnfÀlligkeit wurde die Nummer . In der Mailingliste oss-security wurde eine veröffentlicht, die einen Exploit-Prototyp enthÀlt, der in OpenBSD 6.6, 6.5, 6.2 und 6.1 auf den Architekturen
amd64 und i386 funktioniert (der Exploit kann auch fĂŒr andere Architekturen angepasst werden).
Das Problem ist in der Standardinstallation ausnutzbar und ermöglicht es einem nicht privilegierten lokalen Benutzer, Code mit Root-Rechten durch die Verwendung einer Bibliothek bei der AusfĂŒhrung der SUID-Utilities chpass oder passwd auszufĂŒhren. Zur Schaffung der Bedingungen fĂŒr die Ausnutzung des Speicherengpasses wird die Setzung der Grenze RLIMIT_DATA ĂŒber setrlimit verwendet.
Quelle: opennet.ru
