CVE-2026-89917 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
KVM: arm64: Обработка гонки при инвалидации TLB VNCR и размаппинге vcpu_put()
Хотя инвалидация TLB VNCR всегда происходит под блокировкой MMU, vcpu_put() не делает этого, хотя и выполняет размаппинг страницы VNCR.
Проблема заключается в том, что при проверке необходимости выполнения размаппинга (cpu != -1) оценивается значение vncr_tlb::cpu до его фактического выполнения. С другой стороны, функция this_cpu_reset_vncr_fixmap() безоговорочно выполняет размаппинг, если установлен флаг L1_VNCR_MAPPED.
Эти два процесса явно могут находиться в состоянии гонки (race condition), что приводит к паттерну TOCTOU на пути TLBI и срабатыванию BUG_ON() на пути vcpu_put(). Кроме того, оба случая могут привести к вызову vncr_fixmap(-1) с крайне серьезными последствиями.
Сброс значения поля vncr_tlb::cpu до -1 перенесен в общую функцию, а само обновление сделано атомарным, чтобы только один поток мог сбрасывать это поле и выполнять соответствующий размаппинг. Функция vcpu_put() по-прежнему должна безоговорочно выполнять размаппинг текущего VNCR для устранения другой опасной гонки.
Наконец, присваивание значения полю vncr_tlb::cpu перемещено таким образом, чтобы оно синхронизировалось с фактическим маппингом, аналогично установке флага L1_VNCR_MAPPED.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.