CVE-2024-36892: mm/slub: avoid zeroing outside-object freepointer for single free
In the Linux kernel, the following vulnerability has been resolved:
mm/slub: avoid zeroing outside-object freepointer for single free
Commit 284f17ac13fe ("mm/slub: handle bulk and single object freeing
separately") splits single and bulk object freeing in two functions
slab_free() and slab_free_bulk() which leads slab_free() to call
slab_free_hook() directly instead of slab_free_freelist_hook().
If `init_on_free` is set, slab_free_hook() zeroes the object.
Afterward, if `slub_debug=F` and `CONFIG_SLAB_FREELIST_HARDENED` are
set, the do_slab_free() slowpath executes freelist consistency
checks and try to decode a zeroed freepointer which leads to a
"Freepointer corrupt" detection in check_object().
During bulk free, slab_free_freelist_hook() isn't affected as it always
sets it objects freepointer using set_freepointer() to maintain its
reconstructed freelist after `init_on_free`.
For single free, object's freepointer thus needs to be avoided when
stored outside the object if `init_on_free` is set. The freepointer left
as is, check_object() may later detect an invalid pointer value due to
objects overflow.
To reproduce, set `slub_debug=FU init_on_free=1 log_level=7` on the
command line of a kernel build with `CONFIG_SLAB_FREELIST_HARDENED=y`.
dmesg sample log:
[ 10.708715] =============================================================================
[ 10.710323] BUG kmalloc-rnd-05-32 (Tainted: G B T ): Freepointer corrupt
[ 10.712695] -----------------------------------------------------------------------------
[ 10.712695]
[ 10.712695] Slab 0xffffd8bdc400d580 objects=32 used=4 fp=0xffff9d9a80356f80 flags=0x200000000000a00(workingset|slab|node=0|zone=2)
[ 10.716698] Object 0xffff9d9a80356600 @offset=1536 fp=0x7ee4f480ce0ecd7c
[ 10.716698]
[ 10.716698] Bytes b4 ffff9d9a803565f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 10.720703] Object ffff9d9a80356600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 10.720703] Object ffff9d9a80356610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 10.724696] Padding ffff9d9a8035666c: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 10.724696] Padding ffff9d9a8035667c: 00 00 00 00 ....
[ 10.724696] FIX kmalloc-rnd-05-32: Object at 0xffff9d9a80356600 not freed
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel memory allocator bug in SLUB. Under specific hardening and debug settings, freeing a single object can corrupt or mis-handle the allocator's free pointer checks, triggering kernel memory corruption detection. The public record does not establish real-world exploitation or broad default exposure.
Executive priority
Treat this as a kernel maintenance item unless your fleet uses the specific hardening/debug configuration. Patch through normal kernel update channels, with higher urgency for systems showing allocator corruption logs.
Technical view
The issue follows commit 284f17ac13fe, where single-object free paths call slab_free_hook() directly. With init_on_free, slub_debug=F, and CONFIG_SLAB_FREELIST_HARDENED, the object is zeroed before slowpath freelist checks decode the free pointer, producing a Freepointer corrupt condition.
Likely exposure
Most likely exposure is Linux systems running affected 6.8 or 6.9-series kernels with SLUB freelist hardening and relevant init_on_free and slub_debug settings. The source bundle does not prove default distribution exposure.
Exploitation context
CISA KEV is false, and the provided sources do not report active exploitation. The CVE text provides a reproduction condition and dmesg sample, but not evidence of weaponized use or remote attackability.
Researcher notes
Evidence supports a narrow SLUB allocator correctness issue on the single-free path. Security impact, exploitability, and default reach are not established in the provided sources, so avoid assigning impact beyond the kernel allocator corruption condition described.
Mitigation direction
Apply a Linux stable kernel containing the referenced fixes, or a vendor backport.
Check your distribution's kernel advisory for CVE-2024-36892 coverage.
Prioritize systems using affected 6.8 or 6.9 kernels with SLUB hardening/debug options.
Avoid disabling hardening features as a primary fix without vendor guidance.
Validation and detection
Inventory Linux kernel versions against the affected 6.8 and 6.9 entries.
Review kernel configuration for CONFIG_SLAB_FREELIST_HARDENED=y.
Review boot settings for init_on_free and slub_debug use.
Check kernel logs for Freepointer corrupt messages from kmalloc SLUB caches.
Confirm the installed kernel includes one of the referenced stable fixes or vendor equivalent.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-36892 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.