Cyber Resilience

CVE-2023-52452

Linux Kernel 5.12 – 6.6.14

Published
22 February 2024
Modified
21 November 2024
Patch / advisory
CVSS Score v3.1 7.8
Click a component to see what it means
Raw vectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
EPSS Score 0.0024 15th percentile
Risk Priority 55 floored blend · peak EPSS

Summary

CVE-2023-52452 is a high-severity Improper Initialization (CWE-665) vulnerability in Linux Linux Kernel. Its CVSS base score is 7.8 (High).

Operationally, ranked at the 15th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SA-8 (Security and Privacy Engineering Principles) — see the control section below for these in your framework.

EU & UK References

Vulnerability Data

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix accesses to uninit stack slots Privileged programs are supposed to be able to read uninitialized stack memory (ever since 6715df8d5) but, before this patch, these accesses were permitted…

more

inconsistently. In particular, accesses were permitted above state->allocated_stack, but not below it. In other words, if the stack was already "large enough", the access was permitted, but otherwise the access was rejected instead of being allowed to "grow the stack". This undesired rejection was happening in two places: - in check_stack_slot_within_bounds() - in check_stack_range_initialized() This patch arranges for these accesses to be permitted. A bunch of tests that were relying on the old rejection had to change; all of them were changed to add also run unprivileged, in which case the old behavior persists. One tests couldn't be updated - global_func16 - because it can't run unprivileged for other reasons. This patch also fixes the tracking of the stack size for variable-offset reads. This second fix is bundled in the same commit as the first one because they're inter-related. Before this patch, writes to the stack using registers containing a variable offset (as opposed to registers with fixed, known values) were not properly contributing to the function's needed stack size. As a result, it was possible for a program to verify, but then to attempt to read out-of-bounds data at runtime because a too small stack had been allocated for it. Each function tracks the size of the stack it needs in bpf_subprog_info.stack_depth, which is maintained by update_stack_depth(). For regular memory accesses, check_mem_access() was calling update_state_depth() but it was passing in only the fixed part of the offset register, ignoring the variable offset. This was incorrect; the minimum possible value of that register should be used instead. This tracking is now fixed by centralizing the tracking of stack size in grow_stack_state(), and by lifting the calls to grow_stack_state() to check_stack_access_within_bounds() as suggested by Andrii. The code is now simpler and more convincingly tracks the correct maximum stack size. check_stack_range_initialized() can now rely on enough stack having been allocated for the access; this helps with the fix for the first issue. A few tests were changed to also check the stack depth computation. The one that fails without this patch is verifier_var_off:stack_write_priv_vs_unpriv.

CWE(s)

Related Threats

CVEs Like This One

CVE-2024-39485Same product: Linux Linux Kernel
CVE-2024-42078Same product: Linux Linux Kernel
CVE-2024-44947Same product: Linux Linux Kernel
CVE-2024-39301Same product: Linux Linux Kernel
CVE-2024-46697Same product: Linux Linux Kernel
CVE-2025-21906Same product: Linux Linux Kernel
CVE-2024-45018Same product: Linux Linux Kernel
CVE-2024-38558Same product: Linux Linux Kernel
CVE-2024-49994Same product: Linux Linux Kernel
CVE-2024-39509Same product: Linux Linux Kernel

Affected Assets

linux
linux kernel
5.12 — 6.6.14 · 6.7.0 — 6.7.2

Mitigating Controls

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation directly exercises initialization paths and can reveal missing or incorrect resource setup.

Engineering principles applied during design and implementation can require explicit initialization to a known state.

Requiring the system to fail to a known state structurally reduces the chance that uninitialized resources remain reachable.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly enforce proper resource initialization during coding and testing.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing can detect uninitialized variables but does not itself enforce initialization practices.

prevents

Configuration management can enforce secure defaults and initialization settings but is not the primary control for code-level initialization.

prevents

Secure development life cycle mandates initialization checks and secure defaults that directly prevent improper resource initialization.

prevents

Secure system architecture and engineering principles require explicit initialization of resources and secure state management.

prevents

Secure coding standards explicitly forbid uninitialized variables and mandate proper resource initialization before use.

References