
Эксплойт, основанный только на данных, для CVE-2024-0582
Этот эксплойт реализует атаку Dirty Cred для получения несанкционированного доступа на запись к /etc/passwd. В отличие от многих подобных эксплойтов, которые создают множество страниц или агрессивно распыляют файловые дескрипторы, данный подход использует более целенаправленный путь для повреждения необходимых структур ядра.
Установка привязки к ЦП и увеличение лимита FD
Обеспечивает стабильную производительность и достаточное количество файловых дескрипторов для распыления.
Инициализация io_uring
Создает экземпляр io_uring и регистрирует кольцевой буфер для использования памяти ядра.
Отмена регистрации кольцевого буфера
Запускает уязвимость, оставляя структуры данных ядра в состоянии, пригодном для эксплуатации.
Распыление файловых дескрипторов
Открывает множество FD к /etc/passwd, надеясь повредить нужный объект ядра.
Изменение режима файла
Повреждает флаги f_mode, чтобы /etc/passwd стал доступен для записи.
Запись бэкдор-записи
Вставляет evil::0:0:root:/root:/bin/bash в /etc/passwd.
io_uring (протестировано на ядре с ошибкой CVE-2024-0582)..rs).EXT4_FOPS_OFFSET в main.rs (по умолчанию установлено 0x122b3c0) в зависимости от версии Linux. Несоответствие может привести к сбою или неправильной работе эксплойта.Если ваше ядро экспортирует информацию о символах и у вас есть соответствующие разрешения (часто это ограничено на производственных системах), вы можете прочитать из /proc/kallsyms:
Получите адрес _text:
grep " _text" /proc/kallsyms
Давайте назовем полученный адрес TEXT_ADDR.
Получите адрес ext4_file_operations:
grep ext4_file_operations /proc/kallsyms
Давайте назовем полученный адрес EXT4_FOPS_ADDR.
Вычтите:
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR