ZeroHour

CVE-2026-81012

mass

Off-by-one NUL-byte heap overflow in Linux kernel hp-bioscfg driver

CVSS 3.1
8.4 high
EPSS
Published
()
Modified
AI analysis

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.

Affected
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
Estimated exposure
massPlausibly 1–10 million devices (HP PCs running Linux with the hp-bioscfg driver loaded) — HP is a top-two PC vendor with roughly 20% market share shipping 60M+ units per year, and Linux's ~3–4% desktop share implies several million HP machines run kernels that can load hp-bioscfg; practical risk additionally requires local code…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.