
Эксплойт Proof-of-concept для локального повышения привилегий через CVE-2017-7184 — переполнение стека в подсистеме XFRM netlink ядра Linux. Демонстрирует злоупотребление пространствами имён и kernel ROP для получения root без sudo.
Этот репозиторий содержит эксплойт для локального повышения привилегий (proof-of-concept) для CVE-2017-7184, уязвимости ядра Linux в подсистеме netlink XFRM (IPsec).
Эксплойт демонстрирует, как непривилегированный пользователь может получить настоящего root (UID 0), следующим образом:
Создание непривилегированного пространства имён пользователя и сети (user + network namespace)
Получение CAP_NET_ADMIN внутри пространства имён
Вызов переполнения стека ядра при обработке netlink XFRM
Выполнение ROP-цепочки в ядре для вызова:
prepare_kernel_cred(NULL)commit_creds()Безопасное возвращение в пользовательское пространство с полными правами root
Sudo не требуется.
| Поле | Значение |
|---|---|
| CVE | CVE-2017-7184 |
| Компонент | Ядро Linux – XFRM Netlink |
| Тип ошибки | Переполнение стека ядра |
| Воздействие | Локальное повышение привилегий |
| Вектор атаки | Локальный (непривилегированный пользователь) |
| Класс эксплойта | Злоупотребление namespace + ROP |
| Затрошено с | Ядра Linux ≤ 4.8 |
| Исправлено в | Патчи ядра, выпущенные в 2017 г. |
Непривилегированное пользовательское пространство имён
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN без sudoЗлоупотребление XFRM Netlink
NETLINK_XFRMXFRM_MSG_NEWSAВыполнение ROP-цепочки в ядре
Возврат в пользовательское пространство
swapgs; iretqunprivileged_userns_clone = 1gcc с поддержкой pthreadПроверка поддержки пространств имён:
cat /proc/sys/kernel/unprivileged_userns_clone
Ожидаемый вывод:
1
gcc exploit.c -o exploit -pthread
./exploit
Не используйте sudo.
При успехе вы получите настоящую root-оболочку:
uid=0(root) gid=0(root) groups=0(root)
Эксплойт пытается:
Получить символы из /proc/kallsyms
Если доступ ограничен, использовать жёстко заданные смещения для:
commit_credsprepare_kernel_cred⚠️ ROP-гаджеты и смещения зависят от версии ядра. Для других сборок их необходимо корректировать.
Это по-прежнему подтверждает, что система уязвима.
sysctl -w kernel.unprivileged_userns_clone=0
Этот код предоставлен только в образовательных целях и для исследований в области безопасности.
commit_creds