Специалисты компании Eclypsium раскрыли детали уязвимости, получившей название BootHole (CVE-2020-10713).
Уязвимость
Проблема позволяет злоумышленникам вмешиваться в процесс загрузки, предшествующий запуску ОС. По сути, BootHole — уязвимость в GRUB2, одном из наиболее популярных на сегодняшний день загрузчиков. GRUB2 используется в качестве основного загрузчика во всех основных дистрибутивах Linux, а также порой применяется для систем на базе Windows, macOS и BSD.
Исследователи пишут, что BootHole представляет собой буткит и позволяет злоумышленникам вмешиваться в GRUB2, внедрять и выполнять вредоносный код во время процесса загрузки. То есть атакующий получает возможность внедрить код, полностью контролирующий ОС, которая «стартует» позднее.
Согласно специалистам Eclypsium, корень уязвимости BootHole кроется внутри файла конфигурации grub.cfg, откуда загрузчик извлекает настройки. Злоумышленники может изменить значения в этом файле таким образом, чтобы спровоцировать переполнение буфера GRUB2, когда тот читает файл grub.cfg.
В сущности, BootHole может использоваться для внесения изменений в код загрузчика и даже для его подмены на вредоносную или уязвимую версию. Хуже того, атака BootHole работает даже в том случае, если на сервере или рабочей станции включен защитный механизм Secure Boot (для некоторых устройств и ОС криптографическая проверка файла grub.cfg не выполняется).
К счастью, для реализации атаки BootHole нужно соблюсти ряд условий. К примеру, для взаимодействия с файлом grub.cfg злоумышленнику необходим доступ администратора. То есть сначала атакующему придется каким-то образом получить доступ и высокие привилегии в целевой системе.
Эксперты Eclypsium сообщили, что, по их данным, проблема BootHole затрагивает все дистрибутивы Linux, так как они все используют GRUB2 и получают команды из внешнего файла grub.cfg. Также уязвимы все системы, использующие Secure Boot со стандартным Microsoft UEFI CA.
«Мы считаем, что большинство современных, используемых сегодня систем, включая серверы и рабочие станции, ноутбуки и настольные компьютеры, а также большое количество систем OT и IoT на базе Linux, потенциально подвержены влиянию этой уязвимости», — пишут эксперты.
По мнению исследователей, исправление этого бага займет довольно много времени, так как исправление проблем загрузчика в целом представляет собой сложный процесс (из-за множества компонентов и сложной криптографии).
Патчи
Eclypsium скоординировала раскрытие уязвимости со специалистами Microsoft, CERT/CC , разработчиками дистрибутивов Linux, UEFI Security Response Team, OEM, CERT, VMware, Oracle и другими крупными поставщиками ПО. Ожидается, что скоро многие из них выпустят рекомендации и обновления, касающиеся BootHole и других проблем GRUB2.
Так, Microsoft сообщает, что BootHole представляет угрозу для Windows 10, 8.1, Server 2012, Server 2016, Server 2019 и Server версий 1903, 1909 и 2004. Компания уже работает над обновлением, которое будет распространяться через Windows Update.
Разработчики Linux-дистрибутивов тоже активно занимаются исправлением BootHole и в процессе обнаруживают немало интересного. К примеру, глава безопасности Canonical Джо Макманус (Joe McManus) пишет:
«Мы в Canonical, вместе с остальным опенсорсным сообществом, обновили GRUB2 для защиты от этой уязвимости. В процессе мы выявили семь дополнительных уязвимостей в GRUB2, которые также будут исправлены в обновлениях, выпущенных сегодня. Сама проблема не является удаленной уязвимостью, и злоумышленник должен иметь root-привилегии. С учетом этого, мы не думаем, это будет популярная уязвимость, используемая на практике».
Руководитель безопасности SUSE Маркус Мейснер (Marcus Meissner) тоже отмечает, что проблема серьезна и требует исправления, она в целом не так уж и плоха:
«Учитывая необходимость root-доступа к загрузчику, описанная атака, очевидно, имеет ограниченную актуальность для большинства сценариев, связанных с облачными вычислениями, ЦОД и персональными устройствами (если только эти системы не были скомпрометированы при помощи другой известной проблемы). Однако уязвимость опасна в том случае, если пользователи могут получить доступ к машине, например, установленной в общественном месте и работающей в режиме автоматизированного киоска».
А вот у разработчиков Red Hat Enterprise Linux возникли проблемы с исправлением BootHole. Так, пользователи сообщают, что после патча Red Hat Enterprise Linux (RHEL) 8.2 их системы перестали загружаться. Проблема также касается систем на базе RHEL 7.x и 8.x, Atomic Host и OpenShift Container Platform 4 но, похоже, распространяется только на bare-iron серверы. Виртуальные машины RHEL, которые не работают Secure Boot, функционируют нормально. Разработчики обещают выпустить «патч для патча» в самом ближайшем будущем.
Пользователи CentOS 7.x и 8.x тоже сообщают о похожих проблемах, возникших после установки исправлений. Также в сети можно найти немало сообщений о других проблемах с загрузкой в других дистрибутивах Linux (включая Ubuntu и Debian). В итоге пока пользователям советуют повременить с установкой патчей и дождаться прояснения ситуации.