Các lỗ hổng trong GRUB2 cho phép bạn vượt qua Khởi động an toàn UEFI

В загрузчике GRUB2 устранено 7 уязвимостей, позволяющих обойти механизм UEFI Secure Boot и добиться запуска неверифицированного кода, например, осуществить внедрение вредоносного ПО, работающего на уровне загрузчика или ядра. Дополнительно отмечается одна уязвимость в прослойке shim, которая также позволяет обойти UEFI Secure Boot. Группа уязвимостей получила кодовое имя Boothole 3, по аналогии с аналогичными проблемами, ранее выявленными в загрузчике.

Для устранения проблем в GRUB2 и shim дистрибутивы смогут использовать механизм SBAT (UEFI Secure Boot Advanced Targeting), поддержка которого реализована для GRUB2, shim и fwupd. SBAT разработан совместно с Microsoft и подразумевает добавление в исполняемые файлы компонентов UEFI дополнительных метаданных, которые включают информацию о производителе, продукте, компоненте и версии. Указанные метаданные заверяются цифровой подписью и могут отдельно включаться в списки разрешённых или запрещённых компонентов для UEFI Secure Boot.

Hầu hết các bản phân phối Linux đều sử dụng một lớp miếng đệm nhỏ được Microsoft ký điện tử để khởi động được xác minh ở chế độ Khởi động an toàn UEFI. Lớp này xác minh GRUB2 bằng chứng chỉ riêng, cho phép các nhà phát triển phân phối không có mọi bản cập nhật kernel và GRUB được Microsoft chứng nhận. Các lỗ hổng trong GRUB2 cho phép bạn đạt được việc thực thi mã của mình ở giai đoạn sau khi xác minh miếng đệm thành công, nhưng trước khi tải hệ điều hành, hãy tham gia vào chuỗi tin cậy khi chế độ Khởi động an toàn được kích hoạt và giành toàn quyền kiểm soát quá trình khởi động tiếp theo, bao gồm tải một hệ điều hành khác, sửa đổi hệ thống các thành phần của hệ điều hành và bỏ qua tính năng bảo vệ Lockdown.

Для устранения проблем в загрузчике дистрибутивам придётся сформировать новые внутренние цифровые подписи и обновлять инсталляторы, загрузчики, пакеты с ядром, fwupd-прошивки и shim-прослойку. До внедрения SBAT, обновление списка отозванных сертификатов (dbx, UEFI Revocation List) было обязательным условием полного блокирования уязвимости, так как атакующий, независимо от используемой операционной системы, мог для компрометации UEFI Secure Boot использовать загрузочный носитель со старой уязвимой версией GRUB2, заверенной цифровой подписью.

Вместо отзыва подписи SBAT позволяет блокировать её использование для отдельных номеров версий компонентов без необходимости отзыва ключей для Secure Boot. Блокирование уязвимостей через SBAT не требует использования списка отозванных сертификатов UEFI (dbx), а производится на уровне замены внутреннего ключа для формирования подписей и обновления GRUB2, shim и других поставляемых дистрибутивами загрузочных артефактов. В настоящее время поддержка SBAT уже добавлена в большинство популярных дистрибутивов Linux.

Các lỗ hổng được xác định:

  • CVE-2021-3696, CVE-2021-3695- переполнения буфера в куче при обработке специально оформленных PNG-изображений, которое теоретически можно использовать для организации выполнения кода атакующего и обхода UEFI Secure Boot. Отмечается, что проблема трудно эксплуатируема, так как для создания рабочего эксплоита требуется учёт большого числа факторов и наличия сведений о раскладке памяти.
  • CVE-2021-3697- переполнение через нижнюю границу буфера (buffer underflow) в коде обработки JPEG-изображений. Эксплуатация проблемы требует получения сведений о раскладке памяти и находится примерно на том же уровне сложности, что и проблема с PNG (CVSS 7.5).
  • CVE-2022-28733 — целочисленное переполнение в функции grub_net_recv_ip4_packets(), позволяющее влиять на параметр rsm->total_len через отправку специально оформленного IP-пакета. Проблема отмечена как наиболее опасная из представленных уязвимостей (CVSS 8.1). При успешной эксплуатации уязвимость позволяет записать данные за границу буфера через выделение заведомо меньшего размера памяти.
  • CVE-2022-28734 — однобайтовое переполнение буфера при обработке разделённых HTTP-заголовков. Проблема может привести к повреждению метаданных GRUB2 (запись нулевого байта сразу за концом буфера) при разборе специально оформленных HTTP-запросов.
  • CVE-2022-28735 — проблема в верификаторе shim_lock, позволяющая загрузить файлы, не относящиеся к ядру. Уязвимость может быть использована для загрузки в режиме UEFI Secure Boot незаверенных цифровой подписью модулей ядра или непроверенного кода.
  • CVE-2022-28736 — обращение к уже освобождённой области памяти в функции grub_cmd_chainloader() через повторный запуск команды chainloader, используемой для загрузки операционных систем, не поддерживаемых в GRUB2. Эксплуатация может привести к выполнению кода атакующего, если злоумышленник сможет определить особенности распределения памяти в GRUB2
  • CVE-2022-28737 — переполнение буфера в прослойке shim, возникающее в функции handle_image() при загрузке и выполнении специально оформленных образов EFI.

Nguồn: opennet.ru

Thêm một lời nhận xét