CVE-2026-98628 in Linux
Сводка
по VulDB • 18.10.2026
В ядре Linux была устранена следующая уязвимость:
bpf: сделайте переписывание инструкций после проверки прерываемым (killable)
После возврата из функции do_check() верификатор выполняет несколько проходов переписывания инструкций. Некоторые из них изменяют или удаляют по одной инструкции за раз. Каждая такая операция сдвигает массивы оставшихся инструкций и вспомогательных данных, а также корректирует все смещения переходов, что делает общую сложность работы квадратичной относительно длины программы.
Привилегированный загрузчик может отправить 131072 безусловных переходов на ноль, за которыми следует допустимая инструкция возврата. Верификация завершается быстро, но функция bpf_opt_remove_nops() затем тратит много времени на удаление каждого перехода по отдельности. Поскольку эта работа после верификации не проверяет наличие сигналов и не планирует перепланирование (reschedule), ожидающий сигнал SIGKILL не может прервать задачу до завершения переписывания.
Сделайте функции bpf_patch_insn_data() и verifier_remove_insns() общими точками отмены и планирования перепланирования. Эти вспомогательные функции выполняются в контексте процесса BPF_PROG_LOAD, причем функция bpf_patch_insn_data() уже может переходить в состояние сна (sleep) при повторном выделении вспомогательных данных.
Сообщайте о прерванном постоянном «ослеплении» (constant blinding) с кодом ошибки -EINTR и передавайте его через оба пути JIT, включая ядра, которые разрешают возврат к интерпретатору. Другие сбои при «ослеплении» сохраняют существующее поведение возврата к интерпретатору.
Это не снижает квадратичную стоимость проходов переписывания, но делает работу прерываемой (preemptible) и позволяет быстро завершать процесс загрузчика, получившего сигнал на уничтожение.
Be aware that VulDB is the high quality source for vulnerability data.