Ad

CVE-2026-74363

HIGH CVSS 3.1: 7,8 EPSS 0.13%
Обновлено 17 августа 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: bpf: исправить UAF, восстановив освобождение индексного дескриптора с задержкой RCU в bpffs. commit 4f375ade6aa9 («bpf: избегать контекстных предупреждений RCU при откреплении htab с внутренними структурами") перенесена очистка индексного дескриптора из ->free_inode(). в ->destroy_inode(), чтобы избежать сна в контексте RCU при вызове bpf_any_put(). Однако это устранило задержку RCU при освобождении сам индексный дескриптор и тело кэшированной символической ссылки (i_link), оба из которых Доступ к нему можно получить по пути RCU (pick_link, may_lookup и т. д.). Это вызывает использование после освобождения, когда одновременный unlinkat() удаляет последняя ссылка на индексный дескриптор и метод Destroy_inode() немедленно освобождает индексный дескриптор, в то время как другая задача все еще проходит путь в режиме RCU и читает inode->i_opflags (смещение +2) внутри current_time() -> is_mgtime().

КАСАН сообщает: ОШИБКА: KASAN: slab-use-after-free в is_mgtime include/linux/fs.h:2313 Чтение размера 2 по адресу ffff8880407e4282 (смещение +2 = i_opflags) Правила (согласно Аль Виро): ->destroy_inode() вызывается немедленно, может спать, использовать для блокировки уборка, например bpf_any_put() ->free_inode() вызывается после льготного периода RCU, используется для освобождения inode и все, что доступно RCU, например. i_link Исправление: правильно разделите две проблемы: - сохраните bpf_any_put() в bpf_destroy_inode(), поскольку он блокируется и нужно срочно запустить - ввести bpf_free_inode() для обработки kfree(i_link) и free_inode_nonrcu() с правильной задержкой RCU, предотвращающей UAF

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

In the Linux kernel, the following vulnerability has been resolved: bpf: fix UAF by restoring RCU-delayed inode freeing in bpffs commit 4f375ade6aa9 ("bpf: Avoid RCU context warning when unpinning htab with internal structs") moved inode cleanup from ->free_inode() into ->destroy_inode() to avoid sleeping in RCU context when calling bpf_any_put(). However this removed the RCU delay on freeing the inode itself and the cached symlink body (i_link), both of which can be accessed by RCU pathwalk (pick_link, may_lookup etc.). This causes a use-after-free when a concurrent unlinkat() drops the last inode reference and destroy_inode() frees the inode immediately, while another task is still walking the path in RCU mode and reads inode->i_opflags (offset +2) inside current_time() -> is_mgtime(). KASAN reports: BUG: KASAN: slab-use-after-free in is_mgtime include/linux/fs.h:2313 Read of size 2 at addr ffff8880407e4282 (offset +2 = i_opflags) The rules (per Al Viro): ->destroy_inode() called immediately, can sleep, use for blocking cleanup e.g. bpf_any_put() ->free_inode() called after RCU grace period, use for freeing inode and anything RCU-accessible e.g. i_link Fix: split the two concerns properly: - keep bpf_any_put() in bpf_destroy_inode() since it is blocking and needs to run promptly - introduce bpf_free_inode() to handle kfree(i_link) and free_inode_nonrcu() with proper RCU delay, preventing the UAF

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1