Katalog CVE

CVE-2025-38722

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.14%

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

Streszczenie

W sterowniku habanalabs w jądrze Linux wykryto podatność use-after-free (UAF) w funkcji export_dmabuf(). Po wstawieniu referencji do pliku do tablicy deskryptorów inny wątek mógł zamknąć ten plik, a następnie funkcja kontynuowała dostęp do obiektów, które mogły zostać już zniszczone.

Ocena ryzyka

Atakujący może wykorzystać tę podatność do uzyskania dostępu do już zwolnionej pamięci, co może prowadzić do wykonania dowolnego kodu w kontekście jądra lub awarii systemu.

Rekomendacja

Należy zaktualizować jądro Linux do wersji zawierającej poprawkę, która zmienia kolejność operacji: rezerwacja deskryptora przed utworzeniem pliku, a fd_install() dopiero po pełnym przygotowaniu.

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: habanalabs: fix UAF in export_dmabuf() As soon as we'd inserted a file reference into descriptor table, another thread could close it. That's fine for the case when all we are doing is returning that descriptor to userland (it's a race, but it's a userland race and there's nothing the kernel can do about it). However, if we follow fd_install() with any kind of access to objects that would be destroyed on close (be it the struct file itself or anything destroyed by its ->release()), we have a UAF. dma_buf_fd() is a combination of reserving a descriptor and fd_install(). habanalabs export_dmabuf() calls it and then proceeds to access the objects destroyed on close. In particular, it grabs an extra reference to another struct file that will be dropped as part of ->release() for ours; that "will be" is actually "might have already been". Fix that by reserving descriptor before anything else and do fd_install() only when everything had been set up. As a side benefit, we no longer have the failure exit with file already created, but reference to underlying file (as well as ->dmabuf_export_cnt, etc.) not grabbed yet; unlike dma_buf_fd(), fd_install() can't fail.

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