CVE-2025-39684

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.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:*

Configuration 2 (hide)

cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:*

History

19 Oct 2026, 21:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: comedi: Corrección del uso de memoria no inicializada en do_insn_ioctl() y do_insnlist_ioctl() syzbot informa de una fuga de información del kernel (kernel-infoleak) de KMSAN en 'do_insn_ioctl()'. Se asigna un búfer del kernel para contener 'insn->n' muestras (cada una de las cuales es un 'unsigned int'). Para algunos tipos de instrucción, se copian 'insn->n' muestras de vuelta al espacio de usuario, a menos que se esté devolviendo un código de error. El problema es que no todos los gestores de instrucción que necesitan devolver datos al espacio de usuario rellenan la totalidad de las 'insn->n' muestras, de modo que hay una fuga de información. Hay un informe similar de syzbot para 'do_insnlist_ioctl()', aunque no tiene un reproductor para ello en el momento de escribir esto. Un culpable es 'insn_rw_emulate_bits()' que se utiliza como gestor para instrucciones 'INSN_READ' o 'INSN_WRITE' para subdispositivos que no tienen un gestor específico para esa instrucción, pero sí tienen un gestor 'INSN_BITS'. Para 'INSN_READ' solo rellena como máximo 1 muestra, así que si 'insn->n' es mayor que 1, las 'insn->n - 1' muestras restantes copiadas al espacio de usuario serán datos del kernel no inicializados. Otro culpable es 'vm80xx_ai_insn_read()' en el controlador 'vm80xx'. Nunca devuelve un error, incluso si falla al rellenar el búfer. Se corrige en 'do_insn_ioctl()' y 'do_insnlist_ioctl()' asegurándose de que las partes no inicializadas del búfer asignado se pongan a cero antes de manejar cada instrucción. Gracias a Arnaud Lecomte por su corrección a 'do_insn_ioctl()'. Esa corrección reemplazó la llamada a 'kmalloc_array()' por 'kcalloc()', pero no siempre es necesario limpiar todo el búfer.

Information

Published : 2025-09-05 18:15

Updated : 2026-10-19 21:10


NVD link : CVE-2025-39684

Mitre link : CVE-2025-39684

CVE.ORG link : CVE-2025-39684


JSON object : View

Products Affected

debian

  • debian_linux

linux

  • linux_kernel
CWE
CWE-908

Use of Uninitialized Resource