CVE Catalog

CVE-2026-63949

Low risk· EPSS 7%
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.17%

7th percentile - higher than 7% of all known CVEs

Summary

In the Linux kernel, an out-of-bounds (OOB) read vulnerability exists in the auxdisplay line-display driver when writing zero bytes to the 'message' sysfs attribute. The linedisp_display() function reads msg[count - 1] before checking if count is zero, causing a read at msg[-1] which can lead to kernel panic on KASAN-enabled systems or silent adjacent data reads on stock kernels.

Risk Assessment

A local attacker can trigger a kernel panic or potentially leak kernel memory by writing an empty string to the sysfs file. This affects all auxdisplay drivers using linedisp_register()/linedisp_attach(), including ht16k33, max6959, img-ascii-lcd, and seg-led-gpio.

Recommendation

Immediately update the Linux kernel to a version containing the fix (commit that guards against out-of-bounds read). If updating is not possible, temporarily restrict access to sysfs files related to auxdisplay devices.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: auxdisplay: line-display: fix OOB read on zero-length message_store() linedisp_display() unconditionally reads msg[count - 1] before checking whether count is zero, so a write of zero bytes to the message sysfs attribute hits msg[-1]: write(fd, "", 0); -> message_store(..., buf, count=0) -> linedisp_display(linedisp, buf, count=0) -> msg[count - 1] == '\n' ; OOB read The kernfs write buffer for that store is a 1-byte allocation (kernfs_fop_write_iter() does kmalloc(len + 1) with len == 0), so msg[-1] is a 1-byte read before the slab object. On a KASAN-enabled kernel this trips an out-of-bounds report and panics; on stock kernels it silently reads adjacent slab data and, if that byte happens to be '\n', the following count-- wraps ssize_t 0 to -1 and is then passed to kmemdup_nul(). linedisp_display() is reached from the message_store() sysfs callback (drivers/auxdisplay/line-display.c message attribute, mode 0644) and from the in-tree initial-message setup with count == -1, so the OOB path is only userspace-triggerable via zero-byte writes; vfs_write() does not short-circuit on count == 0 and kernfs_fop_write_iter() dispatches the store callback regardless. Guard the trailing-newline trim with a count check. The existing if (!count) block then takes the clear-display path unchanged. Affects every auxdisplay driver that registers via linedisp_register() / linedisp_attach(): ht16k33, max6959, img-ascii-lcd, seg-led-gpio.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS