Цяжкаадхільныя ўразлівасці ў GRUB2, якія дазваляюць абыйсці UEFI Secure Boot

Раскрыта інфармацыя аб 8 уразлівасцях у загрузніку GRUB2, якія дазваляюць абыйсці механізм UEFI Secure Boot і дамагчыся запуску неверыфікаванага кода, напрыклад, ажыццявіць укараненне шкоднаснага ПА, які працуе на ўзроўні загрузніка або ядра.

Нагадаем, што ў большасці Linux-дыстрыбутываў для верыфікаванай загрузкі ў рэжыме UEFI Secure Boot выкарыстоўваецца невялікая праслойка shim, завераная лічбавым подпісам Microsoft. Дадзеная праслойка верыфікуе GRUB2 уласным сертыфікатам, што дазваляе распрацоўнікам дыстрыбутываў не завяраць кожнае абнаўленне ядра і GRUB у Microsoft. Уразлівасці ў GRUB2 дазваляюць дамагчыся выкананні свайго кода на этапе пасля паспяховай верыфікацыі shim, але да загрузкі аперацыйнай сістэмы, уклініўшыся ў ланцужок даверу пры актыўным рэжыме Secure Boot і атрымаўшы поўны кантроль за наступным працэсам загрузкі, у тым ліку для загрузкі іншай АС, мадыфікацыі кампанентаў аперацыйнай сістэмы і абыходу абароны Lockdown.

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

На сістэмах з прашыўкамі, у якіх абноўлены спіс адкліканых сертыфікатаў, у рэжыме UEFI Secure Boot можна будзе загрузіць толькі абноўленыя зборкі дыстрыбутываў Linux. Дыстрыбутывам жа запатрабуецца абнавіць усталёўнікі, загрузнікі, пакеты з ядром, fwupd-прашыўкі і shim-праслойку, згенераваўшы для іх новыя лічбавыя подпісы. Карыстальнікі павінны будуць абнавіць усталявальныя выявы і іншыя загрузныя носьбіты, а таксама загрузіць спіс адкліканых сертыфікатаў (dbx) у прашыўку UEFI. Да абнаўлення dbx у UEFI сістэма застаецца ўразлівай незалежна ад усталёўкі абнаўленняў у АС. Статус ухілення ўразлівасцяў можна ацаніць на дадзеных старонках: Ubuntu, SUSE, RHEL, Debian.

Для вырашэння праблем, якія ўзнікаюць пры распаўсюджванні адкліканых сертыфікатаў, у будучыні плануецца задзейнічаць механізм SBAT (UEFI Secure Boot Advanced Targeting), падтрымка якога рэалізавана для GRUB2, shim і fwupd, і пачынаючы з наступных абнаўленняў будзе выкарыстоўвацца замест функцыянальнасці, якая прадастаўляецца пакетам dbxto. SBAT распрацаваны сумесна з Microsoft і мае на ўвазе даданне ў выкананыя файлы кампанентаў UEFI новых метададзеных, якія ўключаюць інфармацыю аб вытворцу, прадукце, кампаненце і версіі. Гэтыя метададзеныя завяраюцца лічбавым подпісам і могуць дадаткова ўключацца ў спісы дазволеных або забароненых кампанентаў для UEFI Secure Boot. Такім чынам, SBAT дазволіць пры адкліканні маніпуляваць нумарамі версій кампанентаў без неабходнасці перагенерацыі ключоў для Secure Boot і без фармавання новых подпісаў для ядра, shim, grub2 і fwupd.

Выяўленыя ўразлівасці:

  • CVE-2020-14372 - пры дапамозе каманды acpi у GRUB2 прывілеяваны карыстач лакальнай сістэмы можа загрузіць мадыфікаваныя табліцы ACPI, размясціўшы SSDT (Secondary System Description Table) у каталогу /boot/efi і змяніўшы налады ў grub.cfg. Нягледзячы на ​​актыўнасць рэжыму Secure Boot, прапанаваны SSDT будзе выкананы ядром і можа выкарыстоўвацца для адключэння абароны LockDown, якая блакуе шляхі абыходу UEFI Secure Boot. У выніку атакавалы можа дамагчыся загрузкі свайго модуля ядра ці запуску кода праз механізм kexec, без праверкі лічбавага подпісу.
  • CVE-2020-25632 - зварот да ўжо вызваленай вобласці памяці (use-after-free) у рэалізацыі каманды rmmod, якое праяўляецца пры спробе выгрузіць любы модуль без уліку звязаных з ім залежнасцяў. Уразлівасць не выключае стварэнне эксплоіта, які можа прывесці да выканання кода ў абыход верыфікацыі Secure Boot.
  • CVE-2020-25647 - запіс за межы буфера ў функцыі grub_usb_device_initialize(), выкліканай пры ініцыялізацыі USB-прылад. Праблема можа быць эксплуатаваная праз падлучэнне адмыслова падрыхтаванай USB-прылады, які выдае параметры, памер якіх не адпавядае памеру буфера, вылучанага для структур USB. Атакуючы можа дамагчыся выкананні кода, не верыфікаванага ў Secure Boot, праз маніпуляцыі з USB-прыладамі.
  • CVE-2020-27749 — перапаўненне буфера ў функцыі grub_parser_split_cmdline(), якое можа быць выклікана ўказаннем у камандным радку GRUB2 зменных, памерам больш за 1 КБ. Уразлівасць дазваляе дамагчыся выкананні кода ў абыход Secure Boot.
  • CVE-2020-27779 – каманда cutmem дае магчымасць атакаваламу выдаліць дыяпазон адрасоў з памяці для абыходу Secure Boot.
  • CVE-2021-3418 – змены ў shim_lock стварылі дадатковы вектар для эксплуатацыі леташняй уразлівасці CVE-2020-15705. Пры ўсталёўцы ў dbx сертыфіката, выкарыстоўванага для подпісу GRUB2, GRUB2 дазваляў загрузіць любое ядро ​​напроста без праверкі подпісу.
  • CVE-2021-20225 - магчымасць запісу дадзеных за межы буфера пры запуску каманд з вельмі вялікім лікам опцый.
  • CVE-2021-20233 - магчымасць запісу дадзеных за мяжу буфера з-за няправільнага разліку памеру буфера пры выкарыстанні двукоссяў. Пры разліку памеру меркавалася, што для экранавання адзінарнай двукоссі патрабуецца тры знака, хоць на справе неабходна чатыры.

Крыніца: opennet.ru

Дадаць каментар