Linux カーネルに脆弱性 (CVE-2022-42896) が見つかりました。この脆弱性により、特別に細工された L2CAP パケットを Bluetooth 経由で送信することで、カーネル レベルでのリモート コード実行が可能になる可能性があります。さらに、L2022CAP ハンドラーで同様の問題 (CVE-42895-2) が発見され、構成情報パケットでカーネル メモリ リークが発生する可能性があります。最初の脆弱性は 2014 年 3.16 月 (カーネル 2011) から存在しており、3.0 番目の脆弱性は 6.1.0 年 6.0.8 月 (カーネル 4.9.333) から存在しています。これらの脆弱性は、Linux カーネル リリース 4.14.299、4.19.265、5.4.224、5.10.154、5.15.78、XNUMX、XNUMX、および XNUMX で修正されました。ディストリビューションの修正は、次のページで追跡できます: Debian、Ubuntu、Gentoo、RHEL、SUSE、Fedora、Arch。
リモート攻撃を実行する可能性を示すために、Ubuntu 22.04 で動作するエクスプロイトのプロトタイプが公開されました。攻撃を実行するには、攻撃者は Bluetooth の範囲内にいる必要があります。事前のペアリングは必要ありませんが、コンピューター上で Bluetooth がアクティブになっている必要があります。攻撃を実行するには、被害者のデバイスの MAC アドレスがわかれば十分です。この MAC アドレスは、スニッフィングによって特定できますが、一部のデバイスでは Wi-Fi MAC アドレスに基づいて計算することもできます。
最初の脆弱性(CVE-2022-42896)は、l2cap_connect 関数と l2cap_le_connect_req 関数の実装における、すでに解放されているメモリ領域へのアクセス(解放後使用)によって発生します。new_connection コールバックを介してチャネルを作成した後、そのチャネルにロックが設定されず、タイマー(__set_chan_timer)が設定されました。これにより、タイムアウトの期限が切れると、l2cap_chan_timeout 関数が呼び出され、l2cap_le_connect* 関数でチャネルの作業の完了を確認せずにチャネルがクリアされました。
デフォルトのタイムアウトは 40 秒であり、このような遅延では競合状態は発生しないものと想定されていましたが、SMP ハンドラーの別のバグにより、タイマーが即座に呼び出され、競合状態が発生する可能性があることが判明しました。 l2cap_le_connect_req の問題によりカーネル メモリ リークが発生する可能性があり、l2cap_connect ではメモリの内容を上書きして独自のコードを実行する可能性があります。最初の攻撃バリアントは Bluetooth LE 4.0 (2009 年以降) を使用して実行され、5.2 番目の攻撃バリアントは Bluetooth BR/EDR 2020 (XNUMX 年以降) を使用して実行される可能性があります。
2022 番目の脆弱性 (CVE-42895-2) は、l2cap_parse_conf_req 関数の残留メモリ リークが原因で発生し、特別に細工された構成要求を送信することで、カーネル構造へのポインターに関する情報をリモートで取得できる可能性があります。 l2cap_parse_conf_req 関数は、割り当てられたメモリの事前初期化が実行されない lXNUMXcap_conf_efs 構造体を使用しましたが、FLAG_EFS_ENABLE フラグを操作することで、スタックから古いデータをパケットに含めることができました。この問題は、カーネルが CONFIG_BT_HS オプション (デフォルトでは無効ですが、Ubuntu などの一部のディストリビューションでは有効になっています) を使用してコンパイルされているシステムでのみ発生します。攻撃を成功させるには、制御インターフェースを介して HCI_HS_ENABLED パラメータを true に設定する必要もあります (デフォルトでは使用されません)。
出所: オープンネット.ru
