
Эксплойт для CVE-2023-0179, переполнения буфера стека в подсистеме nftables Linux, позволяющий непривилегированное локальное повышение привилегий до root через перезапись modprobe_path.
Этот репозиторий содержит эксплойт для недавно обнаруженной мной уязвимости в подсистеме nftables, которой был присвоен идентификатор CVE-2023-0179. Уязвимость затрагивает все версии Linux с 5.5 по 6.2-rc3, хотя эксплойт тестировался на версии 6.1.6.
Подробности об уязвимости и описание можно найти на oss-security
Просто выполните команду make needle, чтобы получить соответствующий исполняемый файл.
Для успешной сборки требуются libmnl и libnftnl:
sudo apt-get install libmnl-dev libnftnl-dev
Эксплойт переходит в непривилегированное пользовательское и сетевое пространство имён и добавляет выражение nft_payload через функцию rule_add_payload, которая при вычислении вызывает переполнение буфера в стеке и перезаписывает регистры.
Затем содержимое извлекается с помощью следующей команды nft:
nft list map netdev mytable myset12
Вывод приводит к утечке нескольких перемешанных адресов, относящихся к структурам данных ядра, среди которых находятся адрес инструкции ядра и указатель на регистры (regs).
Эксплойт создаёт новую учётную запись пользователя needle:needle с UID 0, злоупотребляя переменной modprobe_path.
Наслаждайтесь правами root.
libnftnl Дэвида Баумана и подробный пост в блоге