Критическая уязвимость в загрузчике GRUB2, позволяющая обойти UEFI Secure Boot
29 июля 2020 года
В загрузчике 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 предложен набор патчей.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.