Уразливості в GRUB2, що дозволяють обійти UEFI Secure Boot

У завантажувачі 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.

У більшості Linux-дистрибутивів для верифікованого завантаження в режимі UEFI Secure Boot використовується невеликий прошарок shim, завірений цифровим підписом Microsoft. Цей прошарок верифікує GRUB2 власним сертифікатом, що дозволяє розробникам дистрибутивів не завіряти кожне оновлення ядра та GRUB у Microsoft. Уразливості в GRUB2 дозволяють досягти виконання свого коду на етапі після успішної верифікації shim, але до завантаження операційної системи, вклинившись в ланцюжок довіри при активному режимі Secure Boot і отримавши повний контроль за подальшим процесом завантаження, у тому числі для завантаження іншої ОС, модифікації компонентів операційної системи та обходу захисту Lockdown.

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

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

Виявлені вразливості:

  • 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.

Джерело: opennet.ru

Додати коментар або відгук