19.09.2020

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


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

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

Другие уязвимости в 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 предложен набор патчей.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53454

Добавить комментарий