Vigil@nce: Linux kernel, integer overflow via drm_mode_dirtyfb_ioctl
January 2012 by Vigil@nce
This bulletin was written by Vigil@nce : http://vigilance.fr/offer
SYNTHESIS OF THE VULNERABILITY
A local attacker can use the DRM_IOCTL_MODE_DIRTYFB ioctl, in
order to generate an integer overflow, leading to a denial of
service and possibly to code execution.
– Severity: 2/4
– Creation date: 11/01/2012
IMPACTED PRODUCTS
– Linux kernel
DESCRIPTION OF THE VULNERABILITY
The DRM_IOCTL_MODE_DIRTYFB ioctl is used to define a framebuffer
area as "dirty" (data changed, and thus have to be displayed
again).
This ioctl uses the drm_mode_fb_dirty_cmd structure which contains
a num_clips field indicating the number of changed areas.
When the user calls the DRM_IOCTL_MODE_DIRTYFB ioctl, the kernel
calls the drm_mode_dirtyfb_ioctl() function of the
drivers/gpu/drm/drm_crtc.c file. However, this function does not
check if the number of areas (num_clips) is positive and inferior
to DRM_MODE_FB_DIRTY_MAX_CLIPS (256).
A local attacker can therefore use the DRM_IOCTL_MODE_DIRTYFB
ioctl, in order to generate an integer overflow, leading to a
denial of service and possibly to code execution.
ACCESS TO THE COMPLETE VIGIL@NCE BULLETIN
http://vigilance.fr/vulnerability/Linux-kernel-integer-overflow-via-drm-mode-dirtyfb-ioctl-11276