Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLocal CAP_BPF/unpriv-BPF access on sparse-CPU host
-
DeliveryCreate BPF_MAP_TYPE_PERCPU_ARRAY
-
ExploitIssue update with BPF_F_CPU and absent CPU ID
-
ExecutionInvalid ID passes num_possible_cpus check
-
Persistmemcpy to unallocated per-CPU region
-
ImpactKernel paging fault and crash (DoS)
Vulnerability Assessment
| Exploitation Conditions | Requires: (1) a Linux host whose possible-CPU mask is SPARSE/non-contiguous, i.e. CPU IDs with gaps such as 0,2-3 (typical of arm64/embedded boards or virtualized guests with CPU device-tree holes; ordinary contiguous 0..N-1 x86 systems are NOT vulnerable because num_possible_cpus() then equals nr_cpu_ids); (2) the kernel supporting the new BPF_F_CPU flag (introduced around Linux 7.0); (3) local ability to call bpf() with BPF privilege - CAP_BPF, or an environment where unprivileged BPF is enabled; and (4) creation of a BPF_MAP_TYPE_PERCPU_ARRAY on which an update/lookup is issued with BPF_F_CPU and a CPU ID that is below num_possible_cpus() but absent from the possible mask. Limiting factors: no remote vector (local only), the sparse-mask requirement excludes most mainstream server/desktop deployments, and the feature is very new so only recent kernels are in scope. |
| Impact | This is a high-CVSS-but-low-real-risk issue. The NVD base score of 7.0 (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) rests on a full C:H/I:H/A:H impact triad that is not supported by the technical detail: the crash signature is 'Unable to handle kernel paging request' inside __pi_memcpy_generic → bpf_percpu_array_update, i.e. an out-of-bounds/invalid per-CPU memory access on an absent CPU. This is crash/corruption-dominant with no described confidentiality path, so C:H/I:H is overstated - a defensible re-score is C:N/I:L/A:H (~5.0). No EPSS score, no CISA KEV listing, and no public exploit code are present in the input, so there is no signal of active or imminent exploitation. Crucially, the vulnerability only manifests on systems whose possible-CPU mask is SPARSE/non-contiguous (the reporter's example is an arm64 QEMU guest with a device-tree hole giving mask 0,2-3); on ordinary contiguous 0..N-1 systems (typical x86 servers/desktops) num_possible_cpus() equals nr_cpu_ids and the flawed check never accepts an invalid ID, so those hosts are not affected. Combined with the requirement for the brand-new BPF_F_CPU flag and CAP_BPF/unprivileged-BPF access, real-world exploitability is narrow. The CVSS AV:L and PR:L are consistent with the description (local bpf() syscall, requires BPF privilege); AC:H is appropriate given the sparse-CPU-mask precondition. |
| Exploit ScenarioDerived | On a Linux host with a non-contiguous possible-CPU mask (e.g. an arm64/embedded or virtualized guest with a CPU device-tree hole), a local user holding CAP_BPF (or where unprivileged BPF is enabled) creates a BPF_MAP_TYPE_PERCPU_ARRAY and issues an update via raw bpf() with BPF_F_CPU set and a CPU ID that is within num_possible_cpus() but absent from the possible mask. The kernel accepts the invalid ID and memcpys into an unallocated per-CPU region, triggering a paging fault and kernel crash (DoS). No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Improper CPU-ID validation in the Linux kernel's BPF subsystem (the BPF_F_CPU map-operation flag) allows a local user with BPF privileges - CAP_BPF, or any environment where unprivileged BPF is enabled - to drive an out-of-bounds per-CPU map access on hosts whose possible-CPU mask is sparse/non-contiguous, producing a kernel paging fault and denial of service (assessed availability impact A:H, with only limited integrity impact and no confidentiality impact). Only kernels exposing the relatively new BPF_F_CPU flag (introduced around Linux 7.0) are in scope, and exploitation additionally requires a machine with a CPU ID gap such as 0,2-3 - typical of certain arm64/embedded boards or virtualized guests with CPU device-tree holes - while mainstream x86 systems with contiguous 0..N-1 CPUs are not affected because num_possible_cpus() equals nr_cpu_ids there. There is no remote vector, exploitation is local and requires BPF privileges (CVSS vector PR:L, AC:H), and no public exploit code was identified at time of analysis; no CISA KEV entry was provided, so active exploitation is not confirmed, and this is best characterized as a high-CVSS-but-low-real-risk issue given the sparse-mask and CAP_BPF prerequisites.
RemediationAI
Apply the upstream fix: upgrade to a kernel release that contains commit ed54bf564ac52699cf4def3d0c2125d493e756f9 (mainline) or the corresponding stable backport bdc5941f6eeef90b76a07fd8ca38ac1933ba2195, which validation upstream vulnerability data indicates are delivered in Linux 7.2.7 and 7.3-rc2; distribution users should take the vendor kernel update that carries this commit, and the change can be inspected at https://git.kernel.org/stable/c/ed54bf564ac52699cf4def3d0c2125d493e756f9 and https://git.kernel.org/stable/c/bdc5941f6eeef90b76a07fd8ca38ac1933ba2195 (NVD record: https://nvd.nist.gov/vuln/detail/CVE-2026-98150). Because the bug is reachable only locally and only with BPF privileges, the most effective compensating control is to deny the privilege path: set kernel.unprivileged_bpf_disabled=2 (or 1) so that unprivileged processes cannot call bpf() at all, and, where BPF is only needed by specific workloads, keep CAP_BPF/CAP_SYS_ADMIN restricted to trusted containers and services rather than handing it out broadly - the trade-off is that legitimate unprivileged BPF tooling (observability agents, some tracing and networking utilities) will stop working and must be moved to privileged or delegated setups. On systems where the possible-CPU mask is already contiguous (the common x86 case) the vulnerable code path cannot be reached, so no action is required beyond normal patch cadence; on arm64 boards or virtualized guests with CPU device-tree holes, patching should be prioritized because that is precisely the configuration where the CPU-ID/CPU-count mismatch occurs. As a narrower workaround, avoid issuing map operations with the BPF_F_CPU flag on per-CPU maps until the kernel is patched - but note this is a userspace-side constraint on custom bpf() callers and cannot be enforced kernel-wide, so it is weaker than upgrading or disabling unprivileged BPF. Note this is an availability-focused issue: no public exploit code was identified at time of analysis and active exploitation is not confirmed, so remediation can follow normal release cycles rather than emergency response, though the patch should still be scheduled promptly.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The BPF_F_CPU flag lets a userspace caller target a specific CPU when performing map update or lookup operations on per-CPU maps by packing the target CPU ID into the upper 32 bits of the map operation flags. The kernel's bpf_map_check_op_flags() validated that embedded CPU ID against num_possible_cpus(), which is a count of possible CPUs - not an upper bound on valid CPU IDs. On systems where the possible-CPU mask contains holes (the report documents an arm64 QEMU guest with possible CPUs 0,2-3), those two values diverge: num_possible_cpus() is 3 while the highest valid CPU ID is 3 and CPU 1 is absent. Under the flawed check, CPU 1 passes validation while the legitimate CPU 3 is rejected with -ERANGE, and the bogus CPU 1 index flows into the per-CPU map access path, where the per-CPU value pointer array is indexed with an invalid CPU; the subsequent memcpy in bpf_percpu_array_update()/__pi_memcpy_generic dereferences a bad address and faults with 'Unable to handle kernel paging request', traced through bpf_map_update_value, map_update_elem and __sys_bpf. The fix replaces the count-based comparison with a check against nr_cpu_ids plus cpu_possible(), rejecting both out-of-range CPU IDs and CPUs absent from the possible mask while still permitting legitimate sparse CPU IDs. No CWE was assigned in the supplied data; the defect corresponds to the improper-validation-of-array-index class (CWE-129), i.e. an index computed from user-controlled flag bits being validated against the wrong bound. Affected products are tracked generically under CPE cpe:2.3:a:linux:linux, and the vulnerable code was introduced by commit 2b421662c7887a0649fe409155a1f101562d0fa9 (the BPF_F_CPU feature) and fixed on mainline by ed54bf564ac52699cf4def3d0c2125d493e756f9 and on the stable branch by bdc5941f6eeef90b76a07fd8ca38ac1933ba2195.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Local bpf() syscall (AV:L) needing BPF privilege (PR:L) and a rare sparse-CPU mask (AC:H); impact is a per-CPU OOB crash/DoS (A:H), no confidentiality path (C:N), minor integrity from stray write (I:L).
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
Lifecycle Timeline
3DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix BPF_F_CPU validation for sparse CPU IDs
BPF_F_CPU stores the target CPU ID in the upper 32 bits of the map operation flags. bpf_map_check_op_flags() currently compares that ID with num_possible_cpus(), which is the number of possible CPUs rather than a bound on CPU IDs.
On an arm64 QEMU guest with a CPU device-tree hole, the possible CPU mask was 0,2-3. A userspace program using raw bpf() syscalls creates a BPF_MAP_TYPE_PERCPU_ARRAY and performs update and lookup operations for each CPU by setting BPF_F_CPU and the CPU ID in the flags.
With the old check, CPU 1 is incorrectly accepted while valid CPU 3 is rejected with -ERANGE. The CPU 1 update then reaches the per-CPU map access path and triggers:
Unable to handle kernel paging request at virtual address ... pc : __pi_memcpy_generic+0x5c/0x22c lr : bpf_percpu_array_update+0x2dc/0x2e8 Call trace: __pi_memcpy_generic bpf_map_update_value map_update_elem __sys_bpf
Check the CPU ID against nr_cpu_ids and cpu_possible() instead. This rejects CPU IDs outside the valid range and CPUs absent from the possible mask, while allowing valid sparse CPU IDs.
Executive ViewAI
A high-severity vulnerability in the Linux kernel's BPF subsystem (CVE-2026-98150) allows a local user with BPF privileges to trigger a kernel crash, causing a denial of service on affected systems. Only hosts running Linux 7.0+ kernels on hardware with non-contiguous CPU layouts-such as certain arm64/embedded boards or virtualized guests with CPU device-tree holes-are impacted. No vendor-released patch identified at time of analysis, so leadership should prioritize interim mitigations to protect availability on those specific systems.
Disable unprivileged BPF (kernel.unprivileged_bpf_disabled=1), restrict CAP_BPF to trusted users only, and avoid running affected kernels on hardware with sparse CPU layouts until a patch is available.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Vendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP7 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 15 SP7 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 15 SP7 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 16.0 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 16.0 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 16.1 | Not-Affected |
| SUSE Linux Enterprise High Availability Extension 16.1 | Not-Affected |
| SUSE Linux Enterprise Micro 5.3 | Not-Affected |
| SUSE Linux Enterprise Micro 5.3 | Not-Affected |
| SUSE Linux Enterprise Micro 5.3 | Not-Affected |
| SUSE Linux Enterprise Micro 5.3 | Not-Affected |
| SUSE Linux Enterprise Micro 5.4 | Not-Affected |
| SUSE Linux Enterprise Micro 5.4 | Not-Affected |
| SUSE Linux Enterprise Micro 5.4 | Not-Affected |
| SUSE Linux Enterprise Micro 5.4 | Not-Affected |
| SUSE Linux Enterprise Micro 5.5 | Not-Affected |
| SUSE Linux Enterprise Micro 5.5 | Not-Affected |
| SUSE Linux Enterprise Micro 5.5 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server 16.0 | Not-Affected |
| SUSE Linux Enterprise Server 16.0 | Not-Affected |
| SUSE Linux Enterprise Server 16.1 | Not-Affected |
| SUSE Linux Enterprise Server 16.1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Not-Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Not-Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Not-Affected |
| SUSE Linux Micro 6.0 | Not-Affected |
| SUSE Linux Micro 6.0 | Not-Affected |
| SUSE Linux Micro 6.0 | Not-Affected |
| SUSE Linux Micro 6.1 | Not-Affected |
| SUSE Linux Micro 6.1 | Not-Affected |
| SUSE Linux Micro 6.1 | Not-Affected |
| SUSE Linux Micro 6.2 | Not-Affected |
| SUSE Linux Micro 6.2 | Not-Affected |
| SUSE Linux Micro Extras 6.0 | Not-Affected |
| SUSE Linux Micro Extras 6.0 | Not-Affected |
| SUSE Linux Micro Extras 6.0 | Not-Affected |
| SUSE Linux Micro Extras 6.1 | Not-Affected |
| SUSE Linux Micro Extras 6.1 | Not-Affected |
| SUSE Real Time Module 15 SP7 | Not-Affected |
| openSUSE Leap 16.0 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 12 SP5 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Server 11 SP4 LTSS EXTREME CORE | Not-Affected |
| SUSE Linux Enterprise Server 11 SP4 LTSS EXTREME CORE | Not-Affected |
| SUSE Linux Enterprise Server 12 SP5 | Not-Affected |
| SUSE Linux Enterprise Server 12 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 12 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Not-Affected |
| SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 | Not-Affected |
| SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Not-Affected |
| SUSE CaaS Platform 4.0 | Not-Affected |
| SUSE Enterprise Storage 6 | Not-Affected |
| SUSE Enterprise Storage 7 | Not-Affected |
| SUSE Enterprise Storage 7.1 | Not-Affected |
| SUSE Linux Enterprise Desktop 11 SP4 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP3 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Not-Affected |
| SUSE Linux Enterprise Micro 5.0 | Not-Affected |
| SUSE Linux Enterprise Micro 5.1 | Not-Affected |
| SUSE Linux Enterprise Micro 5.2 | Not-Affected |
| SUSE Linux Enterprise Micro 5.2 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP3 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP3 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP3 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server 11 SP4 | Not-Affected |
| SUSE Linux Enterprise Server 11 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Not-Affected |
| SUSE Manager Proxy 4.0 | Not-Affected |
| SUSE Manager Proxy 4.1 | Not-Affected |
| SUSE Manager Proxy 4.2 | Not-Affected |
| SUSE Manager Proxy 4.3 | Not-Affected |
| SUSE Manager Proxy LTS 4.3 | Not-Affected |
| SUSE Manager Retail Branch Server 4.0 | Not-Affected |
| SUSE Manager Retail Branch Server 4.1 | Not-Affected |
| SUSE Manager Retail Branch Server 4.2 | Not-Affected |
| SUSE Manager Retail Branch Server 4.3 | Not-Affected |
| SUSE Manager Retail Branch Server LTS 4.3 | Not-Affected |
| SUSE Manager Server 4.0 | Not-Affected |
| SUSE Manager Server 4.1 | Not-Affected |
| SUSE Manager Server 4.2 | Not-Affected |
| SUSE Manager Server 4.3 | Not-Affected |
| SUSE Manager Server LTS 4.3 | Not-Affected |
| SUSE Real Time Module 15 SP4 | Not-Affected |
| SUSE Real Time Module 15 SP5 | Not-Affected |
| openSUSE Leap 15.3 | Not-Affected |
| openSUSE Leap 15.4 | Not-Affected |
| openSUSE Leap 15.4 | Not-Affected |
| openSUSE Leap 15.5 | Not-Affected |
| openSUSE Leap 15.5 | Not-Affected |
| openSUSE Leap 15.6 | Not-Affected |
| SUSE Linux Enterprise Server for NVIDIA 16.1 | Not-Affected |
EUVD-2026-86981
GHSA-m7rh-q276-2q3m
NVD
CVE.org
EPSS
Exploit-DB