В конце 2015 года испанский исследователь Гектор Марко (Hector Marco) нашел неприятный баг, который позволял обойти авторизацию в GRUB 2. Оказалось, что если нажать клавишу Backspace 28 раз в тот момент, когда GRUB спросит имя пользователя, система перезагрузится или появится rescue shell. Получив доступ к консоли восстановления, атакующий, по сути, может делать с системой все, что ему вздумается.
2016 год Марко завершает обнаружением еще одного похожего бага: CVE-2016-4484. В ходе изучения утилиты Cryptsetup, исследователь обнаружил, что если зажать клавишу Enter на 70 секунд, пользователь попадет в root shell initramfs или Dracut. Хотя диски при этом все равно остаются зашифрованы, атакующий сможет скопировать такой раздел (например, для последующего взлома) или добраться до содержимого незашифрованных разделов.
В своем блоге Марко пишет, что сначала он обнаружил проблему повторным вводом пароля. Когда Cryptsetup запрашивает у пользователя пароль для расшифровки дисков, файл скрипта /scripts/local-top/cryptroot срабатывает некорректно. Когда пользователь уже истратил три попытки (по умолчанию), дающиеся на ввод пароля, Cryptsetup считает, что просто работает на медленном устройстве, которому нужно больше времени на «прогрев». В итоге утилита позволяет пользователю продолжать подбор пароля, перегружая процедуру аутентификации. Суммарно пользователю дается до 30 попыток на x86 архитектуре (можно перебрать 93 пароля) и 150 попыток на PowerPC.
Для полноценного брутфорса этого определенно не хватит, но затем Марко обнаружил и другую, куда более неприятную проблему. Когда пользователь истратил все свои попытки и лимит попыток монтирования уже превышен, происходит «вылет» в root shell, очевидно, для дебаггинга. По сути, после запроса на ввод пароля атакующему достаточно зажать клавишу Enter и подождать 70 или более секунд, и дело сделано. Дальше возможны самые разные сценарии: эскалация привилегий (так как раздел /boot не шифруется и можно подменить загрузочные файлы или внедрить туда файл с SetUID), доступ к незашифрованной информации или кража зашифрованных разделов. Наконец, атакующий может попросту уничтожить все данные, подложив жертве большую свинью.
Проблема CVE-2016-4484 актуальна для дистрибутивов на базе Debian (к примеру, Ubuntu) и Fedora. Хотя разработчики Cryptsetup уже представили исправление, добавив его в версию 2:1.7.3-2, стабильная ветка пока исправления не получила. В своем блоге Марко приводит ряд способов защиты от подобных атак, которыми можно воспользоваться, пока разработчики дистрибутивов не представили патчи.