Sicherheitsforscher Asim Manizada hat eine Sicherheitsanfälligkeit aufgedeckt CIFSwitch – lokale Privilegienerhöhung im Zusammenspiel zwischen dem Linux-Kernel und einem Benutzerpaket cifs-utils. Das Problem betrifft den Verarbeitungsweg CIFS/SMB Kerberos/SPNEGO upcall, d.h. das Verfahren, durch das der CIFS-Kernel-Client beim Benutzerhelper Daten für die Kerberos-Authentifizierung beim Mounten von SMB-Ressourcen anfordert. Die Beschreibung wurde nach Ablauf des Embargos für linux-distros veröffentlicht; zum Zeitpunkt der Publikation war noch keine CVE-ID zugewiesen worden.
Das Wesen der Sicherheitsanfälligkeit besteht darin, dass ein nicht privilegierter Benutzer request_key("cifs.spnego", …) aufrufen und eine gefälschte Beschreibung des Schlüssels übermitteln konnte. In einem normalen Szenario sollte eine solche Zeichenfolge vom CIFS-Kernel-Client selbst erstellt werden: Sie enthält Informationen über den Server, UID, Credential-UID, PID, Ziel des Upcalls und andere Parameter. Das Kernel überprüfte jedoch nicht, ob die Beschreibung tatsächlich aus der CIFS-Subsystem stammte, während cifs.upcall, das als root über die Standardregel request-key ausgeführt wird, diesen Feldern vertraute, als wären sie vom Kernel erstellt worden.
Die Sicherheitsanfälligkeit ist nicht universell „eine Sicherheitslücke in jedem Linux von Haus aus“. Für die Ausnutzung müssen mehrere Bedingungen erfüllt sein: ein verletzlicher Kernel, installierte cifs-utils mit der Regel cifs.spnego, die Möglichkeit für nicht privilegierte Benutzer, user/mount Namespaces zu erstellen, und das Fehlen von Einschränkungen durch SELinux, AppArmor oder andere LSM-Richtlinien. In einer Mitteilung auf oss-security wird ausdrücklich darauf hingewiesen, dass dies auf verwundbaren Systemen den Weg von einem nicht privilegierten lokalen Benutzer zur Ausführung von Code mit Root-Rechten eröffnet.
Technisch wird die Kette aufgebaut rund um die Tatsache,, dass cifs.upcall in die in der gefälschten Beschreibung angegebenen Namespaces wechseln und eine NSS-Anfrage bis zur endgültigen Privilegienenthebung ausführen kann. In der Folge kann eine vom Angreifer kontrollierte Umgebung die Ladung des NSS-Moduls durch den Root-Prozess beeinflussen. In öffentlichen Beschreibungen wird betont, dass es sich hierbei um einen logischen Fehler an der Grenze zwischen Kernel und User-Space handelt, und nicht um eine klassische Memory-Corruption-Sicherheitsanfälligkeit.
Die Korrektur im Kernel war geringfügig: Für den Schlüsseltyp cifs.spnego wurde eine Überprüfung hinzugefügt, die Beschreibungen ablehnt, die nicht vom CIFS-Client mit seinen privaten spnego_cred erstellt wurden. Dieser Ansatz schließt eine Klasse von Angriffen aus, ohne dass erforderliche synchronisierte Änderungen an den cifs-utils notwendig sind, obwohl der Autor darauf hinweist, dass eine zusätzliche Verstärkung der Benutzerschnittstelle dennoch wünschenswert ist.
AlmaLinux hat mitgeteilt, dass die grundlegende Logik in allen unterstützten Versionen von AlmaLinux vorhanden ist, und dass AlmaLinux 8, 9, 10 und Kitten 10 betroffen sind, wenn cifs-utils installiert ist. Patching-Kernel wurden in den Testing-Repositories bereitgestellt: Für AlmaLinux 9 ist das Paket kernel-5.14.0-687.5.4.el9_8 oder neuer angegeben, für AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 oder neuer.
Als vorübergehende Maßnahmen bis zur Installation des korrigierten Kernels wird empfohlen, cifs-utils zu entfernen, wenn der SMB/CIFS-Client auf dem System nicht verwendet wird, das Laden des cifs-Moduls zu verbieten, die Regel cifs.spnego im request-key zu überschreiben oder unprivilegierte Benutzernamespaces zu deaktivieren. Diese Umgehungsmaßnahmen können die Kerberos-Authentifizierung für CIFS-Mounts beeinträchtigen, daher sollten sie auf Servern, auf denen tatsächlich Kerberos-authentifizierte SMB-Freigaben verwendet werden, mit Vorsicht angewendet werden.
CIFSwitch ist auch im Kontext der Entdeckung interessant: Der Autor beschreibt es als Ergebnis der Suche nach mehrstufigen Ketten unter Verwendung von LLM und einer graphischen Darstellung von Beziehungen zwischen Sicherheitsobjekten. Die praktische Schlussfolgerung für Administratoren ist jedoch recht bodenständig: Überprüfen Sie das Vorhandensein von cifs-utils, den Zustand der Benutzer-Namespaces und Kernel-Updates, insbesondere auf Systemen mit lokalen Benutzern oder Container-Szenarien mit erweiterten Namespace-Möglichkeiten.
Quelle: linux.org.ru
