LinuxカーネルのRustバインダーに深刻な脆弱性、システムクラッシュの恐れ

はじめに

LinuxカーネルのRust Binderモジュールにおいて、深刻な競合状態の脆弱性が発見されました。この脆弱性(CVE-2025-68260)は、システムクラッシュやメモリ破損を引き起こす可能性があり、カーネルのプロセス間通信メカニズムに影響を与えます。システム管理者およびカーネル開発者は、この問題に早急な対応が求められます。

脆弱性の詳細

この脆弱性は、Rust Binderコンポーネントのdeath_list処理メカニズムに存在します。問題の核心は、同期が不適切なままリンクリストからアイテムを削除する安全でない操作にあります。影響を受けるコードは、排他的アクセスを確保せずにリストポインタを操作しようとするため、危険な競合状態を生み出します。

この問題は、Node::release関数における特定の実装パターンに起因します。コードのシーケンスは、ロックの取得、リストアイテムのスタックベースのローカルリストへの移動、そしてアイテムの反復処理の前にロックを解放するというものです。他のスレッドが元のリストを処理している間に、prev/nextポインタへの同時アクセスが可能となる時間的窓が生まれるため、メモリ破損につながる可能性があります。

システムへの影響

この競合状態がトリガーされると、システムはカーネルパニックやページフォールトを経験します。影響を受けるデバイスは、「virtual addressでカーネルページング要求を処理できません」といったエラーでクラッシュします。この脆弱性は内部的なメモリ破損として現れ、カーネルのoopsメッセージやシステム不安定性をもたらします。脆弱なカーネルバージョンを実行しているデバイスでは、予期せぬ再起動やサービスの中断が発生する可能性があります。

脆弱性の発生と対策

この脆弱性は、カーネルバージョン6.18でバインダーコードへの特定のコミット変更により導入されました。drivers/android/binder/node.rsファイルが直接影響を受けます。この問題は、カーネル6.18.1および6.19-rc1でパッチが適用されており、アップストリームのカーネルリポジトリで修正が利用可能です。

Linuxカーネル開発チームは、最新の安定版カーネルバージョンへの更新を強く推奨しています。変更はより大規模なリリースの一部としてテストされるため、個別のコミットのチェリーピックよりも完全なカーネルアップデートが推奨されます。すぐにアップデートできないユーザーは、この競合状態を解決するために、カーネルリポジトリから特定のコミットを適用することも可能です。システム管理者は、システムの安定性を維持し、予期せぬダウンタイムを防ぐために、この脆弱性へのパッチ適用を優先すべきです。


元記事: https://gbhackers.com/new-linux-kernel-rust-vulnerability/