• XSS.stack #1 – первый литературный журнал от юзеров форума

Критическая уязвимость в загрузчике GRUB2, позволяющая обойти UEFI Secure Boot

INC.

REVERSE SIDE OF THE MEDAL
Эксперт
Регистрация
02.02.2008
Сообщения
3 950
Реакции
1 872
В загрузчике GRUB2 выявлено 8 уязвимостей. Наиболее опасная проблема (CVE-2020-10713), которой присвоено кодовое имя BootHole, даёт возможность обойти механизм UEFI Secure Boot и добиться установки неверифицированного вредоносного ПО. Особенностью данной уязвимости является то, что для её устранения не достаточно обновить GRUB2, так как атакующий может использовать загрузочный носитель со старой уязвимой версией, заверенной цифровой подписью. Атакующий может скомпрометировать процесс верификации не только Linux, но и других операционных систем, включая Windows.

Проблема решается только обновлением в системе списка отозванных сертификатов (dbx, UEFI Revocation List), но в этом случае будет потеряна возможность использования старых установочных носителей c Linux. Некоторые производители оборудования уже включили в свои прошивки обновлённый список отозванных сертификатов, на таких системах в режиме UEFI Secure Boot можно будет загрузить только обновлённые сборки дистрибутивов Linux.

Для устранения уязвимости в дистрибутивах также потребуется обновить инсталляторы, загрузчики, пакеты с ядром, fwupd-прошивки и shim-прослойку, сгенерировав для них новые цифровые подписи. Пользователи должны будут обновить установочные образы и иные загрузочные носители, а также загрузить список отозванных сертификатов (dbx) в прошивку UEFI. До обновления dbx в UEFI система остаётся уязвимой независимо от установки обновлений в ОС.

Уязвимость вызвана переполнением буфера, который может быть эксплуатирован для выполнения произвольного кода в процессе загрузки. Уязвимость проявляется при разборе содержимого файла конфигурации grub.cfg, который обычно размещается в разделе ESP (EFI System Partition) и может быть отредактирован атакующим, имеющим права администратора, без нарушения целостности подписанных исполняемых файлов shim и GRUB2. Из-за ошибки в коде парсера конфигурации, обработчик фатальных ошибок разбора YY_FATAL_ERROR лишь выводил предупреждение, но не завершал работу программы. Опасность уязвимости снижается необходимостью наличия привилегированного доступа к системе, тем не менее, проблема может оказаться востребованной для внедрения скрытых rootkit-ов при наличии физического доступа к оборудованию (при возможности загрузки со своего носителя).

В большинстве Linux-дистрибутивов для верифицированной загрузки используется небольшая прослойка shim, заверенная цифровой подписью Microsoft. Данная прослойка верифицирует GRUB2 собственным сертификатом, что позволяет разработчикам дистрибутивов не заверять каждое обновление ядра и GRUB в Microsoft. Уязвимость позволяет через изменение содержимого grub.cfg добиться выполнения своего кода на этапе после успешной верификации shim, но до загрузки операционной системы, вклинившись в цепочку доверия при активном режиме Secure Boot и получив полный контроль за дальнейшим процессом загрузки, в том числе для загрузки другой ОС, модификации компонентов операционной системы и обхода защиты Lockdown.

Другие уязвимости в GRUB2:

* CVE-2020-14308 - переполнение буфера из-за отсутствия проверки размера выделяемой области памяти в grub_malloc;

* CVE-2020-14309 - целочисленное переполнение в grub_squash_read_symlink, которое может привести к записи данных за пределами выделенного буфера;

* CVE-2020-14310 - целочисленное переполнение вread_section_from_string, которое может привести к записи данных за пределами выделенного буфера;

* CVE-2020-14311 - целочисленное переполнение в grub_ext2_read_link, которое может привести к записи данных за пределами выделенного буфера;

* CVE-2020-15705 - позволяет загружать неподписанные ядра при прямой загрузке в режиме Secure Boot без прослойки shim;

* CVE-2020-15706 - обращение к уже освобождённой области памяти (use-after-free) при переопределении функции во время выполнения;

* CVE-2020-15707 - целочисленное переполнение в обработчике размера initrd.

Обновления пакетов с исправлениями выпущены для Debian, Ubuntu, RHEL и SUSE. Для GRUB2 предложен набор патчей.


• Source: https://www.openwall.com/lists/oss-security/2020/07/29/3

• Source: https://kb.cert.org/vuls/id/174059

• Source: https://eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/

• Source: https://access.redhat.com/security/vulnerabilities/grub2bootloader

• Source: https://lists.gnu.org/archive/html/grub-devel/2020-07/msg00019.html
 
Специалисты компании Eclypsium раскрыли детали уязвимости, получившей название BootHole (CVE-2020-10713).

Уязвимость
Проблема позволяет злоумышленникам вмешиваться в процесс загрузки, предшествующий запуску ОС. По сути, BootHole — уязвимость в GRUB2, одном из наиболее популярных на сегодняшний день загрузчиков. GRUB2 используется в качестве основного загрузчика во всех основных дистрибутивах Linux, а также порой применяется для систем на базе Windows, macOS и BSD.

Исследователи пишут, что BootHole представляет собой буткит и позволяет злоумышленникам вмешиваться в GRUB2, внедрять и выполнять вредоносный код во время процесса загрузки. То есть атакующий получает возможность внедрить код, полностью контролирующий ОС, которая «стартует» позднее.

Согласно специалистам Eclypsium, корень уязвимости BootHole кроется внутри файла конфигурации grub.cfg, откуда загрузчик извлекает настройки. Злоумышленники может изменить значения в этом файле таким образом, чтобы спровоцировать переполнение буфера GRUB2, когда тот читает файл grub.cfg.

boothole-details.png

В сущности, BootHole может использоваться для внесения изменений в код загрузчика и даже для его подмены на вредоносную или уязвимую версию. Хуже того, атака BootHole работает даже в том случае, если на сервере или рабочей станции включен защитный механизм Secure Boot (для некоторых устройств и ОС криптографическая проверка файла grub.cfg не выполняется).

К счастью, для реализации атаки BootHole нужно соблюсти ряд условий. К примеру, для взаимодействия с файлом grub.cfg злоумышленнику необходим доступ администратора. То есть сначала атакующему придется каким-то образом получить доступ и высокие привилегии в целевой системе.

grub-bootloader-malware.jpg


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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх