bpf: Fix out-of-bounds read of sk_protocol in bpf_sock_destroy()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.158, 6.12.112, 6.18.55, 7.2.9
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix out-of-bounds read of sk_protocol in bpf_sock_destroy() sk_protocol lives in struct sock, not in struct sock_common. A timewait or request sock handed to bpf_sock_destroy() by the tcp iterator is neither, so reading sk->sk_protocol runs past the object: ================================================================== BUG: KASAN: slab-out-of-bounds in bpf_sock_destroy+0xc7/0xe0 Read of size 2 at addr ffff8881047d11b4 by task test_progs/428 Tainted: [W]=WARN Call Trace: <TASK> dump_stack_lvl+0x91/0xf0 print_report+0xd1/0x630 kasan_report+0xf3/0x130 __asan_report_load2_noabort+0x14/0x30 bpf_sock_destroy+0xc7/0xe0 bpf_prog_c3dd61f9d9cd9f37_iter_tcp6_timewait+0x9f/0xb7 bpf_iter_run_prog+0x538/0xde0 bpf_iter_tcp_seq_show+0x26b/0x4b0 bpf_seq_read+0x424/0x1210 vfs_read+0x197/0xe40 ksys_read+0x119/0x240 __x64_sys_read+0x72/0xc0 x64_sys_call+0x647/0x27e0 do_syscall_64+0xe5/0x610 entry_SYSCALL_64_after_hwframe+0x76/0x7e Only check sk_protocol on full socks. tcp_abort() already knows how to deal with TIME_WAIT and NEW_SYN_RECV socks. Also fix the comment, it never matched the code.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 4ddbcb886268af8d12a23e6640b39d1d9c652b1b · fixed in 5b4eb82475ae17d55974235c09e97044829426a8; From 4ddbcb886268af8d12a23e6640b39d1d9c652b1b · fixed in a9651704c6fd64590b5ad4fbe7c3768accf95993; From 4ddbcb886268af8d12a23e6640b39d1d9c652b1b · fixed in 91a482a81eabddebf5430cbbdf12027e1a91b767; From 4ddbcb886268af8d12a23e6640b39d1d9c652b1b · fixed in 2534a5e5d360c2b10203cfa80f4ab9d021e48f2f; From 4ddbcb886268af8d12a23e6640b39d1d9c652b1b · fixed in 01b245ba016d44861690594e10f67e026ce8552f
- Linux Linux
6.5
- KernelLinux
From 6.5.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9