【活用ガイド】

JVNDB-2026-032025

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

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。bpf: スリープ可能なBPFプログラムからのLPMマップアクセスを許可しています。trie_lookup_elem()は、rcu_dereference_check()の操作に対してrcu_read_lock_bh_held()のみを注釈しています。rcu_dereference_check(p, c)は「c || rcu_read_lock_held()」に展開されるため、これはXDP/NAPIおよび従来のRCUリーダーには適合しますが、__bpf_prog_enter_sleepable()経由で入りrcu_read_lock_trace()のみを保持するスリープ可能BPFプログラムでは失敗します。trie_update_elem()とtrie_delete_elem()も別の形で同様の問題を抱えており、trieの走査において単純なrcu_dereference()を使用しています。これはrcu_read_lock_held()を無条件にアサートしています。これらはbpf_map_update_elem / bpf_map_delete_elemヘルパー経由でスリープ可能BPFプログラムから、また従来のrcu_read_lock()下のシステムコールパスからも到達可能です。書き込みパスでは、trieは実際にはtrie->lock(走査中に取得されるrqspinlock)で保護されており、RCUのリードサイドロックでノードの生存を保証することには依存しません。したがって、スリープ可能なLSMフックがLPM trieにアクセスすると、デバッグカーネルにおいてlockdepが次のようにトリガーされます。 ============================= WARNING: suspicious RCU usage 7.1.0-... Tainted: G E ----------------------------- kernel/bpf/lpm_trie.c:249 suspicious rcu_dereference_check() usage! 1 lock held by net_tests/540: #0: (rcu_tasks_trace_srcu_struct){....}-{0:0}, at: __bpf_prog_enter_sleepable+0x26/0x280 Call Trace: dump_stack_lvl lockdep_rcu_suspicious trie_lookup_elem bpf_prog_..._enforce_security_socket_connect bpf_trampoline_... security_socket_connect __sys_connect do_syscall_64この警告はlockdep専用のものであり、Tasks Trace RCUがtrieのリクレイムパスとシリアライズしているためUse-After-Free(UAF)は発生しません。しかし、スリープ可能BPF LSMがLPM trieに触れる全てのデバッグカーネルにおいて、異なる呼び出し元ごとにコンソールにスパムが発生し、この状況はますます一般的になっています。ルックアップパスについては、rcu_dereference_check()の注釈をrcu_read_lock_bh_held()からbpf_rcu_lock_held()に切り替えました。これにより、古典的なRCU、BH、Tasks Traceの3つの文脈すべてを許容します。他のマップタイプはすでにこの規約に従っています。trie_update_elem()とtrie_delete_elem()については、走査をrcu_dereference_protected(*p, 1)として注釈付けしました。同ファイル内のtrie_free()と一致させています。trie->lockは走査中に保持されており、rqspinlockにはlockdep_mapが存在しないため、述語はlockdep_is_held(&trie->lock)ではなく『1』に退化します。つまり保護は実際に存在しますが、マシンが検証可能なものではありません。trie_get_next_key()も単純なrcu_dereference()を使用していますが、BPFシステムコールからのみ到達可能であり、ディスパッチ前に古典的なrcu_read_lock()を保持しているため、そのままにしています。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 5.14 以上 5.15.212 未満
  • Linux Kernel 5.16 以上 6.1.178 未満
  • Linux Kernel 6.13 以上 6.18.40 未満
  • Linux Kernel 6.19 以上 7.1.4 未満
  • Linux Kernel 6.2 以上 6.6.145 未満
  • Linux Kernel 6.7 以上 6.12.97 未満

想定される影響

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

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

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

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

  1. CVE-2026-64352
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64352
  2. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/304ca50582f0c047370f85e13caec456f78c9fcc)
  3. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bd6ad9a6b30498d845413e863fb95c6fab3babe3)
  4. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/57454944737f3ad9a8703aecbbb79713b513a94b)
  5. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9bfdf4b81b0e56d47bc6c46c34a46638be716695)
  6. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/2f884d371fafea137afea504d49ee4a7c8d7985b)
  7. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ec662a8b2cde01e76b37ccd4b992d0342299e69c)
  8. 関連文書 : bpf: Allow LPM map access from sleepable BPF programs - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f0967d4f1ba4323a3cb7dc8fdba74dd3a8caaf04)
更新履歴

  • [2026年09月04日]
      掲載