CVE-2026-31576

In the Linux kernel, the following vulnerability has been resolved: media: hackrf: fix to not free memory after the device is registered in hackrf_probe() In hackrf driver, the following race condition occurs: ``` CPU0 CPU1 hackrf_probe() kzalloc(); // alloc hackrf_dev .... v4l2_device_register(); .... fd = sys_open("/path/to/dev"); // open hackrf fd .... v4l2_device_unregister(); .... kfree(); // free hackrf_dev .... sys_ioctl(fd, ...); v4l2_ioctl(); video_is_registered() // UAF!! .... sys_close(fd); v4l2_release() // UAF!! hackrf_video_release() kfree(); // DFB!! ``` When a V4L2 or video device is unregistered, the device node is removed so new open() calls are blocked. However, file descriptors that are already open-and any in-flight I/O-do not terminate immediately; they remain valid until the last reference is dropped and the driver's release() is invoked. Therefore, freeing device memory on the error path after hackrf_probe() has registered dev it will lead to a race to use-after-free vuln, since those already-open handles haven't been released yet. And since release() free memory too, race to use-after-free and double-free vuln occur. To prevent this, if device is registered from probe(), it should be modified to free memory only through release() rather than calling kfree() directly.
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:*:*:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: media: hackrf: corrección para no liberar memoria después de que el dispositivo es registrado en hackrf_probe() En el controlador hackrf, la siguiente condición de carrera ocurre: ””“ CPU0 CPU1 hackrf_probe() kzalloc(); // asigna hackrf_dev .... v4l2_device_register(); .... fd = sys_open(“/path/to/dev”); // abre el descriptor de archivo hackrf .... v4l2_device_unregister(); .... kfree(); // libera hackrf_dev .... sys_ioctl(fd, ...); v4l2_ioctl(); video_is_registered() // ¡¡UAF!! .... sys_close(fd); v4l2_release() // ¡¡UAF!! hackrf_video_release() kfree(); // ¡¡DFB!! ””” Cuando un dispositivo V4L2 o de video es dado de baja, el nodo del dispositivo es eliminado, por lo que las nuevas llamadas a open() son bloqueadas. Sin embargo, los descriptores de archivo que ya están abiertos -y cualquier E/S en curso- no terminan inmediatamente; permanecen válidos hasta que la última referencia es liberada y se invoca el release() del controlador. Por lo tanto, liberar la memoria del dispositivo en la ruta de error después de que hackrf_probe() ha registrado el dispositivo conducirá a una condición de carrera de vulnerabilidad de uso después de liberación, ya que esos manejadores ya abiertos aún no han sido liberados. Y dado que release() también libera memoria, ocurren una condición de carrera de uso después de liberación y una vulnerabilidad de doble liberación. Para evitar esto, si el dispositivo es registrado desde probe(), debería modificarse para liberar memoria solo a través de release() en lugar de llamar a kfree() directamente.

Information

Published : 2026-04-24 15:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31576

Mitre link : CVE-2026-31576

CVE.ORG link : CVE-2026-31576


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free