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

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

Check Also

Кардер Fly, приславший героин журналисту Брайану Кребсу, получил 41 месяц тюрьмы

Суд вынес приговор Сергею Вовненко, который в 2013 году прислал героин по почте известному…