Schwachstellen im Linux-Kernel, die es ermöglichen, die eigenen Privilegien ĂŒber nf_tables und ksmbd zu erhöhen

Im Netfilter, einem Kernsubsystem von Linux, das zur Filterung und Modifikation von Netzwerkpaketen verwendet wird, wurde eine SicherheitsanfĂ€lligkeit (CVE-2024-1086) entdeckt, die es einem lokalen Benutzer ermöglicht, Code auf Kernel-Ebene auszufĂŒhren und seine Privilegien im System zu erhöhen. Das Problem wird durch eine doppelte Speicherfreigabe (double-free) im nf_tables-Modul verursacht, das die Funktion des Paketfilters nftables unterstĂŒtzt. Der Sicherheitsforscher, der die Schwachstelle entdeckt hat, entwickelte und veröffentlichte einen funktionalen Exploit-Prototyp.

Die Funktionsweise des Exploits wurde in aktuellen Versionen von Debian und Ubuntu mit Linux-Kernen von 5.14 bis 6.6 sowie in einer Umgebung mit dem KernelCTF (Capture the Flag), welcher zusĂ€tzliche Patches zur Blockierung typischer Methoden von Exploits enthĂ€lt und von Google im Rahmen des Programms zur Vergabe von Belohnungen fĂŒr das Auffinden von SicherheitslĂŒcken verwendet wird, demonstriert. Die Erfolgsquote des Exploits wird auf 99,4 % geschĂ€tzt. In dem begleitenden Artikel wird der Prozess zur Erstellung eines komplexen mehrschichtigen Exploits sowie das Umgehen der im Kernel vorhandenen Schutzmechanismen und Abwehrmaßnahmen gegen Exploits detailliert erlĂ€utert.

Schwachstellen im Linux-Kernel, die es ermöglichen, die eigenen Privilegien ĂŒber nf_tables und ksmbd zu erhöhen

Das Problem ist mit einem Fehler in der Funktion nft_verdict_init() verbunden, die die Verwendung positiver Werte als Fehlercode fĂŒr das Abweisen von Paketen (DROP) in Hooks zulĂ€sst. Dies kann dazu verwendet werden, in der Funktion nf_hook_slow() einen erneuten Speicherfreigabebefehl fĂŒr einen Puffer auszulösen, fĂŒr den bereits die Funktion free() aufgerufen wurde. Das Problem tritt auf, wenn die Operation NF_DROP fĂ€lschlicherweise generiert wird und das Kernel zunĂ€chst NF_DROP interpretiert, dann jedoch den Puffer freigibt und den Status NF_ACCEPT zurĂŒckgibt. Diese Situation fĂŒhrt dazu, dass die Verarbeitung des mit dem Paket verbundenen Puffers trotz seiner Freigabe nicht gestoppt wird, sondern an einen anderen Handler weitergegeben wird, der seinerseits ein zweites Mal die Speicherfreigabefunktion aufruft.

Die Schwachstelle tritt seit der Kernel-Version 3.15 auf, der Exploit funktioniert jedoch mit Kerneln ab Version 5.14. Eine Behebung der Schwachstelle wurde mit der Kernel-Version 6.8-rc1 vorgeschlagen und Ende Februar in die stabilen Zweige 5.15.149, 6.1.76 und 6.6.15 integriert. In den Distributionen kann das Patchen der Schwachstelle auf den Seiten von Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora und Arch verfolgt werden.

ZusĂ€tzlich kann auf eine Reihe von Schwachstellen im ksmbd-Modul hingewiesen werden, das eine in den Linux-Kernel integrierte Implementierung von Dateisystemen anbietet. Server Basierend auf dem SMB-Protokoll: Die Schwachstelle CVE-2024-26592 ermöglicht es, aus der Ferne ohne Authentifizierung Code mit Kernelrechten auf Systemen mit aktiviertem ksmbd-Modul auszufĂŒhren. Das Problem wird durch einen Rennzustand im Code zur Verarbeitung von TCP-Verbindungen verursacht, der aufgrund des Fehlens geeigneter Sperren beim Arbeiten mit dem Objekt auftritt.

Die Schwachstelle CVE-2023-52440 ermöglicht ebenfalls das remote AusfĂŒhren eigenen Codes mit Kernelrechten, wird jedoch durch einen PufferĂŒberlauf bei der Verarbeitung fehlerhafter Session-Keys verursacht, da es an einer angemessenen ÜberprĂŒfung der GrĂ¶ĂŸe der vom Benutzer erhaltenen Daten vor deren Kopierung in einen Puffer fester GrĂ¶ĂŸe mangelt.

Die Schwachstellen (1, 2, 3) CVE-2024-26594, CVE-2023-52442 und CVE-2023-52441 in ksmbd ermöglichen es, aus der Ferne ohne Authentifizierung den Inhalt des Kernel-Speichers zu bestimmen. Die Schwachstelle CVE-2024-26594 wird durch eine fehlerhafte ÜberprĂŒfung der Daten bei der Verarbeitung empfangener SMB2 Mech-Tokens verursacht, was dazu fĂŒhrt, dass Daten aus dem Bereich außerhalb des Puffers zurĂŒckgegeben werden. Die Schwachstelle CVE-2023-52442 wird durch fehlende angemessene EingabewertĂŒberprĂŒfung bei der Verarbeitung von verknĂŒpften Anfragen verursacht. Die Schwachstelle CVE-2023-52441 ist auf das Fehlen der notwendigen EingabewertĂŒberprĂŒfung bei der Verarbeitung von SMB2-Verbindungsanfrage zurĂŒckzufĂŒhren.

Die Schwachstellen CVE-2024-26594 und CVE-2024-26592 wurden im Kernel 6.8 und in Korrektur-Updates der vergangenen stabilen Versionen 6.1.75, 6.6.14, 6.7.2 behoben. Die ĂŒbrigen Schwachstellen wurden im Kernel 6.5 und in den Updates 5.15.145, 6.1.53, 6.4.16 behoben.

Abschließend kann die Aktivierung eines neuen Teams von Kernel-Entwicklern erwĂ€hnt werden, das zur Analyse von SicherheitsanfĂ€lligkeiten und zur Bewertung des Zusammenhangs zwischen vorgenommenen Kernel-Änderungen und Sicherheitsproblemen eingerichtet wurde. Im Februar wurde vom Kernel-Team ein eigener CNA-Dienst (CVE Numbering Authority) eingerichtet, der die Befugnis zur eigenstĂ€ndigen Zuweisung von CVE-Identifikatoren fĂŒr SicherheitsanfĂ€lligkeiten erhĂ€lt. Zuvor lag die Zuweisung von CVE und die Analyse des Zusammenhangs von Änderungen mit möglichen SicherheitsanfĂ€lligkeiten in den HĂ€nden der Distribution-Entwickler, und im Kernel blieben potenzielle Schwachstellen unmarkiert und wurden zusammen mit gewöhnlichen Korrekturen behandelt. Die Ergebnisse der neuen Dienststelle haben alle Erwartungen ĂŒbertroffen – tĂ€glich werden im Kernel bis zu mehreren Dutzend neue SicherheitsanfĂ€lligkeiten markiert, die zuvor nicht als Sicherheitsprobleme angesehen wurden. Beispielsweise wurden am 26. MĂ€rz neue CVE-Identifikatoren fĂŒr 14 SicherheitsanfĂ€lligkeiten zugewiesen, die zuvor nicht als Sicherheitsprobleme betrachtet wurden, und am 25. MĂ€rz wurden 41 SicherheitsanfĂ€lligkeiten vermerkt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4