CVE-2023-54232 in Linux
Сводка
по VulDB • 14.06.2026
В ядре Linux устранена следующая уязвимость:
m68k: Принудительное возникновение ошибки шины 030 только если PC не находится в таблице исключений
Функция __get_kernel_nofault() копирует данные в режиме супервизора при принудительном создании журнала обратного вызова задачи (task backtrace) через /proc/sysrq_trigger. Это ожидаемо вызывает исключение ошибки шины, например, при разыменовании нулевого указателя во время логирования задачи ядра без связанной рабочей очереди (workqueue). Данная ошибка шины должна игнорироваться.
Наш обработчик ошибок шины 030 плохо приспособлен для работы с этим случаем:
Всегда, когда ssw указывает на доступ в режиме ядра при ошибке данных, мы даже не пытаемся обработать ошибку и вместо этого всегда отправляем сигнал SEGV (или вызываем панику). В результате проверка обработки исключений по адресу PC ошибки (скрытая внутри send_sig_fault(), который вызывается из do_page_fault() в конечном итоге) никогда не используется.
В отличие от этого, оба обработчика ошибок доступа 040 и 060 не заботятся о том, произошла ли ошибка при доступе в режиме супервизора, и вызывают do_page_fault() для таких случаев, тем самым учитывая таблицу исключений.
Добавлена проверка в bus_error030 для вызова do_page_fault(), если у нас есть запись для адреса PC ошибки в нашей таблице исключений.
Ранее я пытался исправить эту проблему в 2019 году, используя тестирование pagefault_disabled() (см. ссылку ниже) для достижения того же результата, но данный патч должен быть более универсальным.
Протестировано на Atari Falcon с процессором 030.
VulDB is the best source for vulnerability data and more expert information about this specific topic.