Bluetooth 経由でリモートから悪用される Linux カーネルの脆弱性

Linux カーネルに脆弱性 (CVE-2022-42896) が確認されました。この脆弱性は、特別に作成された L2CAP パケットを Bluetooth 経由で送信することにより、カーネル レベルでリモート コードの実行を組織するために使用される可能性があります。 さらに、構成情報パケット内のカーネル メモリの内容が漏洩する可能性がある別の同様の問題 (CVE-2022-42895) が L2CAP ハンドラーで確認されています。 最初の脆弱性は 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 関数の実装で、すでに解放されたメモリ領域 (use-after-free) にアクセスすることによって引き起こされます。コールバック呼び出し 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

コメントを追加します