Уязвимость при шифровании дисков в Linux (cryptsetup): 70-секундное нажатие Enter и пароль не нужен
Вчера известный испанский специалист по ИТ-безопасности Гектор Марко (Hector Marco) опубликовал на своём сайте сообщение о критической уязвимости CVE-2016-4484, получившей говорящее название «Cryptsetup Initrd root Shell».
Проблема была обнаружена в утилите cryptsetup, предназначенной для шифрования жёстких дисков в Linux с помощью LUKS (Linux Unified Key Setup). Некорректная обработка вводимого пользователем пароля в скрипте /scripts/local-top/cryptroot приводит к тому, что достаточно попытаться сделать эту операцию (ввести неправильный пароль) множество раз (93 для архитектуры x86), что вызовет root-шелл (Busybox). Таким образом, эксплуатация уязвимости cryptsetup заключается в том, чтобы просто зажать клавишу Enter на примерно 70 секунд, после чего вы окажетесь в системе с правами администратора.
Из официального комментария Марко о CVE-2016-4484: «Эта уязвимость очень надёжна [в воспроизведении], потому что не зависит от конкретных систем или конфигураций. Атакующие могут копировать, модифицировать и удалять данные жёсткого диска, а также настроить сеть для пересылки данных. Уязвимость особенно серьёзна в таких окружениях, как библиотеки, банкоматы, терминалы в аэропортах, лаборатории и т.п., где весь процесс загрузки защищён (паролем в BIOS и GRUB), а у нас есть доступ к клавиатуре и/или мыши».
Автор отмечает, что «если вы используете Debian или Ubuntu (возможно, уязвимы и производные дистрибутивы, но мы их не проверяли) и зашифровали системный раздел, то ваши системы уязвимы», а также то, «что системы, использующие Dracut вместо initramfs, тоже уязвимы (проверено на Fedora 24 x86_64)». На странице описания уязвимости CVE-2016-4484 предлагается и патч для скрипта cryptroot, и простой workaround.
Дмитрий Шурупов по материалам Hector Marco, Bleeping Computer.