CVE-2026-81012
massOff-by-one NUL-byte heap overflow in Linux kernel hp-bioscfg driver
The Linux kernel's HP BIOS configuration driver (platform/x86 hp-bioscfg) contains an off-by-one heap buffer overflow in hp_get_string_from_buffer(): when a string converted from BIOS-held data is exactly as long as the destination buffer, the unconditional NUL-terminator write lands one byte past the end of fixed-size buffers such as path[512], current_value[512], current_password/current_value[64], and the per-entry encodings[][512] and prerequisites[][512] arrays. The flaw sits on the local firmware-attributes code path, so an attacker with unprivileged local access on an affected HP machine can plausibly trigger a one-byte zero write past a kernel heap buffer, corrupting adjacent memory with potential for privilege escalation or a crash/DoS — reflected in the high CVSS 8.4 rating with full confidentiality, integrity and availability impact. Affected systems are HP laptops and desktops running Linux kernels that ship the hp-bioscfg driver, which only loads on HP hardware. No public proof of concept is known, the issue is not in CISA's KEV catalog, and exploitation in the wild is presumed absent.
What to do: Apply kernel updates containing the fix (the size clamp in hp_get_string_from_buffer() changed from '>' to '>=') as soon as your distribution ships a backport, and reboot into the patched kernel. In the interim, minimize unprivileged local accounts on HP Linux systems and monitor for unexpected reads/writes under /sys/class/firmware-attributes/ on HP hardware. There is no clean configuration-only workaround, since the overflow occurs while parsing BIOS-provided strings.
| Linux (kernel.org) Linux kernel, platform/x86 hp-bioscfg driver | — |
| HP laptops and desktops whose BIOS configuration is exposed through the firmware-attributes interface consumed by hp-bio | — |
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: platform/x86: hp-bioscfg: fix off-by-one write in hp_get_string_from_buffer() hp_get_string_from_buffer() clamps the converted string length against the destination buffer size with "size > dst_size", so when the converted length is exactly equal to dst_size, conv_dst_size is left at dst_size and the unconditional NUL terminator write dst[conv_dst_size] = 0; lands one byte past the destination buffer. This is the same shape of bug as the previously fixed off-by-one in hp_convert_hexstr_to_str(): the buffer is sized correctly for the content, but the terminator write is never checked against that size. Fix by changing the comparison to ">=" so conv_dst_size is always left with room for the terminator. All fixed-size destinations that reach this function (path[512], current_value[512], current_password/current_value[64], and the per-entry buffers in encodings[][512] and prerequisites[][512]) are affected.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.