28 марта, 2024

Уязвимость в Cryptsetup, позволяющая получить доступ к root shell

[protected] В пакете Cryptsetup, применяемом для шифрования дисковых разделов в Linux, выявлена уязвимость(CVE-2016-4484), позволяющая получить доступ в командную оболочку начального загрузочного окружения initramfs или Dracut с правами пользователя root. Проблема вызвана ошибкой в коде скрипта разблокировки и проявляется только при использовании шифрования LUKS (Linux Unified Key Setup) на системных разделах.

Для эксплуатации уязвимости достаточно нажать и удерживать клавишу Enter в ответ на запрос ввода пароля для доступа к зашифрованным разделам. После примерно 70 секунд удерживания Enter пользователь будет выброшен в root shell загрузочного окружения. Атака хорошо повторяема и не зависит от настроек или системного окружения. Для атаки требуется физический доступ к системе, но не исключаются и варианты удалённой эксплуатации облачных окружений. Из систем для которых уязвимость предоставляет угрозу также упоминаются автоматизированные рабочие места, пункты совместного доступа к интернет, интернет-киоски, справочные автоматы и другие публично досутпные устройства с клавиатурой.

Несмотря на то, что полный доступ предоставляется только в окружение начальной загрузки initramfs или Dracut, атакующий имеет возможность скопировать, изменить или вывести из строя содержимое незашифрованных дисков (зашифрованные разделы остаются недоступны). Например, обычно без шифрования оставляется раздел /boot, что позволяет подменить загрузочные файлы или оставить исполняемый файл с правами SetUID root для повышения привилегий локального пользователя. Также можно настроить сетевое соединение и скопировать зашифрованный раздел для осуществления подбора пароля.

Проблема вызвана неверной обработкой превышения лимита на максимальное число попыток монтирования — вместо предложения выполнить перезагрузку, осуществлялся выход из скрипта проверки c кодом ошибки, что приводило к продолжению попыток смонтировать раздел и выводу консоли восстановления (root shell) после превышения лимита на число неудачных попыток. В настоящее время обновления для пакета Cryptsetup в дистрибутивах пока не выпущены (Debian, RHEL, Ubuntu, Fedora, CentOS, SUSE, openSUSE). В качестве временной меры защиты можно настроить в grub загрузку ядра с параметром «panic» (в GRUB_CMDLINE_LINUX_DEFAULT добавить «panic=5» и запустить grub-install), после чего загрузочный скрипт инициирует перезагрузку вместо вывода root shell.

Читать также:  Хакеры нашли уязвимость и управляли бэкдором через Telegram

0_1479194143-4184947

 
[/protected]

Добавить комментарий