【活用ガイド】

JVNDB-2026-012698

LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:rust_binderにおいてprocロックを保持せずにset_notification_done()が呼び出されていなかった問題です。デスリスナーでのイベントの流れは次の通りです。1. リモートプロセスが終了し、BR_DEAD_BINDERメッセージを送信します。2. ローカルプロセスがBC_CLEAR_DEATH_NOTIFICATIONコマンドを呼び出します。3. ローカルプロセスがBC_DEAD_BINDER_DONEを呼び出します。この後、カーネルはpush_work_if_looper()を使ってBC_DEAD_BINDER_DONEコマンドにBR_CLEAR_DEATH_NOTIFICATION_DONEの返信を行います。しかし、現在のスレッドがlooperでない場合、デッドロックが発生する可能性があります。なぜなら、dead_binder_done()はset_notification_done()の間にprocロックを保持しており、そのset_notification_done()でpush_work_if_looper()が呼ばれるためです。通常、push_work_if_looper()はスレッドロックを取得し、procロック下で取得するのは問題ありません。しかし、現在のスレッドがlooperでない場合は、返信をプロセスのワークキューに配送するためにprocロックを再度取得しようとするため、procロックが既に保持されていることでデッドロックが発生します。この問題はset_notification_done()の実行時にprocロックを解放することで修正されました。もともとこの関数内でprocロックを保持する意図はありませんでした。AndroidではBC_DEAD_BINDER_DONEはBR_DEAD_BINDERメッセージに対する応答としてのみ呼び出され、カーネルは常にBR_DEAD_BINDERをlooperに配送するため、この状況は発生しないと考えられています。つまり、Androidユーザースペースが非looperスレッドでBC_DEAD_BINDER_DONEを呼び出すシナリオは存在しません。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.18.1 以上 6.18.19 未満
  • Linux Kernel 6.19 以上 6.19.9 未満
  • Linux Kernel 6.18
  • Linux Kernel 7.0

想定される影響

当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
また、当該ソフトウェアが扱う情報について、書き換えは発生しません。
さらに、当該ソフトウェアが完全に停止する可能性があります。
そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 不適切なロック(CWE-667) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-23400
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-23400
  2. 関連文書 : rust_binder: call set_notification_done() without proc lock - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3be72099067d2cd4a0e089696f19780f75b2b88a)
  3. 関連文書 : rust_binder: call set_notification_done() without proc lock - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/dd109e3442817bc03ad1f3ffd541092f8c428141)
  4. 関連文書 : rust_binder: call set_notification_done() without proc lock - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/2e303f0febb65a434040774b793ba8356698802b)
更新履歴

  • [2026年04月27日]
      掲載