CVE-2026-64099 in Linux
Resumen
por VulDB • 2026-07-20
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/v3d: Corrección del uso después de liberar (use-after-free) en los arrays de consulta de trabajos CPU en la ruta de error
La etiqueta fail del ioctl para trabajos CPU llama a kvfree() sobre las matrices de marcas temporales y consultas de rendimiento de cpu_job tras v3d_job_cleanup(), lo cual libera la última referencia al trabajo y desaloca cpu_job. Leer cpu_job en ese momento constituye un uso después de liberar (use-after-free). Además, en la ruta de fallo temprana de v3d_job_init(), se produce una desreferenciación NULL, ya que v3d_job_deallocate() establece a cero el puntero local.
En la ruta de éxito, las matrices se liberan desde la devolución de llamada .free_job del programador (scheduler), pero en la ruta de error, se liberan manualmente, dado que el trabajo nunca se envió al programador. Mientras que la ruta de éxito maneja esto correctamente, la ruta fail no lo hace.
Además, las llamadas manuales a kvfree() solo liberan el almacenamiento del array; no realizan drm_syncobj_put() sobre los syncobjs por consulta que v3d_timestamp_query_info_free() y v3d_performance_query_info_free() liberan en la ruta de éxito. Por tanto, la misma ruta fail que desencadena el uso después de liberar también provoca una fuga (leak) de una referencia a syncobj por cada consulta.
Se unifica la desmontaje del trabajo CPU dentro del destructor kref del trabajo CPU, imitando v3d_render_job_free(). La ranura .free_job del programador vuelve a ser el genérico v3d_sched_job_free(), y la etiqueta fail elimina las llamadas manuales a kvfree(), dejando una única ruta de desmontaje que se alcanza tanto desde el programador como desde la ruta de error del ioctl. Esto elimina por construcción el uso después de liberar, la desreferenciación NULL y la fuga de syncobj.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.