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 durch das Senden eines speziell formatierten L2CAP-Pakets über Bluetooth ausgenutzt werden kann. Darüber hinaus wurde ein weiteres ähnliches Problem (CVE-2022-42895) im L2CAP-Handler festgestellt, das zu einem Leak von Kernel-Speicherinhalt in Konfigurationspaketen führen kann. Die erste Schwachstelle ist seit August 2014 (Kernel 3.16) präsent, 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. Die Verfolgung der Behebungen in den Distributionen ist auf den folgenden Seiten möglich: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Zur Demonstration der Möglichkeit einer Remote-Attacke wurden Prototypen von Exploits veröffentlicht, die in Ubuntu 22.04 funktionieren. Für die Durchführung der Attacke muss sich der Angreifer innerhalb der Reichweite von Bluetooth befinden – eine vorherige Pairing ist nicht erforderlich, jedoch muss Bluetooth auf dem Computer aktiviert sein. Für den Angriff genügt es, die MAC-Adresse des Opfers zu kennen, die durch Sniffing ermittelt oder auf einigen Geräten auf der Grundlage der MAC-Adresse des WLANs 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 der Erstellung eines Kanals durch den Callback-Aufruf new_connection wurde keine Sperre gesetzt, aber ein Timer (__set_chan_timer) aktiviert, der nach Ablauf des Timeouts die Funktion l2cap_chan_timeout aufruft und den Kanal ohne Überprüfung des Abschlusses der Arbeit mit dem Kanal in den Funktionen l2cap_le_connect* bereinigt.
Der Standard-Timer beträgt 40 Sekunden, und es wurde angenommen, dass bei dieser Verzögerung kein Race Condition auftreten kann; jedoch stellte sich heraus, dass aufgrund eines weiteren Fehlers im SMP-Handler ein sofortiger Timeraufruf und das Erreichen eines Race Conditions möglich sind. Das Problem in l2cap_le_connect_req kann zu einem Leak von Kernel-Speicher führen, und in l2cap_connect kann es zu einer Überschreibung des Speicherinhalts und der Ausführung eigenen Codes kommen. Die erste Angriffsvariante 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 das Auslesen von Restdaten aus dem Speicher in der Funktion l2cap_parse_conf_req verursacht, was genutzt werden kann, um aus der Ferne Informationen über Zeiger auf Kernelstrukturen 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, und durch Manipulation des FLAGS FLAG_EFS_ENABLE konnte das Einfügen alter Daten aus dem Stack in das Paket erreicht werden. Das Problem tritt nur in Systemen auf, in 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 außerdem die Einstellung des Parameters HCI_HS_ENABLED über die Steueroberfläche auf true erforderlich (standardmäßig nicht verwendet).
Quelle: opennet.ru
