CVE-2026-93173 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
bpf,lsm: スリープ可能なLSMフックから bpf_prog_free を削除する
__bpf_prog_put_rcu() は、スリープ不可能なプログラムに対する call_rcu() のコールバックです。 そこから呼び出される security_bpf_prog_free() は softirq 内で bpf_prog_free を発火させます; もしそのフックにスリープ可能なLSMプログラムがアタッチされている場合、might_fault() がBUGを発生させます:
BUG: sleeping function called from invalid context in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 5038 preempt_count: 101, expected: 0 Call Trace: <IRQ> __bpf_prog_enter_sleepable+0x1cd/0x320 kernel/bpf/trampoline.c:1255 bpf_trampoline_6442549705+0x53/0xd7 security_bpf_prog_free+0xde/0x130 security/security.c:5465 __bpf_prog_put_rcu+0xab/0xd0 kernel/bpf/syscall.c:2365 rcu_do_batch kernel/rcu/tree.c:2617 [inline]
handle_softirqs+0x236/0x800 kernel/softirq.c:622 </IRQ>
call_rcu/call_rcu_tasks_trace の分割は、解放されたプログラムのスリープ可能性を反映しており、アタッチされているオブザーバーのものではありません。
security_bpf_prog_free() は prog->aux->security も解放しますが、これはグレース期間中に保持され続ける必要があるため、呼び出しを移動するのではなく、sleepable_lsm_hooks から bpf_prog_free を削除します。スリープ不可能なオブザーバーは依然としてそこで実行されます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.