Sicherheitslücke in ld.so OpenBSD

Dynamischer Lader ld.so, in OpenBSD enthalten, kann unter bestimmten Bedingungen SUID/SGID- Anwendungen verlassen die Umgebungsvariable LD_LIBRARY_PATH und ermöglichen so das Laden von Code von Drittanbietern im Kontext eines Prozesses, der mit erhöhten Rechten ausgeführt wird. Für Releases sind Patches verfügbar, die die Schwachstelle beheben 6.5 и 6.6. Binäre Patches (Syspatch) 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.

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 Qualys, ebenso gut wie mehrere wurden zuvor enthüllt Probleme. Die Sicherheitsforscher, die die Schwachstelle identifizierten, stellten fest, wie schnell das Problem behoben wurde: Ein Patch wurde vorbereitet und Updates wurden innerhalb von drei Stunden nach Erhalt der Benachrichtigung beim OpenBSD-Projekt veröffentlicht.

Zusatz: Dem Problem wurde eine Nummer zugewiesen CVE-2019-19726. Hergestellt auf der Mailingliste oss-security offizielle Ankündigung, einschließlich eines Prototyp-Exploits, der auf den Architekturen OpenBSD 6.6, 6.5, 6.2 und 6.1 läuft
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

Kommentar hinzufügen