В ядре Linux устранена следующая уязвимость:
drm/hyperv: проверьте разрешение_count и исправьте резервный вариант WIN8.
SYNTHVID_RESOLUTION_RESPONSE с разрешением_count > 64 проходит мимо
массив поддерживаемого_разрешения[SYNTHVID_MAX_RESOLUTION_COUNT] в
цикл разбора. Связанное разрешение_count с размером массива, свернутым
в существующую нулевую проверку. Если проверка разрешения WIN10 не удалась, вызывающий абонент в
Hyperv_connect_vsp() оставил hv->screen_*_max/preferred_* незаполненным,
который устанавливает mode_config.max_width/max_height равным 0 и делает
drm_internal_framebuffer_create() отклоняет каждый фреймбуфер пользовательского пространства
с -ЭИНВАЛ.
В ветке до WIN10 был такой же пробел для
предпочтительная_ширина/предпочтительная_высота. Используйте один резервный вариант после проверки
охраняется screen_width_max == 0, поэтому оба пути сходятся на WIN8
по умолчанию.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: drm/hyperv: validate resolution_count and fix WIN8 fallback A SYNTHVID_RESOLUTION_RESPONSE with resolution_count > 64 walks past the supported_resolution[SYNTHVID_MAX_RESOLUTION_COUNT] array in the parse loop. Bound resolution_count against the array size, folded into the existing zero-check. When the WIN10 resolution probe fails, the caller in hyperv_connect_vsp() left hv->screen_*_max / preferred_* unpopulated, which sets mode_config.max_width / max_height to 0 and makes drm_internal_framebuffer_create() reject every userspace framebuffer with -EINVAL. The pre-WIN10 branch had the same gap for preferred_width / preferred_height. Use a single post-probe fallback guarded by screen_width_max == 0 so both paths converge on the WIN8 defaults.
Характеристики атаки
Последствия
Строка CVSS v3.1