
Технический анализ CVE-2025-40271, критической уязвимости типа использование после освобождения (Use-After-Free) в файловой системе /proc ядра Linux, включая первопричину, шаги воспроизведения и детали патча.
🔴 CVE-2025-40271: Критическая уязвимость Use-After-Free в ядре Linux
CVE-2025-40271 — это критическая уязвимость типа Use-After-Free (UAF), затрагивающая файловую систему /proc ядра Linux. Ошибка находится в функции proc_readdir_de(), отвечающей за перечисление содержимого каталогов в /proc.
Когда запись каталога (PDE) удаляется из бинарного дерева (rbtree) с помощью rb_erase(), ядро не помечало узел как пустой. Это создаёт опасную ситуацию:
/proc/pid/net/dev_snmp6/), пока другой удаляет сетевые интерфейсы (например, устройства tun), указатель может указывать на уже освобождённую память.Команда разработчиков ядра реализовала критический патч, который заменяет обработку узла на RB_CLEAR_NODE(). Это гарантирует, что:
NULL вместо указателя на освобождённую память.Чтобы просмотреть точный код патча, обратитесь к этим коммитам:
"В ядре Linux была устранена следующая уязвимость: fs/proc: исправлен UAF в proc_readdir_de(). PDE удаляется из поддерева rbtree через
rb_erase(), но узел не устанавливается в EMPTY, что может привести к доступу UAF. Следует использоватьRB_CLEAR_NODE(), чтобы установить удалённый узел в EMPTY, тогдаpde_subdir_next()вернётNULL, чтобы избежать доступа UAF."
getdent для обхода /proc/pid/net/dev_snmp6/ (текущий указатель — tun3).tun3 и tun2), удаляя их из дерева.
tun3, затем tun2 (освобождён в slab).getdent, но pde_subdir_next() возвращает tun2 (уже освобождённый), вызывая UAF.| CWE-ID | Название | Источник |
|---|---|---|
| CWE-416 | Use After Free | NVD |
| URL | Описание |
|---|---|
| NVD - CVE-2025-40271 | Официальные сведения (пока без оценки CVSS) |
| Kernel.org Commits | Исходный код патчей |
⚠️ Итоговая рекомендация:
Если вы используете ядра версий 6.1.x, 6.6.x, 6.12.x или 6.13.x, немедленно обновитесь до исправленной версии. Если это невозможно, рассмотрите применение коммитов вручную или ограничение доступа к /proc с помощью политик безопасности (например, chroot, SELinux).
| Поле | Детали |
|---|
| ID | CVE-2025-40271 |
| Компонент | Kernel de Linux (fs/proc) |
| Серьёзность | Высокая (хотя ещё не оценена официально NVD/NIST) |
| Источник | Обнаружено с помощью stress-ng (одновременные случаи getdent и tun) |
| Статус NVD | Не приоритизировано для обогащения (ограниченные ресурсы) |