【活用ガイド】

JVNDB-2026-019298

LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。HID: appletb-kbdにおける非アクティブタイマーのクリーンアップパスに関するUse-After-Free(UAF)の問題です。修正はCommit 38224c472a03("HID: appletb-kbd: fix slab use-after-free bug in appletb_kbd_probe")で行われ、probeのclose_hwエラーパスとappletb_kbd_remove()の両方にtimer_delete_sync(&kbd-inactivity_timer)が追加されました。しかし、その結線方法によりドライバーの停止時に非アクティブタイマーが二つの異なるタイミングで到達可能な状態が残っていました。ウィンドウAでは、timer_delete_sync()の前にput_device()が呼ばれます(put_device(&kbd-backlight_dev-dev)の後にtimer_delete_sync(&kbd-inactivity_timer))。inactivity_timerのsoftirqはkbd-backlight_devを読み取り、backlight_device_set_brightness()を呼び出し、その中でmutex_lock(&ops_lock)が呼ばれます。もし同時にhid_appletb_blのunbindがこれら二つの呼び出しの間で最後のdevm参照を解放すると、backlight_deviceが解放され、mutex_lock()が解放済みメモリにアクセスする危険があります。ウィンドウBでは、backlightクリーンアップがhid_hw_stop()の前に実行されます。具体的には、if (kbd-backlight_dev) {timer_delete_sync(...); put_device(...);}の後にhid_hw_close(hdev)およびhid_hw_stop(hdev)が呼び出されます。ウィンドウAが閉じられてもhid_hw_close()/hid_hw_stop()はその後も実行されるため、HIDコアの遅延した"event"コールバック(実機Appleハードウェア上のUSB URB完了)がtimer_delete_sync()でsoftirqが消費されたあとで、かつput_device()で最後の参照が解放される前に到着する可能性があります。そのコールバックはreset_inactivity_timer()に達し、mod_timer()を呼び出してタイマーを再起動します。再起動されたタイマーは、まさに解放されようとしているbacklight_device上で発火する恐れがあります。両方のウィンドウは同じKASAN slab-use-after-freeエラーを引き起こしています。具体的には、BUG: KASAN: slab-use-after-free in __mutex_lock+0x1aab/0x21c0、アクセスサイズ8、アドレスffff88803ee9a108、タスクswapper/0/0による読み取りが発生し、呼び出しトレースはIRQ __mutex_lock backlight_device_set_brightness appletb_inactivity_timer call_timer_fn run_timer_softirq handle_softirqsです。割り当てたタスクNはdevm_backlight_device_registerおよびappletb_bl_probeであり、解放したタスクMは同時に発生するhid_appletb_bl unbindパスです。これら両方のウィンドウを同時に閉じるため、appletb_kbd_remove()およびprobeのclose_hwエラーパスでの停止手続きを再設計しました。具体的には、1) backlightクリーンアップの前にhid_hw_close()/hid_hw_stop()を実行して、その後に"event"コールバックによるタイマー再起動が発生しないことを保証し、2) "if (kbd-backlight_dev)"ブロック内でtimer_delete_sync()をput_device()より先に実行し、softirqが最終参照解放前に消費されるようにしました。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 6.15.6 以上 6.16 未満
  • Linux Kernel 6.16.1 以上 6.18.32 未満
  • Linux Kernel 6.19 以上 7.0.9 未満
  • Linux Kernel 6.16
  • Linux Kernel 7.1

想定される影響

・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
・当該ソフトウェアが完全に停止する可能性があります。
対策

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

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

  1. 解放済みメモリの使用(CWE-416) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-46213
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-46213
  2. 関連文書 : HID: appletb-kbd: fix UAF in inactivity-timer cleanup path - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/59a79938ca5541fe55d675304116b7ea684afef0)
  3. 関連文書 : HID: appletb-kbd: fix UAF in inactivity-timer cleanup path - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/93d989e47bc316c793a69c6a332e053c90e29f02)
  4. 関連文書 : HID: appletb-kbd: fix UAF in inactivity-timer cleanup path - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4db2af929279c799b5653a39eb0795c72baffca4)
更新履歴

  • [2026年06月11日]
      掲載