Linux カーネルの IPv6 スタックに脆弱性があり、リモートでコードが実行される

Linux カーネルのネットワーク スタックの脆弱性 CVE-2023-6200) に関する情報が公開されました。この脆弱性により、特定の状況下で、攻撃者がローカル ネットワークから特別に設計された ICMPv6 パケットを送信してコードを実行できるようになります。ルーターに関する情報をアドバタイズすることを目的とした RA (ルーター アドバタイズメント) メッセージ。

この脆弱性はローカル ネットワークからのみ悪用可能であり、IPv6 サポートが有効で、sysctl パラメータ「net.ipv6.conf.<network_interface_name>.accept_ra」がアクティブになっているシステムで発生します(コマンド「sysctl net.ipv6.conf」で確認できます)。 | grep accept_ra”) は、RHEL および Ubuntu では外部ネットワーク インターフェイスに対してデフォルトで無効になっていますが、ループバック インターフェイスに対しては有効になっているため、同じシステムからの攻撃が許可されます。

この脆弱性は、ガベージ コレクターが古い fib6_info レコードを処理する際の競合状態によって引き起こされ、既に解放されたメモリ領域 (解放後の使用) へのアクセスにつながる可能性があります。ルーター アドバタイズメント メッセージ (RA、ルーター アドバタイズメント) を含む ICMPv6 パケットを受信すると、ネットワーク スタックは ndisc_router_discovery() 関数を呼び出します。RA メッセージにルートの有効期間に関する情報が含まれている場合、この関数は fib6_set_expires() 関数を呼び出して、gc_link を埋めます。構造。古いエントリをクリーンアップするには、 fib6_clean_expires() 関数を使用します。この関数は、gc_link 内のエントリを切り離し、fib6_info 構造体によって使用されているメモリをクリアします。この場合、fib6_info 構造体のメモリがすでに解放されている特定の瞬間がありますが、その構造体へのリンクは引き続き gc_link 構造体にあります。

この脆弱性はブランチ 6.6 から発生し、バージョン 6.6.9 および 6.7 で修正されました。ディストリビューションの脆弱性の修正状況は、Debian、Ubuntu、SUSE、RHEL、Fedora、Arch Linux、Gentoo、Slackware のページで評価できます。 6.6 カーネルを含むパッケージを出荷するディストリビューションの中には、Arch Linux、Gentoo、Fedora、Slackware、OpenMandriva、Manjaro が挙げられますが、他のディストリビューションでは、エラーを伴う変更が古いカーネル ブランチのパッケージにバックポートされる可能性があります (たとえば、Debian では、カーネル 6.5.13 のパッケージには脆弱性があると記載されていますが、問題のある変更は 6.6 ブランチで発生しました)。セキュリティの回避策として、IPv6 を無効にするか、「net.ipv0.conf.*.accept_ra」パラメータを 6 に設定できます。

出所: オープンネット.ru

コメントを追加します