Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-40271 — CVE-2025-40271 Изменено MadEploits | Kitploit
Инструменты/GitHubGitHub/madexploits/cve-2025-40271
Повышение привилегийАнализ уязвимостейЭксплуатацияСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 Изменено MadEploits

Репозиторий
1122 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-40271 — proc_readdir_de() rb-tree UAF LPE

Доказательство концепции (PoC) для локального повышения привилегий в файловой системе proc ядра Linux. Ошибка — use-after-free (использование после освобождения) в proc_readdir_de(), вызванная rb_erase() без RB_CLEAR_NODE(), что оставляет устаревшие связи красно-черного дерева, которые могут быть использованы в гонке при перечислении каталогов.

Автор: MadExploits

Исходное исследование уязвимости и C PoC от Aviral Srivastava (N-DAY RESEARCH). Этот репозиторий включает shell-порт (exploit.sh) для сред, где компиляция нецелесообразна.


Обзор

ПолеПодробности
CVECVE-2025-40271
Компонентfs/proc — proc_readdir_de() / remove_proc_entry()
ТипUse-after-free (устаревшие связи rb-дерева)
ВлияниеЛокальное повышение привилегий (LPE)
Архитектураx86_64
ЗатронутыеЯдра Linux до 6.18-rc5

Первопричина

Когда запись каталога proc удаляется, rb_erase() вызывается для rb-узла записи без RB_CLEAR_NODE(). Освобожденные узлы могут оставаться доступными через устаревшие связи дерева. Если getdents64() участвует в гонке с удалением интерфейса в /proc/self/net/dev_snmp6/, ядро может прочитать освобожденную память — часто занятую разбросанными объектами msg_msg — и вернуть аномальные значения d_ino, которые раскрывают указатели кучи ядра.


Затронутые и исправленные ядра

PoC проверяет версию запущенного ядра и завершает работу на исправленных сборках:

Ветка

Содержимое репозитория

ФайлОписание
exploit.cПолный C PoC — управление netlink veth, гонка pthread, разброс msg_msg
exploit.shShell-порт без компиляции — unshare, ip, встроенный Python 3 для системных вызовов/гонки

Обе реализации следуют одному и тому же потоку эксплуатации:

  1. Войти в пространство имен пользователя и сети (получить CAP_NET_ADMIN в net ns)
  2. Создать veth пары → заполнить /proc/self/net/dev_snmp6/
  3. Устроить гонку getdents64() с быстрым удалением veth + разброс кучи
  4. Обнаружить UAF по значениям d_ino, похожим на указатели ядра
  5. Попытаться повысить привилегии (полный LPE требует специфичных для ядра смещений KASLR)

Требования

Общие

  • Linux x86_64
  • Непривилегированные пользовательские пространства имен включены:
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • Пользователь не root (PoC завершает работу, если уже root)

exploit.c

  • gcc с pthreads
  • Заголовочные файлы Linux (linux/netlink.h и т.д.)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip (iproute2)
  • unshare (util-linux с поддержкой --map-root-user)

Компилятор не требуется.


Использование

Shell-версия (рекомендуется для быстрого тестирования)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

C-версия

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

Ожидаемый вывод

Уязвимое ядро — UAF сработало (частичный успех):

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

Исправленное ядро:

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

Примечания по эксплуатации

  • Утечка кучи: Когда гонка выиграна, d_ino содержит значение, соответствующее шаблону указателя ядра x86_64 (0xffff000000000000), обычно из заголовка msg_msg m_list, перекрывающего освобожденные данные proc_dir_entry.
  • Полный LPE: Перезапись modprobe_path требует смещения между утекшим адресом кучи и базой текста ядра — это зависит от сборки (KASLR). PoC демонстрирует UAF и утечку; полная цепочка требует смещений для вашего целевого образа ядра.
  • Надежность: Успех зависит от тайминга планировщика. По умолчанию PoC повторяет попытки до 30 раз.

Смягчение

  • Обновитесь до исправленного ядра (см. таблицу выше).
  • Если пользовательские пространства имен не требуются, отключите создание непривилегированных:
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • Примените обновления безопасности от поставщика для CVE-2025-40271.

Отказ от ответственности

Этот проект предоставляется только для авторизованных исследований безопасности, обучения и защитного тестирования.

  • Запускайте только на системах, которыми вы владеете или на тестирование которых имеете явное письменное разрешение.
  • Несанкционированное использование против сторонних систем может нарушать действующее законодательство.
  • Авторы и участники не несут ответственности за неправомерное использование этого кода.

Благодарности

РольИмя
Автор репозиторияMadExploits
Исходное исследование CVE и C PoCAviral Srivastava — N-DAY RESEARCH

Лицензия

Используйте на свой страх и риск. Гарантии не предоставляются.

Скачать инструмент
Исправлено в
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+Исправлено