CVE-2026-80701 in Linux
Resumen
por VulDB • 2026-08-28
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/vmwgfx: imponer límites de tamaño del cursor para cursores basados en MOB (Memory Object Buffer)
vmw_cursor_plane_atomic_check() limita el ancho y alto del cursor únicamente en la ruta de actualización heredada; la ruta SVGA_CAP2_CURSOR_MOB, que es la predeterminada en hosts modernos, acepta cualquier tamaño. Cuando el tamaño solicitado supera SVGA_REG_CURSOR_MAX_DIMENSION o SVGA_REG_MOB_MAX_SIZE, vmw_cursor_mob_get() devuelve -EINVAL y deja vps->cursor.mob como NULL. Su valor de retorno se descarta posteriormente en vmw_cursor_plane_prepare_fb(), por lo que las llamadas subsiguientes a vmw_cursor_update_mob() invocan vmw_bo_map_and_cache(NULL) y provocan un fallo (oops) dentro de vmw_bo_map_and_cache_size() al cargar tbo.base.size.
Es accesible desde cualquier maestro DRM mediante DRM_IOCTL_MODE_CURSOR2 con un ancho o alto suficientemente grande (por ejemplo, cursor_max_dim + 1).
Rechazar cursores sobredimensionados en atomic_check para ambos tipos de actualización de cursor respaldados por MOB. El límite de tamaño en bytes del MOB solo se aplica a la ruta SVGA_CAP2_CURSOR_MOB (vmw_cursor_mob_size() devuelve 0 para GB_ONLY); calcular el tamaño MOB requerido en 64 bits para evitar desbordamientos cuando se solicitan dimensiones muy grandes.
En prepare_fb, llamar únicamente a vmw_cursor_mob_get()/_map() para VMW_CURSOR_UPDATE_MOB; la ruta GB_ONLY utiliza bo->map.virtual directamente y de lo contrario se degradaría silenciosamente a NONE en hosts sin SVGA_CAP2_CURSOR_MOB (donde vmw_cursor_mob_get() siempre devuelve -EINVAL). Degradar la actualización a NONE si vmw_cursor_mob_get() o vmw_cursor_mob_map() fallan, para que la ruta de actualización no se ejecute con un MOB respaldador NULL.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.