Уязвимости в Linux позволяют получить права суперпользователя
Специалист компании Microsoft обнаружил уязвимости в Linux-системах, эксплуатация которых позволяет быстро получить права суперпользователя.
В общей сложности было обнаружено две уязвимости (CVE-2022-29799 и CVE-2022-29800), объединенные под общим названием Nimbuspwn. Проблемы содержатся в компоненте networkd-dispatcher многих Linux-дистрибутивов, который отправляет изменения статуса сети и может запускать различные скрипты для реагирования на новый статус. При включении компьютерной системы networkd-dispatcher запускается с правами суперпользователя.
Уязвимости сочетают в себе обход каталогов, гонку символических ссылок и ошибку TOCTOU (time-of-check time-of-use – время проверки/время использования). Изучив исходный код networkd-dispatcher, исследователь Microsoft Джонатан Бар Ор (Jonathan Bar Or) заметил, что компонент «_run_hooks_for_state», реализует следующую логику:
-Обнаруживает список доступных скриптов, вызывая метод get_script_list для вызова отдельного метода scripts_in_path, предназначенного для возврата всех файлов, хранящихся в каталоге «/etc/networkd-dispatcher/.d».
-Сортирует список скриптов.
-Запускает каждый скрипт с помощью процесса subprocess.Popen и предоставляет настраиваемые переменные среды.
Run_hooks_for_state подвергает Linux-системы уязвимости обхода каталогов (CVE-2022-29799), поскольку ни одна из используемых им функций не очищает должным образом состояния, используемые для построения правильного пути скрипта, от вредоносных входных данных. Хакеры могут использовать уязвимость, чтобы выйти из каталога «/etc/networkd-dispatcher».
Run-hooks_for_state также содержит уязвимость (CVE-2022-29800), которая делает системы уязвимыми к состоянию гонки TOCTOU, поскольку между обнаружением скриптов и их запуском проходит определенное время. Злоумышленники могут использовать эту уязвимость для замены скриптов, которые networkd-dispatcher считает принадлежащими суперпользователю, на вредоносные скрипты.
Исследователь также обнаружил несколько процессов, запускающихся от имени пользователя systemd-network, которому разрешено использовать имя шины, необходимое для запуска произвольного кода из доступных для записи мест. Уязвимые процессы включают несколько подключаемых модулей gpgv, запускающихся при установке или обновлении apt-get, а также демон Erlang Port Mapper, который позволяет запускать произвольный код в некоторых скриптах.
Уязвимость в networkd-dispatcher была исправлена, однако неизвестно, когда и в какой версии. Пользователям Linux-систем настоятельно рекомендуется обновиться до последней версии.