CVE-2025-39904: arm64: kexec: initialize kexec_buf struct in load_other_segments()
In the Linux kernel, the following vulnerability has been resolved:
arm64: kexec: initialize kexec_buf struct in load_other_segments()
Patch series "kexec: Fix invalid field access".
The kexec_buf structure was previously declared without initialization.
commit bf454ec31add ("kexec_file: allow to place kexec_buf randomly")
added a field that is always read but not consistently populated by all
architectures. This un-initialized field will contain garbage.
This is also triggering a UBSAN warning when the uninitialized data was
accessed:
------------[ cut here ]------------
UBSAN: invalid-load in ./include/linux/kexec.h:210:10
load of value 252 is not a valid value for type '_Bool'
Zero-initializing kexec_buf at declaration ensures all fields are cleanly
set, preventing future instances of uninitialized memory being used.
An initial fix was already landed for arm64[0], and this patchset fixes
the problem on the remaining arm64 code and on riscv, as raised by Mark.
Discussions about this problem could be found at[1][2].
This patch (of 3):
The kexec_buf structure was previously declared without initialization.
commit bf454ec31add ("kexec_file: allow to place kexec_buf randomly")
added a field that is always read but not consistently populated by all
architectures. This un-initialized field will contain garbage.
This is also triggering a UBSAN warning when the uninitialized data was
accessed:
------------[ cut here ]------------
UBSAN: invalid-load in ./include/linux/kexec.h:210:10
load of value 252 is not a valid value for type '_Bool'
Zero-initializing kexec_buf at declaration ensures all fields are
cleanly set, preventing future instances of uninitialized memory being
used.
Security readout for executives and security teams
Plain-English summary
CVE-2025-39904 is a Linux kernel bug in arm64 kexec handling. A structure was used before all fields were initialized, which could make the kernel read garbage data. The reported impact is availability loss, meaning a local low-privileged attacker could potentially cause a system disruption, not data theft or integrity loss.
Executive priority
Treat this as a moderate-priority reliability and local hardening issue. It does not indicate remote compromise, data exposure, or confirmed exploitation, but kernel availability impact warrants normal patch-cycle remediation, faster on shared or sensitive hosts.
Technical view
The issue is CWE-908 in Linux kernel kexec code. A kexec_buf structure in load_other_segments() was declared without zero-initialization after a later change added a Boolean field that is always read. UBSAN reported invalid Boolean loads. The fix zero-initializes kexec_buf so unread fields start cleanly.
Likely exposure
Exposure is mainly Linux systems using affected kernel builds on arm64 kexec code paths. The CVE source lists Linux kernel versions including 6.16 and 6.17-related entries, but downstream vendor package status must be verified separately.
Exploitation context
The CVSS vector is local, low complexity, low privileges, no user interaction, with high availability impact only. The source bundle does not show CISA KEV listing or evidence of active exploitation.
Researcher notes
The evidence supports an uninitialized kexec_buf field read in arm64 kexec code, fixed by zero-initialization. The bundle references two kernel stable commits. It does not provide exploit proof, downstream package mappings, or a non-patch mitigation.
Mitigation direction
Apply Linux kernel updates containing the referenced stable fixes.
Check your distribution vendor advisories for backported kernel packages.
Prioritize exposed multi-user systems where local users can execute code.
If patching is delayed, monitor vendor guidance for supported mitigations.
Validation and detection
Inventory Linux kernel versions and architectures across affected fleets.
Confirm whether deployed kernels include the referenced stable commits.
Check distribution security trackers for package-level fixed versions.
Review logs for UBSAN invalid-load reports in kexec paths.
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.
cwe · low confidence lookup
CWE-908: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
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.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-908 · source CWE mapping
Use of Uninitialized Resource
Use of Uninitialized Resource represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.