
Эксплойт Proof-of-Concept для CVE-2022-0185 — переполнение кучи в ядре Linux, которое позволяет повысить привилегии локально и выйти из контейнера через FUSE и ROP-цепочки.
Эксплойт доказательства концепции для CVE-2022-0185, переполнения буфера в куче в функции legacy_parse_param ядра Linux (fs/fs_context.c). Это позволяет локальному непривилегированному пользователю повысить привилегии до root.
Оригинальный эксплойт от Crusaders of Rust. Полное описание: https://www.willsroot.io/2022/01/cve-2022-0185.html
Ошибка представляет собой целочисленное переполнение вниз (integer underflow) при проверке границ внутри legacy_parse_param(). Когда внутренний буфер size достигает 4095 байт, беззнаковое вычитание переполняется и обходит проверку, позволяя неограниченное переполнение кучи в slab kmalloc-4k.
Затронутые ядра: Linux 5.1 – 5.15 Исправлено в: Linux 5.16+
| Файл | Описание |
|---|---|
exploit_fuse.c | Эксплойт LPE для Ubuntu с использованием FUSE + SYSVIPC |
exploit_kctf.c | Побег из контейнера kCTF с использованием каналов + ROP-цепочки |
fakefuse.c / .h | Пользовательская файловая система FUSE для состояния гонки |
util.c / .h | Общие утилиты |
libfuse/, libfuse3.a | Статически скомпилированная libfuse (без dl_open) |
Makefile | Сборочный скрипт |
make
# Enter a user namespace to get CAP_SYS_ADMIN
unshare -Urm
# Run the exploit — makes /bin/bash SUID
./exploit_fuse
# Get a root shell
bash -p
Работает на ядрах Ubuntu ≥ 5.7. Настройте смещения
single_startиmodprobe_pathв файлеexploit_fuse.cдля вашей версии ядра.
./exploit_kctf
~50% надежность, нацелен на Kubernetes 1.22 (ядро 5.10).
Только для образовательных и исследовательских целей. Не используйте против систем, которыми вы не владеете или на тестирование которых не имеете явного разрешения.