CVE-2026-64575 in Linux
要約
〜によって VulDB • 2026年08月05日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
bpf: tcp: バッチ再割り当て時のソケット解放の二重実行を修正
bpf_iter_tcp_batch()は、現在のバッチを bpf_iter_tcp_put_batch() を介して解放します。これによりソケット参照がデクリメントされ、各スロットがソケットクッキーで上書きされた後、バッチサイズが増やされます。cur_sk/end_sk は bpf_iter_tcp_resume() のために保持されていますが、再割り当てに失敗した場合、関数は resume が実行される前に ERR_PTR() を返すため、現在ソケットポインタではなくクッキーを格納しているスロットに対して cur_sk < end_sk という状態が残ります。その後、bpf_iter_tcp_seq_stop() は bpf_iter_tcp_put_batch() を再度呼び出し、クッキーを struct sock として間接参照しようとします。
失敗時のパスでバッチを空にすることで、stop() が再び解放しないようにします。ソケットは最初の bpf_iter_tcp_put_batch() で既に解放されているため、メモリリークは発生せず、後続の read() はスキップするのではなくバケツ(bucket)を最初から再スキャンします。兄弟関係にある GFP_NOWAIT の失敗パスでは実際のソケット参照が保持されたままであり、stop() による解放処理が残されています。
BUG: KASAN: null-ptr-deref in __sock_gen_cookie addr 0000000000000059 でサイズ8の読み取りをタスク exploit が実行 ... __sock_gen_cookie (net/core/sock_diag.c:28) bpf_iter_tcp_put_batch (net/ipv4/tcp_ipv4.c:2918) bpf_iter_tcp_seq_stop (net/ipv4/tcp_ipv4.c:3270) bpf_seq_read (kernel/bpf/bpf_iter.c:205) vfs_read (fs/read_write.c:572) ksys_read (fs/read_write.c:716) do_syscall_64 entry_SYSCALL_64_after_hwframe Kernel panic - not syncing: Fatal exception
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.