KernelScan.io

HIGH Introduced in 2.6.37

speakup LetterOffsets OOB

CVE-2026-93053

CVSS 7.2 / 10.0 KernelScan AI

CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: speakup: keyhelp: guard letter_offsets possible out-of-range indexing help_init() builds letter_offsets[] by using the first byte of each function name as an index via `(start & 31) - 1`. If function_names are overridden from sysfs (root) with a name starting outside [a–z], the index underflows or exceeds the array, leading to OOB write. Function names can be overridden with the following commands as root: modprobe speakup_soft echo "0 _bad" > /sys/accessibility/speakup/i18n/function_names # then press Insert+2 on /dev/tty This fix checks the first letter in help_init(), and if it is not in the [a–z] range the function returns an error to the caller. Eventually this error is propagated to drivers/accessibility/speakup/main.c:2217, which causes a bleep sound.

02

Engine v0.6.0

Risk summary

A root user on a system with the speakup accessibility module loaded can overwrite a kernel array out of bounds by supplying a crafted function name via sysfs and then triggering the help key combination on the console. This can corrupt kernel memory and potentially crash the system. The attack requires both root privileges and console access, limiting exposure to systems where the speakup module is intentionally loaded.

Affecteddrivers/accessibility/speakup/keyhelp.c (speakup accessibility subsystem)

Vulnerability analysis

The speakup screen-reader subsystem builds an internal lookup array by using the first character of each function name as an index, assuming the name always starts with a lowercase letter. When function names are overridden through the sysfs interface with a name beginning outside the expected range, the index computation underflows or overshoots the array, producing an out-of-bounds write into kernel memory. The fix validates that the first letter falls within the accepted range before using it as an index, skipping any entry that does not. The vulnerable path is reachable only by a user with root privileges who can write to the speakup sysfs attributes and who has access to the physical console to trigger the help key sequence, and only when the speakup module is loaded.

03

BranchIntroducedFixed inPatch commit
5.102.6.375.10.270fd339b9ef0ac
6.12.6.376.1.1886b39969c724d
6.62.6.376.6.1572e91ab73f9be
6.122.6.376.12.110d7deb90c4cd0
6.182.6.376.18.525310334762c3
mainline2.6.377.3-rc16a19ad4d68c9
5.152.6.375.15.221900cd6e5ef46
7.22.6.377.2.6ca4489b3e546
cip/6.122.6.376.12.111-cip32d7deb90c4cd0