JVNDB-2026-023184 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。x86/efi: FPUのsoftirq変更後のグレースフルなフォールト処理の修正(コミット d02198550423 "x86/fpu: カーネルモードのFPUをsoftirq内で確実に利用可能にして暗号処理性能を向上")以降、kernel_fpu_begin() は fpregs_lock() を呼び出し、これは以前の preempt_disable() の代わりに local_bh_disable() を使用しています。これにより、EFIランタイムサービス呼び出しの間、preempt_count に SOFTIRQ_OFFSET が設定され、通常のタスクコンテキストでも in_interrupt() が true を返すようになりました。グレースフルページフォールトハンドラ efi_crash_gracefully_on_page_fault() は、実際の割り込みコンテキストでのフォールトを判別するために in_interrupt() を使って処理を終了します。しかし、SOFTIRQ_OFFSET が設定されたことで、このハンドラは常に終了してしまい、EFIファームウェアのページフォールトが処理されなくなりました。その結果、die() にエスカレートし、ここでも in_interrupt() が true と認識されて panic("Fatal exception in interrupt") が呼び出されるため、システムがハードフリーズします。バグのあるファームウェアを搭載したシステムでは、EFIランタイム呼び出し中にページフォールトが発生すると(例:GetTime()で未マッピングのメモリにアクセスした場合)、期待されるグレースフルな EFI_ABORTED による回復の代わりに回復不能なハングが発生します。修正内容は in_interrupt() を !in_task() に置き換えることです。これにより、割り込みまたはNMIでのフォールトについては元の意図どおりに処理しつつ、FPUコードパスの local_bh_disable() によって誤ってトリガーされる問題を回避できます。【補足】arbdのSashikoによると、『in_hardirq() || in_nmi()』を使うと、fpregs_lock() 呼び出し前に efi_rts_work.efi_rts_id が割り当てられた後に softirq が発生する可能性があり、その間に発生したページフォールトが誤ってファームウェア由来と判断されてしまうため、!in_task() を使用するのが望ましいとのことです。これは in_serving_softirq() を内包しています。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/08 |
| 登録日 | 2026/07/10 |
| 最終更新日 | 2026/07/10 |



