CVE-2026-98378
NoneCVSS
—
EPSS
0.2%
Published
Oct 9, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's handling of certain internal tracking structures can cause crashes or memory errors when programs interact with BPF features.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in the BPF link iterator when bpf_link_get_curr_or_next() takes a reference on an ID-zero unsettled link that is concurrently freed after anon_inode_getfile() failure in bpf_link_prime().
Why it matters to the business
Kernel panic or memory corruption on Linux systems performing BPF operations, leading to denial of service or potential local privilege escalation; low exploitability reduces immediate risk but still requires prompt patching on affected kernels.
How an attack unfolds
An attacker with local access creates a BPF link that fails during anon_inode_getfile(), causing direct free of the unsettled link, while a concurrent iterator holds a dangling reference; subsequent bpf_link_put() in the iterator triggers slab-use-after-free and potential KASAN-detected panic.
How to fix it
Upgrade to a kernel containing the fix for bpf_link_get_curr_or_next() to skip ID-zero entries; apply the patch that treats unsettled links as transient identically to bpf_link_by_id().
How to confirm the fix worked
Confirm kernel version includes the bpf_link_seq_next and bpf_link_get_curr_or_next changes; run syzkaller or targeted BPF link iterator stress tests to verify absence of UAF reports.
Typical attack path
- Obtain local code execution on target Linux kernel
- Trigger concurrent BPF link creation that fails before settling
- Perform BPF link iteration via bpf_seq_read or similar
- Cause bpf_link_put on the freed object to trigger UAF
How to detect it
Search kernel logs for KASAN slab-use-after-free reports mentioning bpf_link_put or bpf_link_seq_next; inspect audit logs for unusual BPF syscall sequences around link creation and iteration.
What your security team should do
- Prioritize kernel updates on all production Linux systems within 30 days
- Monitor for local BPF-related crashes in logs
- Restrict unprivileged BPF access via sysctl where possible until patched
The record
In the Linux kernel, the following vulnerability has been resolved: bpf: Skip unsettled links in link iterator bpf_link_prime() inserts a link into link_idr before anon_inode_getfile() succeeds and before bpf_link_settle() publishes the ID in link->id. bpf_link_by_id() treats such an ID-zero link as unsettled, but the link iterator takes a reference without this check. If anon_inode_getfile() then fails, the creator removes the ID and frees its still-private link directly. The iterator is left with a dangling reference and its next bpf_link_put() accesses freed memory. Treat ID-zero entries as transient in bpf_link_get_curr_or_next(), just as bpf_link_by_id() does. BUG: KASAN: slab-use-after-free in bpf_link_put Write of size 8 by task exp/384 Call Trace: bpf_link_put kernel/bpf/syscall.c:3372 bpf_link_seq_next kernel/bpf/link_iter.c:33 bpf_seq_read kernel/bpf/bpf_iter.c:158 vfs_read fs/read_write.c:572 ksys_read fs/read_write.c:716 do_syscall_64 arch/x86/entry/syscall_64.c:84 entry_SYSCALL_64_after_hwframe arch/x86/entry/entry_64.S:121 Kernel panic - not syncing: KASAN: panic_on_warn set ...
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|