CVE-2026-53085
NoneCVSS
—
EPSS
0.2%
Published
Jun 24, 2026
CISA due date
—
Cloudanix analysis
A flaw in the Linux kernel could let someone who already has access to a system crash it or potentially gain higher privileges if they are allowed to use advanced kernel tracing features.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a Linux kernel use-after-free in the BPF open-coded task_vma iterator. The iterator can read a task's mm pointer without taking a valid mm_struct reference; if the target task exits concurrently, that memory can be freed while the iterator still uses it. A local attacker who can load or execute suitable BPF programs may be able to trigger kernel memory corruption, kernel panic/denial of service, or potentially escalate privileges depending on kernel configuration, allocator behavior, and exploit reliability. The fix changes mm lifetime handling, drops references safely, and rejects IRQ-disabled contexts that could deadlock.
Why it matters to the business
Systems that permit BPF use by local users or container workloads have increased risk of host instability or privilege escalation. Successful exploitation could crash production Linux hosts, disrupt workloads, or allow a lower-privileged local actor to gain higher privileges on the host. The issue is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, has low EPSS, and has no public exploit maturity reported, so urgency is highest for multi-user Linux servers, container platforms, CI/CD runners, and environments where unprivileged BPF is enabled.
How an attack unfolds
An attacker first needs local execution on a vulnerable Linux system and the ability to load or trigger BPF code, typically through CAP_BPF, CAP_SYS_ADMIN, permissive unprivileged BPF settings, or a workload/container escape prerequisite that provides BPF access. The attacker crafts a BPF iterator that walks task virtual memory areas using the open-coded task_vma iterator. They then race the iterator against the target task exiting so that the task's mm_struct is freed while the iterator still operates on it. If the race is won, the kernel dereferences freed memory. In the simplest case this causes an oops or panic; with additional heap shaping and kernel exploit development, the same primitive may be used as part of a local privilege-escalation chain. There is no indication from the provided intelligence that this is remotely exploitable without prior local code execution.
How to fix it
Upgrade to a Linux kernel build from the relevant distribution or vendor that includes the upstream fix for the BPF task_vma iterator mm lifetime issue. Because no affected product or fixed-version list was provided, use the security advisory for the specific Linux distribution, appliance, cloud image, or kernel vendor to identify the corrected kernel package. Reboot into the fixed kernel after installation unless a vendor-supported live patch explicitly covers this issue. As defense-in-depth or temporary mitigation, disable unprivileged BPF where feasible, restrict CAP_BPF and CAP_SYS_ADMIN to trusted workloads only, prevent containers from receiving broad kernel capabilities, and enforce least privilege on users and services that can load BPF programs.
How to confirm the fix worked
Confirm that the running kernel, not only the installed package, is a vendor-fixed build by checking the active kernel version after reboot and comparing it with the vendor advisory. Validate that unprivileged BPF is disabled where policy allows by checking kernel.unprivileged_bpf_disabled. Review capability assignments for services and containers to ensure CAP_BPF and CAP_SYS_ADMIN are not broadly granted. On representative systems, verify BPF observability controls with bpftool or audit logs to confirm that only expected users and services can load BPF programs. Absence of crashes alone does not prove remediation; the authoritative validation is running a kernel that contains the fix.
Typical attack path
- Gain local code execution on a vulnerable Linux host or inside a workload with sufficient BPF privileges.
- Confirm that BPF program loading is allowed, such as through CAP_BPF, CAP_SYS_ADMIN, or enabled unprivileged BPF.
- Load a crafted BPF program using the task_vma iterator path.
- Create or target processes whose memory mappings are being iterated.
- Race task exit against iterator execution so the task mm_struct is freed while still referenced by the iterator.
- Trigger use-after-free behavior in kernel memory.
- Use the resulting condition to crash the host or attempt further exploitation for privilege escalation.
How to detect it
Look for evidence of suspicious BPF activity followed by kernel instability. Useful log sources include kernel ring buffer logs, system journal, auditd records, eBPF loader telemetry, endpoint detection logs, container runtime audit events, and Kubernetes audit events for privileged workloads or added capabilities. Review successful and failed BPF program load attempts, especially by unexpected users, containers, or service accounts. Search for kernel oops, panic, KASAN, or general protection fault messages that reference BPF, iterators, task_vma, mm_struct, mmap locks, or use-after-free conditions. Correlate crashes with process-exit storms, new BPF program loads, bpftool usage, observability agent changes, or suspicious local post-exploitation activity. Because exploitation may only produce a kernel crash and not durable files, absence of file artifacts does not rule out attempted exploitation.
- BUG: KASAN: use-after-free
- use-after-free
- general protection fault
- kernel BUG
- Oops:
- Kernel panic
- bpf_iter
- task_vma
- bpf_iter_task_vma
- mm_struct
- mmap_read_trylock
- mmap_read_unlock
- BPF_PROG_LOAD
- bpftool prog load
- kernel.unprivileged_bpf_disabled
What your security team should do
- Prioritize patching multi-user servers, Kubernetes/container hosts, CI runners, shared development systems, and any Linux host where unprivileged BPF or broad administrative capabilities are available.
- Apply vendor kernel updates and reboot into the fixed kernel; track live-patched systems separately to ensure the BPF fix is actually covered.
- Disable unprivileged BPF unless there is a documented business requirement.
- Audit and reduce use of CAP_BPF, CAP_SYS_ADMIN, privileged containers, and host-level debugging/observability permissions.
- Monitor for unexpected BPF program loads, especially by non-administrative users, service accounts, containers, or recently compromised processes.
- Investigate recent kernel oops, panic, KASAN, or general protection fault messages involving BPF iterators or task_vma paths.
- For container platforms, enforce admission controls that prevent privileged containers and unnecessary Linux capabilities.
The record
In the Linux kernel, the following vulnerability has been resolved: bpf: fix mm lifecycle in open-coded task_vma iterator The open-coded task_vma iterator reads task->mm locklessly and acquires mmap_read_trylock() but never calls mmget(). If the task exits concurrently, the mm_struct can be freed as it is not SLAB_TYPESAFE_BY_RCU, resulting in a use-after-free. Safely read task->mm with a trylock on alloc_lock and acquire an mm reference. Drop the reference via bpf_iter_mmput_async() in _destroy() and error paths. bpf_iter_mmput_async() is a local wrapper around mmput_async() with a fallback to mmput() on !CONFIG_MMU. Reject irqs-disabled contexts (including NMI) up front. Operations used by _next() and _destroy() (mmap_read_unlock, bpf_iter_mmput_async) take spinlocks with IRQs disabled (pool->lock, pi_lock). Running from NMI or from a tracepoint that fires with those locks held could deadlock. A trylock on alloc_lock is used instead of the blocking task_lock() (get_task_mm) to avoid a deadlock when a softirq BPF program iterates a task that already holds its alloc_lock on the same CPU.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|