CVE-2025-40271
fs/proc: исправление UAF в proc_readdir_de()
- Опубликовано
- 6 дек. 2025 г.
- Обновлено
- 5 авг. 2026 г.
- Назначение CNA
- Linux
- Наблюдены доказательства
- 4 мая 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HНизкий · следующие 30 дней
- Процентиль
- 37,8 %
- Дата модели
- 13 окт. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
В ядре Linux устранена следующая уязвимость: fs/proc: fix uaf in proc_readdir_de(). Pde удаляется из rbtree подкаталога через rb_erase(), но узел не устанавливается в состояние EMPTY, что может привести к доступу к освобождённой памяти (UAF). Нужно использовать RB_CLEAR_NODE(), чтобы установить удалённый узел в состояние EMPTY; тогда pde_subdir_next() вернёт NULL, и доступа к освобождённой памяти не будет. Мы обнаружили проблему UAF при тестировании с помощью stress-ng: для воспроизведения необходимо одновременно запускать тесткейсы getdent и tun. Шаги воспроизведения проблемы следующие: 1) с помощью getdent обходим каталог /proc/pid/net/dev_snmp6/, текущий pde — tun3; 2) в [временном окне] отменяем регистрацию netdevice tun3 и tun2 и удаляем их из rbtree: сначала tun3, затем tun2; pde(tun2) будет возвращён в slab; 3) продолжаем процесс getdent, и тогда pde_subdir_next() вернёт уже освобождённый pde(tun2), что вызовет доступ к освобождённой памяти. CPU 0 | CPU 1 ------------------------------------------------------------------------ обход каталога /proc/pid/net/dev_snmp6/ | unregister_netdevice(tun->dev) //tun3 tun2 sys_getdents64() | iterate_dir() proc_readdir() | proc_readdir_de() snmp6_unregister_dev() | pde_get(de); proc_remove() | read_unlock(&proc_subdir_lock); [временное окно] | rb_erase(&root->subdir_node, &parent->subdir); | write_unlock(&proc_subdir_lock); read_lock(&proc_subdir_lock); | next = pde_subdir_next(de); | pde_put(de); | de = next; //UAF | rbtree для dev_snmp6 | pde(tun3) / \ NULL pde(tun2)
Источники
- CVE-2025-40271Исследования
Технический анализ CVE-2025-40271, критической уязвимости типа использование после освобождения (Use-After-Free) в файловой системе /proc ядра Linux, включая первопричину, шаги воспроизведения и детали патча.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.