Grūti labojamas GRUB2 ievainojamības, kas ļauj apiet UEFI Secure Boot

Ir atklāta informācija par 8 ievainojamÄ«bām GRUB2 sāknÄ“Å”anas ielādētājā, kas ļauj apiet UEFI Secure Boot mehānismu un palaist nepārbaudÄ«tu kodu, piemēram, ieviest ļaunprātÄ«gu programmatÅ«ru, kas darbojas sāknÄ“Å”anas ielādētāja vai kodola lÄ«menÄ«.

Atcerēsimies, ka lielākajā daļā Linux izplatÄ«jumu pārbaudÄ«tai sāknÄ“Å”anai UEFI Secure Boot režīmā tiek izmantots neliels starplikas slānis, ko Microsoft parakstÄ«jis ciparparaksts. Å is slānis pārbauda GRUB2 ar savu sertifikātu, kas ļauj izplatÄ«Å”anas izstrādātājiem neļaut katram kodolam un GRUB atjauninājumam Microsoft sertificēt. GRUB2 ievainojamÄ«bas ļauj sasniegt jÅ«su koda izpildi stadijā pēc veiksmÄ«gas shim verifikācijas, bet pirms operētājsistēmas ielādes, ieslēdzoties uzticÄ«bas ķēdē, kad droŔās sāknÄ“Å”anas režīms ir aktÄ«vs un iegÅ«stot pilnÄ«gu kontroli pār turpmāko sāknÄ“Å”anas procesu, t.sk. citas operētājsistēmas ielāde, operētājsistēmas komponentu sistēmas modificÄ“Å”ana un bloÄ·Ä“Å”anas aizsardzÄ«bas apieÅ”ana.

Tāpat kā ar pagājuŔā gada BootHole ievainojamÄ«bu, ar sāknÄ“Å”anas ielādētāja atjaunināŔanu nepietiek, lai bloķētu problēmu, jo uzbrucējs neatkarÄ«gi no izmantotās operētājsistēmas var izmantot sāknējamu datu nesēju ar vecu, digitāli parakstÄ«tu, ievainojamu GRUB2 versiju, lai apdraudētu UEFI Secure Boot. Problēmu var atrisināt tikai atjauninot sertifikātu atsaukÅ”anas sarakstu (dbx, UEFI Revocation List), taču Å”ajā gadÄ«jumā tiks zaudēta iespēja izmantot veco instalācijas datu nesēju ar Linux.

Sistēmās ar programmaparatÅ«ru, kurai ir atjaunināts sertifikātu atsaukÅ”anas saraksts, UEFI droŔās sāknÄ“Å”anas režīmā var ielādēt tikai atjauninātas Linux izplatÄ«jumu versijas. IzplatÄ«jumiem bÅ«s jāatjaunina instalētāji, sāknÄ“Å”anas ielādētāji, kodola pakotnes, fwupd programmaparatÅ«ra un shim slānis, Ä£enerējot tiem jaunus ciparparakstus. Lietotājiem bÅ«s jāatjaunina instalācijas attēli un citi sāknÄ“Å”anas datu nesēji, kā arÄ« jāielādē sertifikātu atsaukÅ”anas saraksts (dbx) UEFI programmaparatÅ«rā. Pirms dbx atjaunināŔanas uz UEFI, sistēma joprojām ir neaizsargāta neatkarÄ«gi no atjauninājumu instalÄ“Å”anas operētājsistēmā. IevainojamÄ«bu statusu var novērtēt Å”ajās lapās: Ubuntu, SUSE, RHEL, Debian.

Problēmu risināŔanai, kas rodas, izplatot atsauktos sertifikātus, turpmāk plānots izmantot SBAT (UEFI Secure Boot Advanced Targeting) mehānismu, kura atbalsts ir ieviests priekÅ” GRUB2, shim un fwupd un sākot ar nākamajiem atjauninājumiem izmanto dbxtool pakotnes nodroÅ”inātās funkcionalitātes vietā. SBAT tika izstrādāts kopÄ«gi ar Microsoft, un tas ietver jaunu metadatu pievienoÅ”anu UEFI komponentu izpildāmajiem failiem, kas ietver informāciju par ražotāju, produktu, komponentu un versiju. NorādÄ«tie metadati ir sertificēti ar ciparparakstu un papildus var tikt iekļauti UEFI Secure Boot atļauto vai aizliegto komponentu sarakstos. Tādējādi SBAT ļaus atsaukÅ”anas laikā manipulēt ar komponentu versiju numuriem bez nepiecieÅ”amÄ«bas atjaunot atslēgas droÅ”ai sāknÄ“Å”anai un neÄ£enerējot jaunus parakstus kodolam, shim, grub2 un fwupd.

