CVE-2026-31426 in Linux情報

要約

〜によって VulDB • 2026年05月27日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

ACPI: EC: acpi_ec_setup() におけるプローブ失敗時のハンドラクリーンアップ

ec_install_handlers() が低電力プラットフォーム上で -EPROBE_DEFER を返した場合、EC は既に起動され、struct acpi_ec ポインタをハンドラコンテキストとして用いてアドレス空間ハンドラがインストールされています。しかし、acpi_ec_setup() はクリーンアップ処理を行わずにエラーを伝播します。

その後、呼び出し元の acpi_ec_add() は、ブート以外のインスタンスに対して struct acpi_ec を解放し、ACPICA 内にダングリングハンドラコンテキストを残してしまいます。

EC OpRegion フィールドにアクセスするその後の AML 評価は、解放されたポインタを伴って acpi_ec_space_handler() へディスパッチされ、use-after-free を引き起こします:

BUG: KASAN: slab-use-after-free in mutex_lock (kernel/locking/mutex.c:289) Write of size 8 at addr ffff88800721de38 by task init/1 Call Trace: <TASK> mutex_lock (kernel/locking/mutex.c:289) acpi_ec_space_handler (drivers/acpi/ec.c:1362) acpi_ev_address_space_dispatch (drivers/acpi/acpica/evregion.c:293) acpi_ex_access_region (drivers/acpi/acpica/exfldio.c:246) acpi_ex_field_datum_io (drivers/acpi/acpica/exfldio.c:509) acpi_ex_extract_from_field (drivers/acpi/acpica/exfldio.c:700) acpi_ex_read_data_from_field (drivers/acpi/acpica/exfield.c:327) acpi_ex_resolve_node_to_value (drivers/acpi/acpica/exresolv.c:392) </TASK>

タスク 1 によって割り当て: acpi_ec_alloc (drivers/acpi/ec.c:1424) acpi_ec_add (drivers/acpi/ec.c:1692)

タスク 1 によって解放: kfree (mm/slub.c:6876) acpi_ec_add (drivers/acpi/ec.c:1751)

このバグは、GPIO IRQ プロバイダがプロービングを延期する低電力 EC プラットフォーム (ec->gpe < 0) でトリガーします。一度古いハンドラが存在すると、AML が EC OpRegion (バッテリー、サーマル、バックライト) にアクセスする無権限の sysfs 読み込み操作によって、ダングリングポインタが利用されます。

first_ec をクリアする前に acpi_ec_setup() のエラーパスで ec_remove_handlers() を呼び出すことで、この問題を修正します。ec_remove_handlers() は処理を行う前に各 EC_FLAGS_* ビットをチェックするため、ec_install_handlers() の処理がどこまで進んだかに関わらず安全に呼び出すことができます:

-ENODEV (ハンドラ未インストール): acpi_ec_stop() のみを呼び出す -EPROBE_DEFER (ハンドラインストール済み): ハンドラを削除し、EC を停止する

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年03月09日

モデレーション

承諾済み

エントリ

VDB-357153

EPSS

0.00111

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!