CVE-2025-39684CWE-908

CVE-2025-39684

Medium · published September 5, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
7.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl()

syzbot reports a KMSAN kernel-infoleak in `do_insn_ioctl()`. A kernel

buffer is allocated to hold `insn->n` samples (each of which is an

`unsigned int`). For some instruction types, `insn->n` samples are

copied back to user-space, unless an error code is being returned. The

problem is that not all the instruction handlers that need to return

data to userspace fill in the whole `insn->n` samples, so that there is

an information leak. There is a similar syzbot report for

`do_insnlist_ioctl()`, although it does not have a reproducer for it at

the time of writing.

One culprit is `insn_rw_emulate_bits()` which is used as the handler for

`INSN_READ` or `INSN_WRITE` instructions for subdevices that do not have

a specific handler for that instruction, but do have an `INSN_BITS`

handler. For `INSN_READ` it only fills in at most 1 sample, so if

`insn->n` is greater than 1, the remaining `insn->n - 1` samples copied

to userspace will be uninitialized kernel data.

Another culprit is `vm80xx_ai_insn_read()` in the "vm80xx" driver. It

never returns an error, even if it fails to fill the buffer.

Fix it in `do_insn_ioctl()` and `do_insnlist_ioctl()` by making sure

that uninitialized parts of the allocated buffer are zeroed before

handling each instruction.

Thanks to Arnaud Lecomte for their fix to `do_insn_ioctl()`. That fix

replaced the call to `kmalloc_array()` with `kcalloc()`, but it is not

always necessary to clear the whole buffer.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00180 · 7.1th percentile
Weakness
CWE-908 · Use of Uninitialized Resource
Published
2025-09-05T22:15Z
Affected products (8)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.29, < 5.15.1905.15.190
linux/linux_kernel≥ 5.16, < 6.1.1496.1.149
linux/linux_kernel≥ 6.2, < 6.6.1036.6.103
linux/linux_kernel≥ 6.7, < 6.12.446.12.44
linux/linux_kernel≥ 6.13, < 6.16.46.16.4
linux/linux_kernelall versions—
linux/linux_kernelall versions—
debian/debian_linuxall versions—
References (8)
EPSS history
Timeline
  • 05 SEP 17:20Z
    comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl()
    cvelistv5