Уразлівасці ў 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

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