Identificētās ievainojamības:

  • CVE-2020-14372 ā€” izmantojot GRUB2 komandu acpi, priviliģēts lietotājs lokālajā sistēmā var ielādēt modificētas ACPI tabulas, ievietojot SSDT (sekundārās sistēmas apraksta tabulu) direktorijā /boot/efi un mainot iestatÄ«jumus failā grub.cfg. Lai gan droŔās sāknÄ“Å”anas režīms ir aktÄ«vs, ierosināto SSDT izpildÄ«s kodols, un to var izmantot, lai atspējotu LockDown aizsardzÄ«bu, kas bloķē UEFI droŔās sāknÄ“Å”anas apieÅ”anas ceļus. Tā rezultātā uzbrucējs var ielādēt savu kodola moduli vai palaist kodu, izmantojot kexec mehānismu, nepārbaudot ciparparakstu.
  • CVE-2020-25632 ir izmantoÅ”ana pēc brÄ«vas atmiņas, ievieÅ”ot komandu rmmod, kas rodas, kad tiek mēģināts izlādēt jebkuru moduli, neņemot vērā ar to saistÄ«tās atkarÄ«bas. IevainojamÄ«ba neizslēdz ļaunprātÄ«gas izmantoÅ”anas izveidi, kas var izraisÄ«t koda izpildi, apejot droŔās sāknÄ“Å”anas verifikāciju.
  • CVE-2020-25647 Ārpus robežām rakstÄ«Å”ana funkcijā grub_usb_device_initialize(), kas tiek izsaukta, inicializējot USB ierÄ«ces. Problēmu var izmantot, pieslēdzot speciāli sagatavotu USB ierÄ«ci, kas ražo parametrus, kuru izmērs neatbilst USB struktÅ«rām atvēlētā bufera izmēram. Uzbrucējs var panākt tāda koda izpildi, kas nav pārbaudÄ«ts droÅ”ajā sāknÄ“Å”anas režīmā, manipulējot ar USB ierÄ«cēm.
  • CVE-2020-27749 ir ā€‹ā€‹bufera pārpilde funkcijā grub_parser_split_cmdline(), ko var izraisÄ«t, GRUB2 komandrindā norādot mainÄ«gos, kas ir lielāki par 1 KB. IevainojamÄ«ba ļauj koda izpildei apiet droÅ”o sāknÄ“Å”anu.
  • CVE-2020-27779 ā€” komanda cutmem ļauj uzbrucējam noņemt no atmiņas virkni adreÅ”u, lai apietu droÅ”o sāknÄ“Å”anu.
  • CVE-2021-3418 ā€” izmaiņas shim_lock radÄ«ja papildu vektoru, lai izmantotu pagājuŔā gada ievainojamÄ«bu CVE-2020-15705. Instalējot sertifikātu, ko izmanto GRUB2 parakstÄ«Å”anai vietnē dbx, GRUB2 ļāva ielādēt jebkuru kodolu tieÅ”i, nepārbaudot parakstu.
  • CVE-2021-20225 ā€” iespēja rakstÄ«t ārpus robežām datus, izpildot komandas ar ļoti lielu opciju skaitu.
  • CVE-2021-20233 ā€” iespēja rakstÄ«t datus ārpus robežām nepareiza bufera lieluma aprēķina dēļ, izmantojot pēdiņas. Aprēķinot izmēru, tika pieņemts, ka ir nepiecieÅ”amas trÄ«s rakstzÄ«mes, lai izvairÄ«tos no vienas pēdiņas, lai gan patiesÄ«bā bija vajadzÄ«gas četras rakstzÄ«mes.

Avots: opennet.ru

Pievieno komentāru