В конце 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), доступ к незашифрованной информации или кража зашифрованных разделов. Наконец, атакующий может попросту уничтожить все данные, подложив жертве большую свинью.

capture

Проблема CVE-2016-4484 актуальна для дистрибутивов на базе Debian (к примеру, Ubuntu) и Fedora. Хотя разработчики Cryptsetup уже представили исправление, добавив его в версию 2:1.7.3-2, стабильная ветка пока исправления не получила. В своем блоге Марко приводит ряд способов защиты от подобных атак, которыми можно воспользоваться, пока разработчики дистрибутивов не представили патчи.

5 комментариев

  1. soko1

    15.11.2016 at 22:55

    Давно пора реализовать шифрование раздела /boot, не понимаю как можно не бояться что в момент вашего отсутсвия кто-то придёт с livecd-флешкой и подменит ядро на своё, со сниффером.

  2. Eugene100

    20.11.2016 at 09:44

    Не вижу смьісла ставить пароль на уровне загрузчика. Ставить, так уже на BIOS.

    • divided

      21.11.2016 at 14:54

      Ну, ставьте. А я сниму у вас диск с компа и подключу к своему. И где ваш пароль на биос?

    • soko1

      21.11.2016 at 14:56

      И тот вариант и этот — отстой.
      Нужен либо LUKS на основной раздел где все данные, либо (в идеале) вообще на всё включая загрузчик, но такого пока не существует насколько мне известно.

Оставить мнение