CVE-2026-23415

NONE EPSS 0.02%
Обновлено 2 апреля 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: futex: исправлено UaF между futex_key_to_node_opt() и vma_replace_policy(). Во время выполнения futex_key_to_node_opt() vma->vm_policy считывается под спекулятивная блокировка mmap и RCU. Одновременно mbind() может вызывать vma_replace_policy(), который немедленно освобождает старую политику памяти через kmem_cache_free().

Это создает гонку, в которой __futex_key_to_node() разыменовывает освобожденный указатель mempolicy, вызывающий чтение mpol->mode без использования после освобождения. [151.412631] ОШИБКА: KASAN: slab-use-after-free в __futex_key_to_node (kernel/futex/core.c:349) [ 151.414046] Чтение размера 2 по адресу ffff888001c49634 с помощью задачи e/87. [151.415969] Отслеживание вызовов: [ 151.416732] __asan_load2 (mm/kasan/generic.c:271) [ 151.416777] __futex_key_to_node (kernel/futex/core.c:349) [ 151.416822] get_futex_key (kernel/futex/core.c:374 kernel/futex/core.c:386 kernel/futex/core.c:593) Исправьте это, добавив rcu в __mpol_put().

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: futex: Fix UaF between futex_key_to_node_opt() and vma_replace_policy() During futex_key_to_node_opt() execution, vma->vm_policy is read under speculative mmap lock and RCU. Concurrently, mbind() may call vma_replace_policy() which frees the old mempolicy immediately via kmem_cache_free(). This creates a race where __futex_key_to_node() dereferences a freed mempolicy pointer, causing a use-after-free read of mpol->mode. [ 151.412631] BUG: KASAN: slab-use-after-free in __futex_key_to_node (kernel/futex/core.c:349) [ 151.414046] Read of size 2 at addr ffff888001c49634 by task e/87 [ 151.415969] Call Trace: [ 151.416732] __asan_load2 (mm/kasan/generic.c:271) [ 151.416777] __futex_key_to_node (kernel/futex/core.c:349) [ 151.416822] get_futex_key (kernel/futex/core.c:374 kernel/futex/core.c:386 kernel/futex/core.c:593) Fix by adding rcu to __mpol_put().