Sie entdeckten eine Schwachstelle in ksmbd im Linux-Kernel

Verwundbarkeit

Wenn sie ausgenutzt werden, können diese Schwachstellen Angreifern den unbefugten Zugriff auf vertrauliche Informationen ermöglichen oder allgemein Probleme verursachen

Informationen wurden kürzlich veröffentlicht eine Schwachstelle im Linux-Kernel wurde entdeckt mit einem CVSS-Score von 10 auf dem SMB-Server, wodurch ein nicht authentifizierter Benutzer Code remote ausführen kann.

Der gefundene Fehler ermöglicht es entfernten Angreifern, beliebigen Code auf betroffenen Installationen auszuführen. Eine Authentifizierung ist nicht erforderlich, um diese Schwachstelle auszunutzen, aber nur Systeme mit aktiviertem ksmbd sind anfällig.

Der spezifische Fehler besteht in der Verarbeitung der SMB2_TREE_DISCONNECT-Befehle. Das Problem resultiert daraus, dass nicht validiert wird, dass ein Objekt existiert, bevor Operationen an diesem Objekt durchgeführt werden. Ein Angreifer kann diese Schwachstelle ausnutzen, um Code im Kontext des Kernels auszuführen.

DETAILS DER SCHWACHSTELLE
Diese Schwachstelle ermöglicht entfernten Angreifern, beliebigen Code auf betroffenen Installationen des Linux-Kernels auszuführen. Eine Authentifizierung ist nicht erforderlich, um diese Schwachstelle auszunutzen, aber nur Systeme mit aktiviertem ksmbd sind anfällig.

Der spezifische Fehler besteht in der Verarbeitung der SMB2_TREE_DISCONNECT-Befehle. Das Problem wird durch das Fehlen einer Validierung der Existenz eines Objekts verursacht, bevor Operationen an dem Objekt ausgeführt werden. Ein Angreifer kann diese Schwachstelle ausnutzen, um Code im Kontext des Kernels auszuführen.

Es wird erwähnt, dass jeder neue Thread je nach Art der SMB-Anforderung entscheiden kann, Befehle an den Benutzerbereich (ksmbd.mountd) weiterzuleiten. Derzeit werden DCE/RPC-Befehle als vom Benutzerbereich behandelt identifiziert. Um den Linux-Kernel besser zu nutzen, wurde entschieden, die Befehle als Arbeitselemente zu behandeln und sie in den ksmbd -io kworker-Thread-Handlern auszuführen.

Dies ermöglicht Managern das Multiplexen, da der Kernel sich darum kümmert, zusätzliche Worker-Threads zu starten, wenn die Last zunimmt, und umgekehrt, wenn die Last abnimmt, beendet er die zusätzlichen Worker-Threads.

Wenn der Server-Daemon startet, startet er beim Booten einen Fork-Thread (ksmbd/Schnittstellenname) und öffnet einen dedizierten Port 445, um auf SMB-Anfragen zu lauschen. Jedes Mal, wenn neue Clients eine Anfrage stellen, akzeptiert der Forker-Thread die Verbindung des Clients und erstellt einen neuen Thread für einen dedizierten Kommunikationskanal zwischen dem Client und dem Server. Dadurch können SMB-Anfragen (Befehle) von Clients parallel verarbeitet werden und neue Clients können neue Verbindungen aufbauen.

ksmbd hat bei einigen Benutzern Alarm geschlagen die letztes Jahr über ihre Fusion gesprochen haben. SerNet, ein deutsches Computerunternehmen, das eine eigene Version von Samba anbietet, sagte in einem Blogbeitrag, dass ksmbd großartig sei, aber etwas unausgereift erscheine. Darüber hinaus erklärte das Samba+-Team von SerNet in einem Blogbeitrag, dass der Wert des Hinzufügens eines SMB-Servers zum Kernel-Speicherplatz möglicherweise nicht das Risiko wert ist, „das letzte bisschen Leistung aus dem verfügbaren Zeug herauszuholen“.

Glücklicherweise sind Sie vollkommen sicher, wenn Sie Samsungs „experimentelles“ ksmbd-Modul nicht ausführen, wie von Sicherheitsforscher Shir Tamari auf Twitter beschrieben, und Samba behalten haben. „ksmbd ist neu; Die meisten Benutzer verwenden immer noch Samba und sind nicht betroffen. Grundsätzlich, wenn Sie keine SMB-Server mit ksmbd betreiben, genießen Sie Ihr Wochenende“, twitterte Tamari.

Laut der Zero-Day-Initiative die die ksmbd-Schwachstelle offenbarte, existiert der Use-after-free-Fehler in der Verarbeitung der SMB2_TREE_DISCONNECT-Befehle. Laut ZDI wird das Problem dadurch verursacht, dass ksmbd die Existenz von Objekten nicht validiert, bevor es Operationen an ihnen ausführt.

Für diejenigen, die ksmbd verwenden, gibt es neben dem Umstieg auf Samba eine Problemumgehung: Upgrade auf die im August veröffentlichte Linux-Kernel-Version 5.15.61 oder später. Dieses Kernel-Update behebt auch ein paar andere Probleme in ksmbd: ein Out-of-Bounds-Lesen für SMB2_TREE_CONNECT, das laut Patch-Notiz ungültige Anfragen ermöglichen könnte, keine Nachrichten zu senden, und ein Speicherleck in smb2_handle_negotiate, das ein falsches free Erinnerung.

schließlich, wenn Sie sind daran interessiert, mehr darüber zu erfahrenkönnen Sie die Details überprüfen im folgenden Link.