Im Systemmanager systemd Schwachstelle (), die es potenziell ermöglicht, Code mit erhöhten Rechten durch das Senden einer speziell gestalteten Anfrage über den DBus-Bus auszuführen. Das Problem wurde in der Testversion behoben (die das Problem beheben: , , ). Die Schwachstelle wurde in den Distributionen , , (tritt in RHEL 8 auf, betrifft jedoch nicht RHEL 7), , und , ist jedoch zum Zeitpunkt der Veröffentlichung dieser Nachricht noch nicht behoben in und .
Die Schwachstelle wird durch den Zugriff auf einen bereits freigegebenen Speicherbereich (use-after-free) verursacht, der bei der asynchronen Ausführung von Anfragen an Polkit während der Verarbeitung von DBus-Nachrichten auftritt. Einige DBus-Schnittstellen verwenden einen Cache, um Objekte kurzzeitig zu speichern, und räumen die Cache-Elemente auf, sobald der DBus-Bus für die Verarbeitung anderer Anfragen freigegeben ist. Wenn der DBus-Methodenhandler bus_verify_polkit_async() verwendet, muss er möglicherweise auf den Abschluss der Operation in Polkit warten. Nach der Fertigstellung wird der Handler erneut aufgerufen und greift auf zuvor im Speicher zugewiesene Daten zu. Wenn die Anfrage an Polkit zu lange dauert, werden die Elemente im Cache gelöscht, bevor der DBus-Methodenhandler ein zweites Mal aufgerufen wird.
Von den Diensten, die die Schwachstelle ausnutzen können, ist systemd-machined bemerkenswert, das die DBus-API org.freedesktop.machine1.Image.Clone bereitstellt, was zu einer vorübergehenden Speicherung von Daten im Cache führt und asynchrone Zugriffe auf Polkit ermöglicht. Die Schnittstelle
org.freedesktop.machine1.Image.Clone steht allen nicht privilegierten Benutzern des Systems zur Verfügung, die einen Absturz von systemd-Diensten auslösen oder potenziell Code mit Root-Rechten ausführen können (der Exploit-Prototyp wurde bisher nicht demonstriert). Der Code, der die Schwachstelle ausnutzt, wurde in systemd-machined im Jahr 2015 in der Version (in RHEL 7.x wird systemd 219 verwendet).
Quelle: opennet.ru
