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値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/03/29 |
| 登録日 | 2026/04/27 |
| 最終更新日 | 2026/04/27 |



