В ядре Linux устранена следующая уязвимость:
mmc: via-sdmmc: остановить обработку обнаружения карты при сбое зонда
request_irq() регистрирует прерывание обнаружения SD-карты, и зонд включается.
это до запуска mmc_add_host(). Если mmc_add_host() завершается неудачно, отображается только путь ошибки.
отменяет отображение регистров и возвращает: прерывание остается зарегистрированным, поэтому
обработчик продолжает работать с хостом после его освобождения. через_sdc_isr()
разыменовывает sdhost и его базу MMIO и планирует работу carddet_work, которая
via_sdc_card_detect() также работает с освобожденной памятью через свой
Разыменование контейнера_of(). Добавьте путь проверки ошибки, который отключает и освобождает прерывание и отменяет его.
carddet_work перед отменой сопоставления. carddet_work может повторно включить устройство
прерывание через via_reset_pcictrl(), которое восстанавливает PCIINTCTRL, поэтому замаскируйте его
снова после отмены работы.
Эта проблема была обнаружена с помощью собственного инструмента статического анализа и подтверждена ручная проверка кода.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: mmc: via-sdmmc: stop card-detect handling on probe failure request_irq() registers the SD card-detect interrupt and the probe enables it before mmc_add_host() runs. If mmc_add_host() fails, the error path only unmaps the registers and returns: the interrupt stays registered, so the handler keeps running against the host once it is freed. via_sdc_isr() dereferences sdhost and its MMIO base and schedules carddet_work, which via_sdc_card_detect() also runs against freed memory through its container_of() dereference. Add a probe-error path that disables and frees the interrupt and cancels carddet_work before unmapping. carddet_work can re-enable the device interrupt via via_reset_pcictrl(), which restores PCIINTCTRL, so mask it again after cancelling the work. This issue was found by an in-house static analysis tool and confirmed by manual code review.
Характеристики атаки
Последствия
Строка CVSS v3.1