
Эксплойт Proof-of-concept для CVE-2023-0386, уязвимости локального повышения привилегий в Linux OverlayFS. Демонстрирует, как неправильная обработка файловых возможностей во время copy-up позволяет непривилегированным пользователям получить root-доступ.
Этот репозиторий содержит доказательство концепции для CVE-2023-0386: https://nvd.nist.gov/vuln/detail/CVE-2023-0386
Участники команды: Bǎnicǎ Dragoș-Marius и Borsos Matheas-Roland
Вот видео: https://www.youtube.com/watch?v=Ikux1rjIYP0
Этот репозиторий содержит доказательство концепции (PoC) эксплойта для CVE-2023-0386 — уязвимости локального повышения привилегий в подсистеме OverlayFS ядра Linux.
Уязвимость позволяет локальному непривилегированному пользователю повышать привилегии до root, эксплуатируя некорректную обработку файловых capabilities и прав владения во время операций copy-up в OverlayFS. PoC демонстрирует, как специально созданная конфигурация OverlayFS может породить исполняемый файл, который сохраняет расширенные привилегии даже при копировании с nosuid-раздела.
OverlayFS — это объединённая файловая система (union filesystem), используемая для объединения нескольких деревьев каталогов в единое унифицированное представление. Она широко используется в:
OverlayFS состоит из:
Когда файл в нижнем слое изменяется, OverlayFS выполняет операцию copy-up: файл копируется в верхний слой и затем изменяется там.
Уязвимость заключается в том, как OverlayFS обрабатывает метаданные файлов во время copy-up, а именно:
CAP_SETUID)nosuidВ затронутых версиях ядра:
nosuid.Это нарушает предположение безопасности о том, что nosuid-монтирование предотвращает повышение привилегий.
CVE-2023-0386_POC/
├── exp.c # Main exploit logic
├── fuse.c # User-space filesystem helper (FUSE)
├── getshell.c # Privilege escalation payload
├── ovlcap/ # OverlayFS capability test utilities
│ ├── Makefile
│ └── ...
├── Makefile # Top-level build instructions
└── README.md
nosuid.gccmakelibfuse-dev (или эквивалент)libcap-dev (или эквивалент)git clone https://github.com/dragosbanica/CVE-2023-0386_POC.git
cd CVE-2023-0386_POC
make all
Откройте два терминала и в первом введите
./fuse ./ovlcap/lower ./gc
Во втором терминале введите
./exp