Уязвимость BDU:2023-08081

Идентификатор: BDU:2023-08081.
Наименование уязвимости: Уязвимость функции drm_mode_setcrtc() модуля drivers/gpu/drm/drm_crtc.c драйвера DRM ядра операционной системы Linux, позволяющая нарушителю оказать влияние на целостность и доступность информации и выполнить произвольный код.
Описание уязвимости: Уязвимость функции drm_mode_setcrtc() модуля drivers/gpu/drm/drm_crtc.c драйвера DRM ядра операционной системы Linux связана с доступом к неинициализированной динамической памяти. Эксплуатация уязвимости может позволить нарушителю оказать влияние на целостность и доступность информации и выполнить произвольный код
Уязвимое ПО: Операционная система ООО «Открытая мобильная платформа» ОС Аврора до 4.0.2.249 включительно | Операционная система ООО «Открытая мобильная платформа» ОС Аврора до 4.0.2.249 включительно | Операционная система АО «НППКТ» ОСОН ОСнова Оnyx до 2.9 | Операционная система Linux от 6.2 до 6.6.12 включительно | Операционная система Linux от 5.5 до 5.10.208 включительно | Операционная система Linux от 5.11 до 5.15.147 включительно | Операционная система Linux от 5.16 до 6.1.73 включительно | Операционная система Linux от 4.20 до 5.4.267 включительно | Операционная система Linux от 4.7 до 4.19.305 включительно |
Наименование ОС и тип аппаратной платформы: ОС Аврора до 402249 включительно F+ Life Tab Plus | ОС Аврора до 402249 включительно Mashtab TrustPhone T1 | ОСОН ОСнова Оnyx до 29 | Linux от 62 до 6612 включительно | Linux от 55 до 510208 включительно | Linux от 511 до 515147 включительно | Linux от 516 до 6173 включительно | Linux от 420 до 54267 включительно | Linux от 47 до 419305 включительно |
Дата выявления: 18.06.2023.
CVSS 2.0: AV:L/AC:L/Au:S/C:C/I:C/A:C
Уровень опасности уязвимости: Средний уровень опасности (базовая оценка CVSS 2.0 составляет 6,8)
Высокий уровень опасности (базовая оценка CVSS 3.0 составляет 8,8)
Возможные меры по устранению:
Компенсирующие меры:
-отказаться от использования вызовов ioctl с непроверенными параметрами для DRM драйвера до появления исправления
Использование рекомендаций:
Для ОС Аврора:
https://cve.omp.ru/bb23402
Использование исправления «drm/crtc: do not release uninitialized connector reference» Технологического центра исследования безопасности ядра Linux, доступного по ссылке https://git.linuxtesting.ru/pub/scm/linux/kernel/git/lvc/linux-stable.git/commit/?h=v5.10.185-lvc8&id=11cd0427e3a72e37243113a589a54145d91a30a
Для ОСОН ОСнова Оnyx:
Обновление программного обеспечения linux до версии 5.15.140-1.oasnova221.
Статус уязвимости: Подтверждена в ходе исследований
Наличие эксплойта: Данные уточняются
Информация об устранении: Уязвимость устранена
Идентификаторы других систем описаний уязвимости: LVC-2023-00006.
Прочая информация: Происходит вызов ioctl DRM_IOCTL_MODE_SETCRTC. Достаточно передать некорректные параметры ioctl буфера struct drm_mode_crtc *crtc_req = data, а именно — либо указателя crtc_req->set_connectors_ptr, либо содержимого out_id, хранящегося по указанному адресу (куда показывает указатель), которые не пройдут проверки внутри ядра и при обработке ошибки произойдёт доступ к неинициализированной памяти.
Внутри реализующей ioctl функции drm_mode_setcrtc() происходит выделение массива указателей на struct drm_connector (массив именован connector_set) с неинициализированным содержимым.
Далее внутри цикла происходит заполнение массива.
Предварительно каждому последующему элементу массива в цикле присваивается NULL. Функция drm_connector_lookup() увеличивает счётчик ссылок на возвращаемый connector, указатель на который присваивается элементу массива. Однако в случае если какой-то из вызовов внутри цикла завершится с ошибкой (ошибка вызывается некорректным содержимым ioctl буфера), то необходимо аварийно выйти из функции, при этом декрементировав счётчик ссылок на уже полученные коннекторы.
Внутри цикла, где декрементируются счётчики, происходит проверка равенства элемента массива лишь на NULL. Однако внутри массива значение NULL имеет только элемент, на котором цикл аварийно завершился, а все последующие элементы остались неинициализированными.
Таким образом, функция drm_connector_put() понижения счётчика ссылок на drm_connector вызывается с произвольным значением аргумента
Тип ошибки CWE:
Ссылки на источники:
cайт ФАУ «ГНИИИ ПТЗИ ФСТЭК России».
https://поддержка.нппкт.рф/bin/view/ОСнова/Обновления/2.9/



