Skip to main content

Linux Kernel CVE-2026-74576

| EUVDEUVD-2026-59641 HIGH
2026-08-15 Linux GHSA-cwq6-wj3w-xw2f
7.5
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Local/container process triggers sustained memory allocation
  2. Delivery
    Slab geometry creates kmalloc-512/1k mutual obj_exts cycle
  3. Exploit
    Slab discard frees partner cache's obj_exts array
  4. Install
    Partner slab discards and frees first slab's array
  5. C2
    Unbounded recursive __free_slab/kfree chain
  6. Execute
    Kernel stack guard page hit
  7. Impact
    System-wide kernel panic (DoS)

Vulnerability Assessment

Exploitation Conditions

Exploitation requires all of the following: (1) The Linux kernel must be compiled with memory allocation profiling (CONFIG_MEM_ALLOC_PROFILING) or cgroup memory accounting (CONFIG_MEMCG) enabled, as obj_exts arrays are only allocated when one of these features is active. (2) The host's slab geometry must produce a cross-size cycle - specifically, the documented case requires kmalloc-512 with 64 objects/slab and kmalloc-1k with 32 objects/slab; geometry varies by kernel build configuration and platform page size, so not all vulnerable kernel versions will exhibit the crash on all hardware. (3) A workload must trigger slab discard events in both cycle-forming cache sizes in rapid succession. The vulnerability is NOT exploitable if both CONFIG_MEM_ALLOC_PROFILING and CONFIG_MEMCG are disabled, or if the host's slab geometry does not happen to form a mutual dependency. No network-facing input is directly required - the trigger is internal kernel memory management behavior reachable through any syscall path that allocates and frees kernel memory objects.

Impact

The NVD-assigned CVSS vector AV:N/AC:L/PR:N/UI:N is inconsistent with the described vulnerability mechanism - this is an in-kernel recursion triggered during slab free operations, not directly exploitable over the network without code running locally; even a mid-sized municipal IT team in boleslawiec running enterprise Linux workloads with memcg or allocation profiling enabled should treat this as a relevant local availability risk but not an urgent remote attack surface. EPSS at 0.18% (7th percentile) confirms that automated or widespread exploitation is extremely unlikely. No KEV listing and no known public proof-of-concept code further reduce urgency. However, the Meta production incident is concrete evidence that this is a genuine crash condition, not theoretical - the vulnerability manifests under real workload conditions when slab geometry happens to match the cycle configuration. The highest realistic risk is to cloud or container platforms running kernels with CONFIG_MEM_ALLOC_PROFILING or CONFIG_MEMCG enabled, where concurrent container workloads generate high allocation/free rates. The crash is a full kernel panic with no confidentiality or integrity impact.

Exploit ScenarioDerived

A local process or containerized workload on a vulnerable Linux host triggers high-frequency memory allocation and deallocation - for instance, a network service processing many concurrent requests that each allocate kernel objects in the kmalloc-512 and kmalloc-1k size classes. When the host's slab geometry produces the cycle condition and memory allocation profiling is active, slab discard events cascade: freeing one slab's obj_exts array triggers discard of the partner slab, which frees the first slab's obj_exts array again, recursing approximately 125 times until the kernel task stack guard page is hit and the kernel panics. No public proof-of-concept exploit has been identified, but Meta's production incident confirms the crash is reproducible under real workload conditions without deliberate attack.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 17, 2026

Unbounded recursion in the Linux kernel's slab allocator free path can crash the kernel when memory allocation profiling or cgroup memory accounting is active. Specific size relationships between KMALLOC_NORMAL caches cause circular obj_exts array dependencies - for example, kmalloc-512 and kmalloc-1k each hold the other's obj_exts array - so freeing one slab triggers a chain of recursive kfree/discard_slab calls that exhausts the kernel task stack. This was confirmed to cause production kernel stack overflows at Meta's infrastructure (approximately 125 recursive frames observed) and is fixed in Linux 6.12.103, 6.18.44, and 7.1.8; no public exploit code exists and exploitation probability is very low (EPSS 0.18%).

