Im Systemd-Coredump-Komponenten, die für die Verarbeitung von Core-Dateien verantwortlich ist, die nach einem plötzlichen Prozessabbruch generiert werden, wurde eine Schwachstelle (CVE-2022-4415) entdeckt. Diese ermöglicht es einem unprivilegierten lokalen Benutzer, den Inhalt des Speichers privilegierter Prozesse, die mit dem SUID-Root-Flag gestartet wurden, zu bestimmen. Das Problem mit der Standardkonfiguration wurde in den Distributionen openSUSE, Arch, Debian, Fedora und SLES bestätigt.
Die Schwachstelle resultiert aus der fehlenden ordnungsgemäßen Verarbeitung des Sysctl-Parameters fs.suid_dumpable im Systemd-Coredump, der bei der standardmäßig auf 2 gesetzten Einstellung die Generierung von Core-Dumps für Prozesse mit SUID-Flag erlaubt. Es wird davon ausgegangen, dass die vom Kernel erstellten Core-Dateien von SUID-Prozessen Zugriffsrechte erhalten, die das Lesen nur für den Benutzer root zulassen. Das Systemd-Coredump-Tool, das vom Kernel zum Speichern von Core-Dateien aufgerufen wird, speichert die Core-Datei unter der ID root, gewährt jedoch zusätzlich Zugriff auf die Core-Dateien basierend auf ACL, der das Lesen basierend auf der ursprünglichen Prozess-ID erlaubt.
Diese Funktion ermöglicht das Laden von Core-Dateien, ohne dass die Anwendung ihren Benutzeridentifikator ändern und mit erhöhten Rechten ausgeführt werden kann. Der Angriff besteht darin, dass ein Benutzer eine SUID-Anwendung starten und ihr ein SIGSEGV-Signal senden kann, um dann den Inhalt der Core-Datei zu laden, die einen Snapshot des Speicherprozesses während der abnormalen Beendigung enthält.
Zum Beispiel kann ein Benutzer «/usr/bin/su» starten und in einem anderen Terminal den Befehl «kill -s SIGSEGV `pidof su`» ausführen, woraufhin systemd-coredump die Core-Datei im Verzeichnis /var/lib/systemd/coredump speichert und eine ACL festlegt, die dem aktuellen Benutzer das Lesen erlaubt. Da das SUID-Utility ‘su’ den Inhalt von /etc/shadow in den Speicher liest, kann der Angreifer auf die Informationen über die Passwort-Hashes aller Benutzer im System zugreifen. Das Utility sudo ist gegenüber diesem Angriff immun, da es die Generierung von Core-Dateien über ulimit verbietet.
Laut den Entwicklern von systemd tritt die Schwachstelle ab der Version systemd 247 (November 2020) auf, jedoch ist auch die Version 246 betroffen, wie ein entdeckender Forscher berichtet. Die Schwachstelle zeigt sich, wenn systemd mit der Bibliothek libacl kompiliert wurde (dies ist standardmäßig in allen gängigen Distributionen der Fall). Ein Fix ist bisher nur als Patch verfügbar. Die Nachverfolgung der Fixes in den Distributionen kann auf den folgenden Seiten erfolgen: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch. Eine vorläufige Schutzmaßnahme besteht darin, den sysctl-Wert fs.suid_dumpable auf 0 zu setzen, was die Übertragung von Dumps an den systemd-coredump-Handler deaktiviert.
Quelle: opennet.ru
