Eine Schwachstelle im Linux-Subsystem pidfd ermöglicht das Lesen von für den Benutzer unzugänglichen Dateien.

Im Linux-Kernel wurde in den letzten zwei Wochen eine fünfte (1, 2, 3) kritische Schwachstelle entdeckt, die es einem Benutzer ermöglicht, seine Privilegien im System zu erhöhen. Es wurden zwei funktionierende Exploits veröffentlicht: sshkeysign_pwn ermöglicht es einem nicht privilegierten Benutzer, den Inhalt geschlossener Host-SSH-Keys /etc/ssh/ssh_host_*_key zu lesen, während chage_pwn es erlaubt, den Inhalt der Datei /etc/shadow mit den Passwort-Hashes der Benutzer zu lesen.

Die Informationen über die Schwachstelle waren nicht zur Offenlegung geplant, aber einer der Sicherheitsforscher konnte anhand des vorgeschlagenen Patches für den Kernel die Essenz der Schwachstelle bestimmen, die es ermöglicht, Dateien zu lesen, die nur für den Benutzer root zugänglich sind, wie z.B. /etc/shadow. In der im Kernel hinzugefügten Änderung wurde die Logik der Verwendung der Funktion get_dumpable() in ptrace bei der Bestimmung des Zugriffslevels in der Funktion ptrace_may_access() angepasst.

Die Schwachstelle selbst wird durch einen Zeitrennen verursacht, der es ermöglicht, unprivilegierten Zugriff auf den Dateideskriptor pidfd zu erhalten, nachdem auf eine Datei aus dem SUID-root-Prozess zugegriffen wurde. In dem Moment zwischen dem Öffnen der Datei und dem Zurücksetzen der Privilegien im SUID-Programm (zum Beispiel über die Funktion setreuid) tritt eine Situation auf, in der die Anwendung, die das SUID-root-Programm gestartet hat, über den Deskriptor pidfd auf die in dem SUID-Programm geöffnete Datei zugreifen kann, auch wenn dies durch die Zugriffsrechte der Datei nicht erlaubt ist.

Das Zeitfenster für den Exploit entsteht, weil die Funktion '__ptrace_may_access()' die Überprüfung des Zugriffs auf die Datei überspringt, wenn das Feld task->mm nach der Ausführung von exit_mm() auf NULL gesetzt wird, aber vor dem Aufruf von exit_files(). In diesem Moment geht der Systemaufruf pidfd_getfd davon aus, dass die Benutzer-ID (uid) des aufrufenden Prozesses mit der ID übereinstimmt, die Zugriff auf die Datei hat. Bemerkenswert ist, dass bereits 2020 auf das Problem hingewiesen wurde, es aber bis jetzt ungelöst blieb.

Im Exploit, der den Inhalt von /etc/shadow ausliest, besteht der Angriff darin, das Programm /usr/bin/chage kontinuierlich über fork+execl mit dem suid-root-Flag zu starten, das den Inhalt von /etc/shadow liest. Nachdem der Prozess abgezweigt wurde, erfolgt ein Systemaufruf pidfd_open und es wird ein zyklisches Durchlaufen der verfügbaren pidfd-Deskriptoren über den Systemaufruf pidfd_getfd sowie deren Überprüfung über /proc/self/fd durchgeführt. Im Exploit sshkeysign_pwn werden ähnliche Manipulationen mit dem suid-root-Programm ssh-keysign durchgeführt.

Ein CVE-Identifikator für das Problem wurde bisher nicht zugewiesen, Updates für den Kernel und Pakete in den Distributionen wurden nicht veröffentlicht. In den vor wenigen Stunden veröffentlichten Kernen 7.0.7, 6.18.30 und 6.12.88 wurde die Schwachstelle nicht behoben. Zum Zeitpunkt der Veröffentlichung dieser Nachricht kann nur der Patch verwendet werden. Es werden mögliche Umgehungsstrategien zur Blockierung der Schwachstelle diskutiert, wie z.B. das Setzen von sysctl kernel.yama.ptrace_scope=3 oder das Entfernen des suid-root-Flags von ausführbaren Dateien im System (zumindest von den in Exploits verwendeten Utilities ssh-keysign und chage).

Zusatz: Die Schwachstelle wurde mit der CVE-Identifikator CVE-2026-46333 versehen. Updates für den Linux-Kernel 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 und 5.10.256, mit denen die Schwachstelle behoben wird, wurden erstellt. Den Status der Behebung der Schwachstellen in den Distributionen können Sie auf den folgenden Seiten einsehen: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

Quelle: opennet.ru

60GB SSD 8Gb DDR4