
My take on the needrestart Python CVE-2024-48990
Этот простой shell-скрипт создает все необходимые файлы для работы этой уязвимости.
Сначала он создает случайно сгенерированный временный файл, который будет использован для компиляции поддельного __init__.so файла. При срабатывании уязвимости этот файл выполнится, скопирует бинарный файл bash в /tmp/ribbit и установит SUID-бит. Затем он создает каталог importlib в текущем рабочем каталоге. После этого компилирует созданный временный файл в __init__.so и помещает его в только что созданный каталог. Наконец, он создает еще один случайно названный временный файл Python, который спит и ожидает срабатывания уязвимости. После срабатывания он выполнит бинарный файл bash с установленным SUID-битом, что приведет к получению root-оболочки.
После запуска Python-скрипта необходимо, чтобы needrestart выполнялся с правами root. Обычно это происходит при использовании apt-get.