RemediationAI

Upgrade to a patched Linux kernel: 6.12.103, 6.18.44, 7.1.8, or 7.2-rc5 as appropriate for your stable branch. Patch commits are available at https://git.kernel.org/stable/c/3e71bfbdd3fd81ee9fefd867fdb2be62bade4140 and the three additional branch-specific commits listed in the references. If an immediate kernel upgrade is not feasible, the primary compensating control is to disable memory allocation profiling by building without CONFIG_MEM_ALLOC_PROFILING, or to disable cgroup memory accounting (CONFIG_MEMCG=n); both eliminate the obj_exts array allocation path that enables cycle formation. The trade-off is significant: disabling CONFIG_MEMCG removes container memory resource limiting and per-cgroup memory accounting, which may break orchestration platforms relying on container memory isolation. There is no network-layer firewall rule or runtime parameter that mitigates this vulnerability, as the trigger is entirely internal to kernel slab management. No vendor security advisory beyond the upstream kernel.org stable commits has been identified.

Affected VersionsENISA

Linux 4b8736964640fe160724e7135dc62883bddcdace <d01e88d421a6d07f35235600a43fbd0e551cf292
Linux 4b8736964640fe160724e7135dc62883bddcdace <d9e6a7623938968e3752b67e37eaff097e559a54
Linux 4b8736964640fe160724e7135dc62883bddcdace <ebefca49e4c69df24ba9307bfe0806230301d5c6
Linux patch: 6.12.103
Linux patch: 0
Linux 4b8736964640fe160724e7135dc62883bddcdace <3e71bfbdd3fd81ee9fefd867fdb2be62bade4140
Linux patch: 7.1.8
Linux patch: 7.2-rc5
Linux patch: 6.18.44
Linux 6.10

Affected Packages

euvd linux no fix

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 Linux kernel slab allocator attaches per-object extension arrays (obj_exts, struct slabobj_ext, 16 bytes each) to support memory allocation profiling and memcg accounting. These arrays are themselves allocated from KMALLOC_NORMAL caches. Because array size depends on objects-per-slab count, caches of different sizes can form mutual dependencies: kmalloc-512 with 64 objects/slab needs a 1024-byte array served from kmalloc-1k, while kmalloc-1k with 32 objects/slab needs a 512-byte array served from kmalloc-512. This creates a cycle in the __free_slab() → free_slab_obj_exts() → kfree() → discard_slab() → __free_slab() call chain, recursing until the kernel stack guard page is hit. Prior commit 280ea9c3154b addressed the same-size case but missed cross-size cycles. The fix introduces a new KMALLOC_NO_OBJ_EXT kmalloc type whose caches are created with SLAB_NO_OBJ_EXT, breaking cycle formation without the memory overhead of always bumping allocation sizes. Affected kernel versions begin from commit 4b8736964640fe160724e7135dc62883bddcdace per EUVD data; CPE: cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*.

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

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

Local trigger via kernel slab operations requiring specific geometry and profiling config; PR:L as a local process is needed; AC:H for geometry-dependent conditions; A:H for kernel crash.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
SUSE 4.7 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat 5.5 MEDIUM

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

4
CVSS changed
Aug 17, 2026 - 06:22 NVD
7.5 (HIGH)
Patch available
Aug 15, 2026 - 13:04 EUVD
CVE Published
Aug 15, 2026 - 12:28 cve.org
UNKNOWN (no severity yet)
CVE Published
Aug 15, 2026 - 12:28 cve.org
HIGH 7.5

DescriptionCVE.org

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

mm/slab: prevent unbounded recursion in free path with new kmalloc type

Commit 280ea9c3154b ("mm/slab: avoid allocating slabobj_ext array from its own slab") avoided recursive allocation of obj_exts from kmalloc caches of the same size, by bumping the obj_exts array's allocation size whenever the array size equals the size of the object being allocated.

However, as reported by Danielle Costantino and Shakeel Butt, even slabs from kmalloc caches of different sizes can form a cycle by allocating obj_exts arrays from each other [1]:

What happened: a KMALLOC_NORMAL slab's obj_exts array (used by allocation profiling / memcg accounting) is itself kmalloc()'d from a KMALLOC_NORMAL cache, so the "slab holds another slab's obj_exts array" relation can form cycles. With sizeof(struct slabobj_ext) == 16 and the host's geometry:

  • kmalloc-512 has 64 objects/slab -> array is 64*16 == 1024 bytes,

served from kmalloc-1k;

  • kmalloc-1k has 32 objects/slab -> array is 32*16 == 512 bytes,

served from kmalloc-512.

A kmalloc-512 slab and a kmalloc-1k slab therefore hold each other's obj_exts array. Discarding one frees the other's array, which empties and discards that slab, which frees the first's array, and so on: __free_slab() -> free_slab_obj_exts() -> kfree() -> discard_slab() -> __free_slab() recurses along the cycle until the stack is exhausted.

With memory allocation profiling, this allows unbounded recursion in the free path and led to a stack overflow on a production host in the Meta fleet [1]:

BUG: TASK stack guard page was hit Oops: stack guard page RIP: 0010:kfree+0x8/0x5d0 Call Trace: __free_slab+0x66/0xc0 kfree+0x3f0/0x5d0 ... ( ~125x __free_slab <-> kfree ) ... <kernel driver freeing a resource> do_syscall_64

It is proposed [1] to resolve this issue by always serving the obj_exts array allocation from kmalloc caches (or large kmalloc) of sizes larger than the object size. However, as pointed out by Vlastimil Babka [2], this can waste an excessive amount of memory as slabs from large kmalloc sizes (e.g. kmalloc-8k) generally need obj_exts arrays much smaller than the object size.

Therefore, rather than bumping the size, let us take a different approach; disallow formation of cycles between kmalloc types when allocating obj_exts arrays. Currently, all obj_exts arrays are served from normal kmalloc caches. Cycles cannot be created if obj_exts arrays of normal kmalloc caches are served from a special kmalloc type that can never have obj_exts arrays.

To achieve this, create a new kmalloc type called KMALLOC_NO_OBJ_EXT. KMALLOC_NO_OBJ_EXT caches are created with SLAB_NO_OBJ_EXT flag when either 1) memory allocation profiling is not permanently disabled, or 2) kmalloc types with a priority higher than KMALLOC_CGROUP are aliased with KMALLOC_NORMAL.

Sheaf bootstrapping for KMALLOC_NO_OBJ_EXT caches now must be deferred because allocation of a barn can trigger obj_exts array allocation of normal kmalloc caches when the KMALLOC_NO_OBJ_EXT cache for that size is not ready yet. For simplicity, perform bootstrapping of sheaves for all kmalloc caches later.

Introduce a new slab alloc flag, SLAB_ALLOC_NO_OBJ_EXT, to prevent allocation of obj_exts arrays, and let kmalloc_slab() override the type to KMALLOC_NO_OBJ_EXT when specified. Note that kmalloc_type() remains unchanged because kmalloc_flags() bypasses the kmalloc fastpath.

Do not pass SLAB_ALLOC_NO_RECURSE to kmalloc_flags() in alloc_slab_obj_exts() and instead use SLAB_ALLOC_NO_OBJ_EXT only when the objects are allocated from normal kmalloc caches. While this prevents unbounded recursive allocation of obj_exts, it allows KMALLOC_NO_OBJ_EXT caches to have sheaves.

Since sheaf allocations specify SLAB_ALLOC_NO_RECURSE that prevents allocation of both sheaves and obj_exts arrays, the recursion depth is bounded.

obj_exts arrays for non- ---truncated---

Executive ViewAI

Why It Matters

A Linux kernel defect (CVE-2026-74576) causes kernel crashes and downtime on systems running versions before 6.12.103, 6.18.44, or 7.1.8 when memory profiling or container memory controls are active. This affects organizations relying on containerized infrastructure or memory-monitored environments. Patches are available and deployment is essential to prevent production disruptions.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Ubiquitous
Linux kernel underlies virtually all cloud, server, and container infrastructure
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

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 Affected

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