Über Bluetooth aus der Ferne ausgenutzte Sicherheitslücken im Linux-Kernel

Im Linux-Kernel wurde eine Schwachstelle identifiziert (CVE-2022-42896), die potenziell dazu genutzt werden könnte, die Remote-Codeausführung auf Kernel-Ebene zu organisieren, indem ein speziell entwickeltes L2CAP-Paket über Bluetooth gesendet wird. Darüber hinaus wurde ein weiteres ähnliches Problem (CVE-2022-42895) im L2CAP-Handler identifiziert, das zu einem Verlust von Kernel-Speicherinhalten in Paketen mit Konfigurationsinformationen führen kann. Die erste Schwachstelle tritt seit August 2014 (Kernel 3.16) auf, die zweite seit Oktober 2011 (Kernel 3.0). Die Schwachstellen wurden in den Linux-Kernel-Versionen 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 und 5.15.78 behoben. Sie können die Korrekturen in den Distributionen auf den folgenden Seiten verfolgen: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Um die Möglichkeit eines Remote-Angriffs zu demonstrieren, wurden Prototyp-Exploits veröffentlicht, die unter Ubuntu 22.04 funktionieren. Um einen Angriff durchzuführen, muss sich der Angreifer in Bluetooth-Reichweite befinden – eine vorherige Kopplung ist nicht erforderlich, Bluetooth muss jedoch auf dem Computer aktiv sein. Für einen Angriff reicht es aus, die MAC-Adresse des Geräts des Opfers zu kennen, die durch Sniffing ermittelt oder bei manchen Geräten anhand der WLAN-MAC-Adresse berechnet werden kann.

Die erste Schwachstelle (CVE-2022-42896) wird durch den Zugriff auf einen bereits freigegebenen Speicherbereich (Use-after-free) in der Implementierung der Funktionen l2cap_connect und l2cap_le_connect_req verursacht – nach dem Erstellen eines Kanals durch den Rückruf new_connection wurde keine Sperre gesetzt Dafür wurde jedoch ein Timer eingestellt (__set_chan_timer), der nach Ablauf des Timeouts die Funktion l2cap_chan_timeout aufruft und den Kanal löscht, ohne den Abschluss der Arbeit mit dem Kanal in den Funktionen l2cap_le_connect* zu überprüfen.

Das Standard-Timeout beträgt 40 Sekunden und es wurde angenommen, dass bei einer solchen Verzögerung keine Race-Bedingung auftreten konnte. Es stellte sich jedoch heraus, dass es aufgrund eines anderen Fehlers im SMP-Handler möglich war, einen sofortigen Aufruf des Timers zu erreichen und eine zu erreichen Rennbedingung. Ein Problem in l2cap_le_connect_req kann zu einem Kernel-Speicherleck führen, und in l2cap_connect kann es dazu führen, dass der Inhalt des Speichers überschrieben und der Code ausgeführt wird. Die erste Angriffsart kann mit Bluetooth LE 4.0 (seit 2009) durchgeführt werden, die zweite mit Bluetooth BR/EDR 5.2 (seit 2020).

Die zweite Schwachstelle (CVE-2022-42895) wird durch ein Restspeicherleck in der Funktion l2cap_parse_conf_req verursacht, mit der durch das Senden speziell gestalteter Konfigurationsanfragen aus der Ferne Informationen über Zeiger auf Kernelstrukturen abgerufen werden können. Die Funktion l2cap_parse_conf_req verwendete die Struktur l2cap_conf_efs, für die der zugewiesene Speicher nicht vorinitialisiert wurde und durch Manipulation des FLAG_EFS_ENABLE-Flags war es möglich, alte Daten aus dem Stapel in das Paket aufzunehmen. Das Problem tritt nur auf Systemen auf, auf denen der Kernel mit der Option CONFIG_BT_HS erstellt wird (standardmäßig deaktiviert, aber auf einigen Distributionen wie Ubuntu aktiviert). Für einen erfolgreichen Angriff ist es außerdem erforderlich, den Parameter HCI_HS_ENABLED über die Verwaltungsschnittstelle auf „true“ zu setzen (standardmäßig nicht verwendet).

Source: opennet.ru

Kommentar hinzufügen