Im Systemmanager systemd eine Schwachstelle (), der potenziell die Ausführung eigenen Codes mit erhöhten Berechtigungen durch das Senden einer speziell gestalteten Anfrage über den DBus-Bus ermöglicht. Das Problem wurde in der Testversion behoben (Fehlerbehebende Patches: , , ). Die Schwachstelle wurde in den Distributionen behoben , , (tritt in RHEL 8 auf, betrifft jedoch nicht RHEL 7), , und , bleibt aber zum Zeitpunkt der Erstellung der Nachricht in und .
Die Schwachstelle wird durch den Zugriff auf einen bereits freigegebenen Speicherbereich (use-after-free) verursacht, der während der asynchronen Ausführung von Anfragen an Polkit bei der Verarbeitung von DBus-Nachrichten auftritt. Einige DBus-Schnittstellen verwenden einen Cache, um Objekte für kurze Zeit zu speichern und löschen Cache-Elemente, sobald der DBus-Bus frei wird, um andere Anfragen zu verarbeiten. Wenn der DBus-Methode-Handler bus_verify_polkit_async() verwendet, muss möglicherweise auf den Abschluss der Aktion in Polkit gewartet werden. Nach der Fertigstellung von Polkit wird der Handler erneut aufgerufen und greift auf zuvor im Speicher zugewiesene Daten zu. Wenn eine Anfrage an Polkit zu lange dauert, werden die Elemente im Cache gelöscht, bevor der DBus-Methode-Handler ein zweites Mal aufgerufen wird.
Unter den Diensten, die die Schwachstelle ausnutzen können, ist systemd-machined, das die DBus-API org.freedesktop.machine1.Image.Clone bereitstellt, was zu einer vorübergehenden Speicherung von Daten im Cache und einem asynchronen Zugriff auf Polkit führt. Schnittstelle
org.freedesktop.machine1.Image.Clone ist für alle nicht privilegierten Benutzer des Systems verfügbar, die Systemd-Dienste zum Absturz bringen oder potenziell Code mit Root-Rechten ausführen können (ein Exploit-Prototyp wurde bisher nicht demonstriert). Der Code, der die Schwachstelle ausnutzen kann, wurde in systemd-machined im Jahr 2015 in Version (in RHEL 7.x wird systemd 219 verwendet).
Quelle: opennet.ru
