CVE-2026-89466
nicheUnterminated firmware strings in Linux kernel qcom_battmgr cause OOB read
The Qualcomm battery manager driver (qcom_battmgr) in the Linux kernel copies firmware-supplied model_number, serial_number, and oem_info strings without guaranteeing NUL termination, so when the battery-management firmware sends a string that fills the entire BATTMGR_STRING_LEN field, the later '%s' print in power_supply_format_property() reads past the destination buffer into the adjacent struct members. Any local, unprivileged user can trigger the over-read by reading the affected power_supply sysfs attributes, which can disclose neighboring kernel heap memory (confidentiality: high) or fault the kernel and cause a denial of service (availability: high), per the CVSS 7.7 vector. The flaw is in the SC8280XP firmware path of drivers/power/supply/qcom_battmgr.c, so only systems with the BATTERY_QCOM_BATTMGR driver enabled and Qualcomm battery-manager firmware present are affected — chiefly SC8280XP/SM8350-based ARM laptops and development boards (e.g., ThinkPad X13s-class hardware) running vulnerable kernels. Because the malicious input originates from the device's own battery-management firmware, practical exploitation requires hostile or corrupted firmware, and no public proof of concept or in-the-wild exploitation is known. The fix switches the copy to strscpy() so strings are always terminated, matching the existing SM8350 code path.
What to do: Upgrade to a kernel containing the qcom_battmgr strscpy() fix, following your distribution's kernel or stable-branch advisory for the backport. To gauge exposure, confirm whether a qcom_battmgr-backed power supply exists (e.g., /sys/class/power_supply battery exposing model_number, serial_number, or oem_info); most x86 servers, desktops, and non-Qualcomm-hardware systems are unaffected because the driver is absent or unbound. Treat anomalous or corrupted battery-management firmware with suspicion, since firmware-supplied strings are the input that drives the over-read.
| Linux kernel (drivers/power/supply/qcom_battmgr.c, SC8280XP firmware-string path) | All kernel releases shipping the qcom_battmgr driver prior to the strscpy() fix; no fixed version number is given in the record, so consult distro/kernel stable |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: power: supply: qcom_battmgr: terminate the strings from firmware The qcom_battmgr_sc8280xp_strcpy() takes a Pascal-style string when the firmware sends one. Otherwise it copies all BATTMGR_STRING_LEN bytes and leaves the destination without a terminator. Those destinations are model_number, serial_number and oem_info, each BATTMGR_STRING_LEN and declared next to each other. They go out to user space as val->strval, which power_supply_format_property() prints with "%s", so a firmware string that fills the whole field makes that read run into the following members. Use strscpy() so the copy always terminates, the way the SM8350 path already does for the same field.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.