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
