Katalog CVE

CVE-2025-39684

ŚrednieCVSS 5.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 7 - wyżej niż 7% wszystkich znanych CVE

Streszczenie

W jądrze Linux w funkcjach do_insn_ioctl() i do_insnlist_ioctl() podsystemu comedi występuje wyciek niezainicjowanej pamięci jądra do przestrzeni użytkownika. Niektóre procedury obsługi instrukcji nie wypełniają wszystkich żądanych próbek, przez co kopiowane są niezainicjowane dane.

Ocena ryzyka

Lokalny użytkownik może odczytać niezainicjowane dane z pamięci jądra, co stanowi naruszenie poufności i może ujawnić wrażliwe informacje.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę (zerowanie niezainicjowanych części bufora przed obsługą instrukcji) lub ogranicz dostęp do urządzeń comedi.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS