## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-GRISH-PRADHAN-CVE-2017-7184
# CVE-2017-7184 – Повышение привилегий в Linux Kernel XFRM (без sudo)
## Обзор
Этот репозиторий содержит **эксплойт для локального повышения привилегий (proof-of-concept)** для **CVE-2017-7184** , уязвимости ядра Linux в **подсистеме netlink XFRM (IPsec)**.
Эксплойт демонстрирует, как **непривилегированный пользователь** может получить **настоящего root (UID 0)** , следующим образом:
1. Создание непривилегированного **пространства имён пользователя и сети (user + network namespace)**
2. Получение **CAP_NET_ADMIN** внутри пространства имён
3. Вызов **переполнения стека ядра** при обработке netlink XFRM
4. Выполнение **ROP-цепочки в ядре** для вызова:
* `prepare_kernel_cred(NULL)`
* `commit_creds()`
5. Безопасное возвращение в пользовательское пространство с полными правами root
**Sudo не требуется.**
* * *
## Детали уязвимости
Поле| Значение
---|---
CVE| CVE-2017-7184
Компонент| Ядро Linux – XFRM Netlink
Тип ошибки| Переполнение стека ядра
Воздействие| Локальное повышение привилегий
Вектор атаки| Локальный (непривилегированный пользователь)
Класс эксплойта| Злоупотребление namespace + ROP
Затрошено с| Ядра Linux ≤ 4.8
Исправлено в| Патчи ядра, выпущенные в 2017 г.
* * *
## Стратегия эксплуатации (обзорно)
1. **Непривилегированное пользовательское пространство имён**
* Использует `unshare(CLONE_NEWUSER | CLONE_NEWNET)`
* Сопоставляет текущего пользователя с UID 0 внутри пространства имён
* Предоставляет `CAP_NET_ADMIN` без sudo
2. **Злоупотребление XFRM Netlink**
* Создаёт сокет `NETLINK_XFRM`
* Отправляет повреждённое сообщение `XFRM_MSG_NEWSA`
* Вызывает переполнение стека ядра через атрибуты увеличенного размера
3. **Выполнение ROP-цепочки в ядре**
* Перезаписывает стек ядра
* Выполняет контролируемую ROP-цепочку
* Повышает привилегии (credentials) в контексте ядра
4. **Возврат в пользовательское пространство**
* Использует `swapgs; iretq`
* Запускает интерактивную root-оболочку
* * *
## Требования
* Уязвимое ядро Linux (протестировано на **4.8.0-36-generic**)
* `unprivileged_userns_clone = 1`
* Символы ядра доступны **или** известны смещения
* `gcc` с поддержкой pthread
Проверка поддержки пространств имён:
root@kitploit:~
cat /proc/sys/kernel/unprivileged_userns_clone
Ожидаемый вывод:
root@kitploit:~
1
* * *
## Компиляция
root@kitploit:~
gcc exploit.c -o exploit -pthread
* * *
## Запуск
root@kitploit:~
./exploit
**Не используйте sudo.**
При успехе вы получите **настоящую root-оболочку** :
root@kitploit:~
uid=0(root) gid=0(root) groups=0(root)
* * *
## Определение адресов ядра
Эксплойт пытается:
1. Получить символы из `/proc/kallsyms`
2. Если доступ ограничен, использовать **жёстко заданные смещения** для:
* `commit_creds`
* `prepare_kernel_cred`
* базового адреса ядра
⚠️ **ROP-гаджеты и смещения зависят от версии ядра.** Для других сборок их необходимо корректировать.
* * *
## Ожидаемые результаты
### Полностью успешный эксплойт
* UID = 0
* GID = 0
* Интерактивная root-оболочка
### Частичный успех (система всё ещё уязвима)
* Создание пространства имён работает
* Создание XFRM-сокета проходит успешно
* Эксплойт-нагрузка (payload) отправлена
* Сбой ядра или отсутствие повышения привилегий
Это по-прежнему подтверждает, что система **уязвима**.
* * *
## Ограничения
* Жёстко заданные ROP-гаджеты (зависят от ядра)
* Отсутствует обход KASLR, кроме kallsyms
* Отсутствует обход SMEP/SMAP для укреплённых ядер
* Ненадёжен на современных ядрах
* * *
## Меры защиты
* Обновите ядро до пропатченной версии
* Отключите непривилегированные пользовательские пространства имён:
root@kitploit:~
sysctl -w kernel.unprivileged_userns_clone=0
* Включите KASLR, SMEP, SMAP
* Ограничьте возможности netlink
* * *
## Отказ от ответственности
Этот код предоставлен **только в образовательных целях и для исследований в области безопасности**.
* **Не** используйте на системах, которыми вы не владеете или на тестирование которых у вас нет разрешения
* Автор **не несёт ответственности** за неправомерное использование или ущерб
* Предназначен для изучения техник эксплуатации ядра
* * *
## Ссылки
* CVE-2017-7184
* Подсистема XFRM ядра Linux
* Повышение привилегий через пользовательские пространства имён
* ROP в ядре и эксплуатация `commit_creds`