Look up another CVE · open CVE-2026-89999 in the interactive tracker
CVE-2026-89999
HID: wacom: validate report length in wacom_intuos_pro2_bt_irq
Published 2026-09-16 (33 days ago) by the Linux kernel CNA. Subsystem drivers/hid. Debian urgency: not yet assigned.
What to do, per Debian release
Debian's own status for CVE-2026-89999 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | fixedDLA-4841-1 · 2026-10-17 · text | 6.1.190-1 | Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts. |
| Debian 13trixie | fixedDSA-6528-1 · 2026-09-29 · text | 6.12.111-1 | Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian 12bookworm · linux-6.12 | fixedDLA-4817-1 · 2026-10-04 · text | 6.12.111-1~deb12u1 | Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
wacom_intuos_pro2_bt_irq() receives the wire report length in `len` but never consults it before parsing. After the report-id gate it unconditionally calls wacom_intuos_pro2_bt_pen() and then, selected by features.type, a fixed chain of sub-parsers, none of which receive `len`: wacom_intuos_pro2_bt_pen(wacom); if (type == INTUOSP2_BT || type == INTUOSP2S_BT) { wacom_intuos_pro2_bt_touch(wacom); wacom_intuos_pro2_bt_pad(wacom); wacom_intuos_pro2_bt_battery(wacom); } else { wacom_intuos_gen3_bt_pad(wacom); wacom_intuos_gen3_bt_battery(wacom); } Each sub-parser dereferences wacom->data at fixed offsets. The furthest byte touched on each branch is: INTUOSP2_BT / INTUOSP2S_BT: wacom_intuos_pro2_bt_pad() reads data[285] (the touchring byte), so the report must be at least 286 bytes; INTUOSHT3_BT ("gen3"): wacom_intuos_gen3_bt_battery() reads data[45], so the report must be at least 46 bytes. features.type is selected from the VID/PID id_table entry and wacom_setup_device_quirks() force-registers the pen/pad/touch inputs for that type independent of the report descriptor, so a malicious or malfunctioning paired/spoofed Bluetooth peripheral can advertise that VID/PID and send an undersized report that still satisfies the data[0] == 0x80/0x81 gate. The driver then reads past the received report and forwards the bytes to userspace via evdev (MSC_SERIAL / ABS_MISC / ABS_WHEEL on the pen and pad input nodes), an out-of-bounds read with a concrete userspace read-back channel, and a true out-of-bounds read on transports whose backing buffer is sized to the (small) report descriptor rather than a fixed-size staging buffer. This is the same class of bug commit 2f1763f62909 ("HID: wacom: fix out-of-bounds read in wacom_intuos_bt_irq") already hardened in the sibling wacom_intuos_bt_irq(), which guards each report id against its minimum length before parsing. Guard wacom_intuos_pro2_bt_irq() the same way: before parsing, reject reports shorter than the furthest offset the selected branch actually dereferences, warn, and bail out. Because the whole pen/touch/pad/ battery chain runs unconditionally per branch, a single up-front check against the maximum offset (286 bytes for INTUOSP2_BT/INTUOSP2S_BT, 46 bytes for the gen3 branch) bounds every sub-parser. Returning 0 on a short report also skips those calls for the same malformed report, which is the safe, conservative behavior.
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
drivers/hid/wacom_wac.c
- What this is
- HID WACOM DRIVERMAINTAINERS section matched on drivers/hid/wacom_* · linux-input@vger.kernel.org · Maintained
- Kernel module
- wacom
Check it on the machine
grep -wE 'CONFIG_HID|CONFIG_HID_SUPPORT|CONFIG_HID_WACOM' /boot/config-$(uname -r)Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.
lsmod | grep -w wacomPrints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.
Show whether Debian builds this, per release
Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.
- bookworm, trixie, forky, sid, bookworm · linux-6.12Mnot built on amd64/cloud-amd64, arm64/cloud-arm64
- M
- a module where it is built at all; some flavours do not build it
- Build switches
- CONFIG_HID, CONFIG_HID_SUPPORT, CONFIG_HID_WACOM
- Reads as
- all on means the file is compiled; any one off means it is not.
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages
Signals
- Published
- 2026-09-16 (33 days ago)source
- CVSS
- 8.1 high
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Hsource recompute it - Attack vector
- adjacent network (AV:A)source
- EPSS
- 0.36%, higher than 28.2% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- drivers/hid
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 4.11 | 5.10.270 | d2844f3fcd05 |
| 4.11 | 5.15.221 | 1bfc0547b81d |
| 4.11 | 6.1.188 | 84781a1f3c5d |
| 4.11 | 6.6.157 | 96dd0af7597a |
| 4.11 | 6.12.110 | 114af803e409 |
| 4.11 | 6.18.51 | 74ec08f7b81c |
| 4.11 | 7.2.5 | 0cdc6cb242dd |
| 4.11 | 7.3 | a8e04f3f894c |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4841-1 | 2026-10-17 | bookworm 6.1.190-1 | tracker |
| DLA-4817-1 | 2026-10-04 | bookworm 6.12.111-1~deb12u1 | tracker |
| DSA-6528-1 | 2026-09-29 | trixie 6.12.111-1 | tracker |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:AAttack vector, adjacent network
- wacom_intuos_pro2_bt_irq() is reached only for BUS_BLUETOOTH Wacom Intuos Pro/HT3 devices (VID 0x056a, PIDs 0x360/0x361/0x377/0x379/0x393/0x3c6/0x3c8/0x3dd) via hidp/uhid HID input reports over L2CAP, so the attacker must be a Bluetooth HID peer on the same radio segment.
- AC:LAttack complexity, low
- The attacker fully controls the HID report ID, descriptor, and wire length; any report with data[0]==0x80/0x81 that hid_get_report() accepts is parsed at fixed offsets with no length check, so a short report reliably triggers the OOB read.
- PR:NPrivileges required, none
- The attacker is the Bluetooth HID peripheral sending input reports and needs no local account or capability; BlueZ/hidp connection setup is a host-side management path, not a privilege required of the reporting device.
- UI:NUser interaction, none
- After a paired, spoofed, or already-connected Intuos Pro/HT3 Bluetooth HID session exists, the peer can emit the short 0x80/0x81 report on the interrupt channel without further victim clicks, pairing prompts, or mounts.
- S:UScope, unchanged
- The Wacom HID parser and the resulting kernel/input/power_supply impact remain under the same host kernel security authority, with no VM escape, IOMMU/DMA bypass, or other cross-boundary effect.
- C:HConfidentiality impact, high
- The parsers read wacom->data at fixed offsets through data[285] (286 bytes) ignoring len, which is a kernel OOB read, and those bytes are reported to userspace via evdev (MSC_SERIAL, ABS_MISC, ABS_WHEEL, pen/touch axes), a concrete disclosure channel.
- I:NIntegrity impact, none
- The defect is an out-of-bounds read of the HID report buffer, not an OOB write or UAF, and it does not yield an attacker-controlled kernel memory modification or control-flow hijack primitive.
- A:HAvailability impact, high
- Reading hundreds of bytes past a short HID report can fault when the transport buffer is sized to the received report or descriptor rather than a large staging buffer, and an adjacent peer can repeat the malformed report to panic or oops the host.