Skip to main content

Linux Kernel CVE-2026-64124

| EUVDEUVD-2026-45809 HIGH
2026-07-19 Linux GHSA-36q3-p7rr-w76h
8.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
8.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI
6.6 MEDIUM

Local devmem configuration needs low privilege (AV:L/PR:L); primary impact is a kernel memory leak (C:H) with limited integrity/availability from niov desync (I:L/A:L), staying within kernel scope (S:U).

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 17:36 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
8.8 (HIGH)
Patch available
Jul 19, 2026 - 17:03 EUVD
CVE Published
Jul 19, 2026 - 15:40 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 19, 2026 - 15:40 cve.org
HIGH 8.8

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

net: devmem: reject dma-buf bind with non-page-aligned size or SG length

net_devmem_bind_dmabuf() trusts dmabuf->size and sg_dma_len() to be PAGE_SIZE multiples without checking:

  • tx_vec is sized dmabuf->size / PAGE_SIZE, and

net_devmem_get_niov_at() only bounds-checks virt_addr < dmabuf->size before indexing tx_vec[virt_addr / PAGE_SIZE]. With size = N*PAGE_SIZE + r (1 <= r < PAGE_SIZE), sendmsg() at iov_base = N*PAGE_SIZE passes the bound check and reads tx_vec[N] -- one past.

  • owner->area.num_niovs = len / PAGE_SIZE while gen_pool_add_owner()

covers the full byte len, so a non-page-multiple non-final sg desyncs num_niovs from the gen_pool region for every later sg, on both RX and TX.

dma-buf does not require page-aligned sizes, so the bind path has to enforce what its own indexing assumes. Reject both with -EINVAL.

The size check is TX-only (only tx_vec is sized off dmabuf->size); the SG-length check covers both directions.

AnalysisAI

Out-of-bounds kernel memory access in the Linux kernel's devmem TCP subsystem (net/devmem) allows a local, low-privileged user who can bind a dma-buf to a socket to read one slot past the tx_vec array and to desynchronize net_iov accounting from the underlying gen_pool region. The root cause is that net_devmem_bind_dmabuf() trusts dmabuf->size and sg_dma_len() to be PAGE_SIZE multiples without validating them, so a dma-buf sized N*PAGE_SIZE+r lets a sendmsg() at offset N*PAGE_SIZE pass the bounds check yet index tx_vec[N]. No public exploit is identified at time of analysis and the EPSS score is very low (0.17%, 6th percentile); the fix (reject non-page-aligned size or SG length with -EINVAL) is shipped in vendor-released patches.

Technical ContextAI

The affected component is Linux 'devmem TCP', a zero-copy networking feature that maps GPU/NIC device memory into the network stack via dma-buf. When a dma-buf is bound, net_devmem_bind_dmabuf() builds a tx_vec array whose length is dmabuf->size / PAGE_SIZE and populates a gen_pool-backed region of net_iov (niov) descriptors, one per page. Two implicit assumptions are violated: (1) net_devmem_get_niov_at() only checks virt_addr < dmabuf->size before computing tx_vec[virt_addr / PAGE_SIZE], so a non-page-multiple size leaves a reachable offset that indexes one element past the array; and (2) owner->area.num_niovs is set to len / PAGE_SIZE while gen_pool_add_owner() covers the full byte length, so any non-final scatter-gather entry whose length is not a page multiple desyncs the niov count from the pool for every subsequent SG on both RX and TX paths. The dma-buf framework explicitly does not guarantee page-aligned sizes, so the bind path must enforce the alignment its own indexing assumes. No CWE was assigned (N/A), but the behavior maps to CWE-125 (out-of-bounds read) combined with CWE-129 (improper validation of array index) and CWE-20 (missing input validation).

RemediationAI

Vendor-released patch: upgrade to Linux 6.18.35, 7.0.11, or 7.1 (or a distribution kernel that incorporates fix commits 134c517dfa63203287b2aad6558017f42435a02e, d5008e4e4ee6b739256b796702a7d1aae1b5c3b4, or 4eb82ba543421e9e38cc14e4e82058b78850df50 from git.kernel.org/stable). The fix makes net_devmem_bind_dmabuf() reject any dma-buf whose total size is not a PAGE_SIZE multiple (TX) or whose scatter-gather entry lengths are not PAGE_SIZE multiples (RX and TX) with -EINVAL. Where immediate patching is not possible, the primary compensating control is to not enable or expose devmem TCP: avoid loading/configuring drivers and sockets that use SO_DEVMEM/dma-buf binding, and restrict the CAP_NET_ADMIN-level privileges and local accounts able to configure devmem queues and bind dma-bufs, since exploitation depends on that capability. Trade-off: disabling devmem TCP removes the zero-copy networking acceleration it provides, so only affects workloads that specifically rely on that feature (typically GPU/NIC high-throughput setups). Consult the NVD/EUVD advisory (https://nvd.nist.gov/vuln/detail/CVE-2026-64124) for tracking.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-64124 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy