Im Linux-Kernel wurde eine Schwachstelle (CVE-2022-42896) entdeckt, die potenziell für die Durchführung von Remote-Code-Ausführungen auf Kernel-Ebene genutzt werden kann, indem ein speziell gestaltetes L2CAP-Paket über Bluetooth gesendet wird. Darüber hinaus wurde ein weiteres ähnliches Problem (CVE-2022-42895) im L2CAP-Handler identifiziert, das zu einem Leak von Kernel-Speicherinhalt in Konfigurationspaketen führen kann. Die erste Schwachstelle ist seit August 2014 aktiv (Kernel 3.16), die zweite seit Oktober 2011 (Kernel 3.0). Die Schwachstellen wurden in den 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. Die Behebung in den Distributionen kann auf den folgenden Seiten verfolgt werden: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Um die Möglichkeit eines Remote-Angriffs zu demonstrieren, wurden Prototypen von Exploits veröffentlicht, die unter Ubuntu 22.04 funktionieren. Für die Durchführung des Angriffs muss sich der Angreifer innerhalb der Reichweite von Bluetooth befinden – eine vorherige Kopplung ist nicht erforderlich, jedoch muss Bluetooth auf dem Computer aktiviert sein. Es reicht aus, die MAC-Adresse des Zielgeräts zu kennen, die durch Sniffing ermittelt werden kann oder bei einigen Geräten basierend auf der MAC-Adresse des WLANs berechnet wird.
Die erste Schwachstelle (CVE-2022-42896) tritt auf, wenn auf einen bereits freigegebenen Speicherbereich (Use-after-free) zugegriffen wird, und betrifft die Implementierung der Funktionen l2cap_connect und l2cap_le_connect_req – nach der Erstellung des Kanals durch den Callback-Aufruf new_connection wurde keine Sperre gesetzt, aber ein Timer (__set_chan_timer) eingestellt, der nach Ablauf der Zeit die Funktion l2cap_chan_timeout aufruft und den Kanal ohne Überprüfung des Kanalabschlusses in den Funktionen l2cap_le_connect* löscht.
Standardmäßig beträgt das Timeout 40 Sekunden, und es wurde angenommen, dass bei dieser Verzögerung kein Zustand des Wettlaufs auftreten kann. Es stellte sich jedoch heraus, dass durch einen anderen Fehler im SMP-Handler ein sofortiger Timeraufruf und das Erreichen eines Wettlaufzustands möglich sind. Das Problem in l2cap_le_connect_req kann zu einem Speicherleck im Kernel führen, während l2cap_connect den Inhalt des Speichers überschreiben und eigenen Code ausführen kann. Der erste Angriff kann beim Einsatz von Bluetooth LE 4.0 (seit 2009) durchgeführt werden, der zweite beim Einsatz von Bluetooth BR/EDR 5.2 (seit 2020).
Die zweite Schwachstelle (CVE-2022-42895) entsteht durch das Auslesen von Restdaten aus dem Speicher in der Funktion l2cap_parse_conf_req, was genutzt werden kann, um aus der Ferne Informationen über Zeiger auf Kernstrukturen zu erhalten, indem speziell formatierte Konfigurationsanfragen gesendet werden. In der Funktion l2cap_parse_conf_req wurde eine l2cap_conf_efs-Struktur verwendet, für die keine vorherige Initialisierung des zugewiesenen Speichers durchgeführt wurde. Durch Manipulation des Flags FLAG_EFS_ENABLE konnte man alte Daten aus dem Stack in das Paket einfügen. Das Problem tritt nur in Systemen auf, bei denen der Kernel mit der Option CONFIG_BT_HS (standardmäßig deaktiviert, aber in einigen Distributionen wie Ubuntu aktiviert) kompiliert wurde. Für einen erfolgreichen Angriff ist zudem erforderlich, dass der Parameter HCI_HS_ENABLED über die Verwaltungsoberfläche auf true gesetzt wird (standardmäßig nicht verwendet).
Quelle: opennet.ru
