Faille Linux : débordement d’entier de drm_modeset_ctl

Par:
fredericmazue

lun, 09/05/2011 - 15:00

L'ioctl DRM_IOCTL_MODESET_CTL permet de définir le "vertical blank" (durée de retour de faisceau) d'une carte vidéo. Elle est identifiée par son "crtc" (crt controller), qui est un entier positif.

L'ioctl DRM_IOCTL_MODESET_CTL appelle la fonction drm_modeset_ctl() définie dans le fichier drivers/gpu/drm/drm_irq.c. Cette fonction vérifie que le crtc ne soit pas trop grand. Cependant cette comparaison est menée sur des entiers signés. Un attaquant peut donc employer un grand numéro de crtc qui devient négatif et contourne donc la comparaison. Les opérations de l'ioctl (DRM_PRE_MODESET et DRM_POST_MODESET) travaillent alors à une adresse mémoire invalide et corrompent la mémoire.

Un attaquant local, qui est autorisé à modifier la configuration vidéo, peut donc employer un ioctl afin de mener un déni de service ou de faire exécuter du code.

Source : Vigil@nce