Comments 32
Автор, переименуйте в "Уязвимость скриптов инициализации Cryptsetup в Debian". Про уязвимости cryptsetup в linux ни одной буквы нет. Cryptsetup вообще нет в Linux, это утилита окружения, взаимодействующая с ядром, а не часть ядра. А интерфейс ядра — dm-crypt — не пользовательский и Enter к нему никакого отношения не имеет.
Не поверил, взял виртуалку, дистрибутив Centos 6.8, поставил, при установке выбрал «зашифровать систему». После старта и загрузки ядра запросили пароль. Ничего не вводил, прилег подремать на Enter. Ожидаемо добился сообщения Wrong password и кернел паника (радостно начали мигать индикаторы caps, num, scrool).
ресетнул виртуалку. В параметрах ядра отключил rhgb quiet, получил лог загрузки системы. Эффект тот же.
Авторы, куда и как мне нужно нажать, чтобы я получил шелл? Про init=/bin/sh в параметры ядра я в курсе. Попробовал. Все равно просят пароль на sda2, и пока не введу — ничего не дают. Через полторы минуты я получаю kernel panic. Как в таком состоянии добраться до системы — честно не знаю, не разработчик. Но по моему кроме как reset ничего и сделать то нельзя…
Так что не верю. Если в конкретном дистрибутиве ошибка в инит скриптах, которая позволяет не монтировать систему и получить шелл — так это проблема этого дистрибутива.
Для проверки поставил убунту сервер 16.04. Да, действительно, если зажать ентер — вываливаемся в шелл busybox.
Проблема исключительно в дебианах и убунтах. Правда чистый дебиан я не проверял, желающие могут проверить сами.
Есть там такая проблема. Я эти скрипты инициализации курил, но насчёт именно своего сценария использования (вообще такое должен делать каждый, кто внедряет такого рода безопасность). В моём случае данная "уязвимость" не является сколь-нибудь важной проблемой.
Да и вообще, эта уязвимость становится проблемой в случае, когда на компьютере с диском нельзя запустить своё ПО, т.е.: система загрузки — заблокирована (TPM, встроенная защита UEFI и так далее), а вынуть диск и подключить к своему компьютеру нельзя.
Если я, скажем, на компе могу стартовать свою систему с флешки и смонтировать загрузочный раздел, меня вообще не волнует, какая там безопасность в инитрамфс и ядре — подсунуть кейлоггер я завсегда смогу.
Вот более корректное описание уязвимости с ЛОРа
Найденная уязвимость позволяет получить доступ к оболочке busybox с привилегиями администратора, если удерживать клавишу ввода около 70 секунд во время запроса пароля к зашифрованному тому.
Это неприятно для систем с ограниченным локальным доступом. Атакующий может, например, установить кейлоггер или скачать зашифрованный раздел на внешнюю систему для последующего анализа.
С большой вероятностью, уязвимы все системы, использующие cryptsetup, в первую очередь, основывающиеся на Debian.
Пользователи самосборных initramfs спят спокойно, ручные пользователи cryptsetup спят спокойно. Что с genkernel?
И, да, ядро не может выпустить обновления, оно пока еще не развилось до искусственного интеллекта.
Объясните пожалуйста вот это предложение.
Если у меня есть доступ к консоли виртуального сервера — это абсолютно равнозначно физическому доступу к физическому серверу. Даже если некий хакер доведет виртуалку до ребута — как он сможет воспользоваться этой проблемой? Как ему «нажать enter на 70 сек при запросе пароля от зашифрованного тома»?
Если я в GRUB добавлю init=/bin/sh (или что там в initramfs есть), то попаду ровно туда же.
Зашифрованные разделы так и останутся зашифрованными.
Нет, если корневой раздел зашифрован, вы получите панику. Да и груб не должен дать возможность редактировать строку ядра.
Представьте: комп разобрать не удаётся, выбор устройства загрузки залочен в UEFI (т.е. тыкай, не тыкай флешки — нет пути), но можно подержать Enter и получить шелл, с помощью которого в initramfs, хранящийся на незашифрованном разделе, можно встроить кейлоггер.
Да и пересобрать initramfs изнутри него я думаю никак не удастся, только заменить если есть доступ по сети какой-либо, что учитывая ограниченность initramfs — вряд-ли.
В общем, не думаю что в реальности это какой-либо значимый security flaw.
Да и груб не должен дать возможность редактировать строку ядра.
По дефолту — всё доступно без проблем.
This vulnerability allows to obtain a root initramfs shell on affected systems.
Уязвимость в системе дает доступ к оболочке корневых файлов initramfs.
An attacker with access to the console of the computer and with the ability to reboot the computer can launch a shell (with root permissions) when he/she is prompted for the password to unlock the system partition.
С доступом к консоли и опцией перезагрузки системы хакер способен запустить оболочку без корневых разрешений в окружении initrd.
Несколько абзацев оригинальной статьи, в которых описывается самая суть, причина ошибки, переведены как:
Как только вы превысили максимальное количество попыток обвала переходных аппаратных средств, вы получаете права доступа к корневому уровню.
PROMT? Magic Gooddy? Надмозг? Редактор Хабра? Почему не помечено как перевод?
Ответ прост: я не умею писать, поэтому не пишу. Но читать-то я умею.
Вы сами как оцениваете качество этого перевода?
Мой принцип простой: «Критикуешь — Предлагай, Предлагаешь — Делай». У вас только критика, исправлений автору вы не предложили, а ведь с этого стоило начать.
И ещё — если вы умный, стоит учить окружающих людей, делая таким образом лучше всем. Надменно упрекая вы лишь ускоряете общее движение в обратном направлении.
Это в частности. А в общем у меня стандартное нытьё про слишком уж большое количество редакторских статей, на фоне которых приходится отыскивать крупицы от специалистов.
Выглядит так, как будто я нападаю на неё лично, но нет. Понятно, что девушка она не глупая, и вообще разбирается в вещах, хоть эта статья и переведена «на отстань».
Что меня больше удручает, так это большое количество таких статей, когда автор пишет не потому что хочет, а потому что надо «гнать контент».
Ошибки не исправили. Как перевод не пометили.
Да, вещь важная, но на профильных ресурсах новость уже проходила, так что большинство уже в курсе. Заметка на OpenNet, например, на голову лучше, чем здесь. (Заодно посмотрите как переводятся встречающиеся в тексте термины).
http://metadata.ftp-master.debian.org/changelogs/main/c/cryptsetup/cryptsetup_1.7.3-2_changelog
Теперь после трёх неудачных попыток ввода пароля консоль блокируется на 1 минуту (по умолчанию).
Уязвимость скриптов инициализации Cryptsetup в Debian: достаточно просто зажать Enter