CVE-2025-68260は、メインラインLinuxカーネルのRustコードに割り当てられた最初のCVEとして広く知られている。この脆弱性は、RustベースのAndroid Binderドライバー(錆びバインダーつまり、侵入したリンクリストのポインタを破損させ、カーネルの oops/panic(サービス拒否)を引き起こす可能性のあるレースコンディションである。)
このことは、セキュリティ・チームにとって2つの理由から重要である。第一に、「クラッシュのみ」のカーネル・バグは、特に高可用性やマルチテナント環境において、依然として実際の運用に影響を与える。特に、高可用性環境やマルチテナント環境ではそうだ。第二に、暴露される範囲は設定に依存する。
セキュリティ・エンジニアのためのエグゼクティブ・サマリー
- CVEだ: CVE-2025-68260
- コンポーネント Linux カーネル Rust Android Binder ドライバ (
錆びバインダーを含む)。ノード::リリースそして死亡リストハンドリング - バグクラス: レース状態+安全でない侵入的なリスト操作→ポインタ破損
- インパクトがある: カーネル・クラッシュ/DoS(公表済み)
- 露出の仕方は人それぞれだ: ラストバインダーが有効になっているか/選択されているか(例.
アンドロイドバインダー_ipc_錆,バインダー) - NVDのステータス 記事執筆時点では「分析待ち」(CVSSは保留の可能性あり)
CVE-2025-68260の正体:Rust Binderドライバの並行性バグ
NVDレコードには、侵入型リンクリストに対する特定の安全でない削除操作が記述されている。この操作は、他のスレッドが同時に要素の 前/次 ポインタを使用する。でロック・ドロッピング・パターンが発生したときに失敗する。 ノード::リリース 同時多発的な安全でない 取り除くリンクリストの破損やクラッシュにつながる。
NVDには、破損したリスト・ポインタに関連する代表的なカーネル・クラッシュの症状(「Unable to handle kernel paging request...」)が含まれており、微妙なロジックの欠陥ではなく、クラッシュ・クラスの脆弱性と一致している。
問題となるパターンの簡単な概念的スケッチは次のようなものである(直感的なものであり、悪用するものではない):
// 概念的なスケッチ(完全なカーネルコードではない):
lock(death_list);
move_all_items_to_local_list();
ロック解除(death_list);
// ロックなしで反復処理
for item in local_list { // アイテムを処理する
// アイテムを処理する
}
// 並行スレッドでも可能:
unsafe { death_list.remove(item) } // 前後のポインタに触れる// prev/nextポインタに触れる
// => データ・レース => ポインタ破損 => カーネル・クラッシュ
重要なのは並行性不変性である。侵入的なリストポインターを安全に扱うには排他的アクセス保証が必要であり、ロックフリーのトラバーサル中にリスト要素を並列に変更できる場合、その保証は破綻する。
これが "最初のRustカーネルCVE "となった理由
グレッグ・クロア=ハートマン(安定版メンテナ)は、この問題をRustコードの最初のカーネルCVEと公言し、「単にクラッシュを引き起こすだけ」であり、武器として使用可能なメモリ破壊への道を示すものではないと強調した。
このような枠組みは、運用上有用である。セキュリティチームが、悪用可能性について誇張することを避けながら、設定に依存した暴露を伴う可用性リスクとしてバグをトリアージするのに役立つからである。
影響を受けるシステムバージョンのタイムラインと設定の現実
タイムラインとエクスポージャーのモデルを支えているのは、2つの事実である:
- RustのAndroid BinderドライバがLinuxにマージされた v6.18-rc1Rust for Linuxプロジェクトのドキュメントによれば。
- Androidのカーネル・コンフィギュレーションは、Rust変種を含むBinder実装の選択を明示的にサポートしている。Kconfigのドキュメントでは
バインダーカーネルコマンドラインノブとして、実装を選択するために使用され、デフォルトを支配するオプションが含まれています。
つまり、暴露は "すべてのLinux "ではないのだ。一般的なサーバー群では、Rust Binderが有効になることはないかもしれない。しかし、Androidに特化したカーネル、Androidコンテナスタックを実行する開発マシン、またはRust Binder実装を有効にするカスタムビルドは、CVE-2025-68260を対処可能なものとして扱う必要がある。
バインダー自体は、Androidの基本的なIPCメカニズムであり、Androidのアーキテクチャ資料で広く文書化されている。
クイック露出チェック(監査可能、エクスプロイトコンテンツなし)
これらのコマンドを使って、自分の環境がスコープ内にあるかどうかを判断する。
カーネルバージョン
uname -r
カーネル設定:Rust + Binder + Rust Binder
# Distro スタイルの /boot 設定 (多くのシステムで共通)
grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST" /boot/config-$(uname -r) 2>/dev/null
# /proc/config.gz が有効な場合
zcat /proc/config.gz 2>/dev/null | grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST"
バインダ実装の選択(Androidカーネルはbinder.implを使用することが多い)
cat /proc/cmdline | tr ' ' \n' | grep -E '^binder.impl='
について バインダー パラメータは、AndroidカーネルのKconfigに実装選択動作の一部として文書化されている。
クラッシュシグナルハンチング(症状のみ)
dmesg -T | egrep -i "rust_binder|binder|Unable to handle|paging request|Oops|KASAN" | tail -n 200
改善戦略:アップグレードが先、実際のCIでバックポートのみ
最も安全なアプローチは、修正を含む安定したカーネルリリースに移行することです。パブリックカバレージでは、カーネルの安定性とテストの慣行に従って、孤立したコミットをチェリーピックするのではなく、安定したカーネルにアップグレードすることを強調しています。
NVDレコードには、修正のコンテキストを追跡するkernel.orgソースへの参照が含まれている。
カスタムAndroidカーネルを使用していて、すぐにアップグレードできない場合、エンジニアリング・パスは一般的に次のようになります:修正プログラムをメンテナンス済みのパッチセットにバックポートし、Binderを多用するワークロードで検証する。しかし、ほとんどの企業にとって、現実的な選択は以下の通りです: ベンダーの最新情報を消費する (ディストロ/OEM/GKI チャネル)、および修復の証拠を文書化する。
トリアージ・テーブル
| フィールド | 価値 |
|---|---|
| CVE | CVE-2025-68260 |
| コンポーネント | Rust Android Binder ドライバ (錆びバインダー), ノード::リリース / 死亡リスト パス |
| 脆弱性クラス | レース状態 + 安全でない侵入的なリストポインタの破損 |
| 最悪の場合の影響 | カーネルクラッシュ/DoS(公開記述) |
| 被曝の度合い | ラストバインダーが有効/選択されている (アンドロイドバインダー_ipc_錆, バインダー) |
| NVDエンリッチメント | 「分析待ち」(保留の可能性あり) |
コンテキスト優先順位付けのための関連カーネルCVE
CVE-2025-68260はクラッシュクラスと公表されている。優先順位付けのために、多くの組織は特権の影響がより明確なカーネルCVEをベンチマークとしています:
- CVE-2019-2215 (Android Binder UAF / EoP): NVDは、バインダーのユース・アフター・フリーによる特権の昇格について説明している。
- CVE-2022-0847 ("Dirty Pipe"): CISAが警告を発した。
- CVE-2024-1086 (nf_tables UAF / LPE): NVDとRed Hatは、netfilter/nf_tablesのuse-after-freeからLPEの可能性を要約している。
実用的な教訓:Binder/Rust Binderがアクティブに使用され、クラッシュがビジネスに影響を与える場合は、CVE-2025-68260を最優先で扱い、そうでない場合は、「最初のRust CVE」という見出しで、より広く到達可能なLPEクラスのカーネル問題を置き去りにしないこと。
ペンリゲントによる対応の運用
設定に依存するカーネルCVEの場合、ボトルネックはアドバイザリを読むことではなく、"どこで公開されているか "と "実際に修正されたか "に対する防御可能でスケーラブルな回答を作成することです。Penligentは、CVE-2025-68260を反復可能なエビデンスワークフローに変えることで、このサイクルを合理化することができます。 バインダー を選択し、裏付けとなる参考資料を添付した監査対応可能な改善報告書を作成する。このアプローチは、悪用ではなく、検証と終結のために設計されている。
NVDCVE-2025-68260
https://nvd.nist.gov/vuln/detail/CVE-2025-68260
Greg Kroah-Hartman による通知 (クラッシュのフレーム化; 最初の Rust カーネル CVE)
https://social.kernel.org/notice/B1JLrtkxEBazCPQHDM
SecurityOnlineの取材
https://securityonline.info/rusts-first-breach-cve-2025-68260-marks-the-first-rust-vulnerability-in-the-linux-kernel/
Linux用Rust:Android Binder Driver (v6.18-rc1 にマージ)
https://rust-for-linux.com/android-binder-driver
Android カーネル Kconfig (Binder Rust オプション; binder.impl 選択)
https://android.googlesource.com/kernel/common/+/refs/tags/android15-6.6-2024-07_r44/drivers/android/Kconfig
AndroidのドキュメントバインダーIPCの概要
https://source.android.com/docs/core/architecture/hidl/binder-ipc
NVDCVE-2019-2215
https://nvd.nist.gov/vuln/detail/CVE-2019-2215
プロジェクト・ゼロ RCA: CVE-2019-2215
https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2019/CVE-2019-2215.html
NVDCVE-2022-0847
https://nvd.nist.gov/vuln/detail/CVE-2022-0847
CISAアラート:ダーティ・パイプ
https://www.cisa.gov/news-events/alerts/2022/03/10/dirty-pipe-privilege-escalation-vulnerability-linux
NVDCVE-2024-1086
https://nvd.nist.gov/vuln/detail/cve-2024-1086
レッドハット:CVE-2024-1086
https://access.redhat.com/security/cve/cve-2024-1086

