GRUB2 pažeidžiamumas, leidžiantis apeiti UEFI Secure Boot

Pataisytos 2 GRUB7 įkrovos įkrovos spragos, kurios leidžia apeiti UEFI saugaus įkrovos mechanizmą ir paleisti nepatvirtintą kodą, pavyzdžiui, įvesti kenkėjiškas programas, veikiančias įkrovos įkrovos arba branduolio lygiu. Be to, tarpiklio sluoksnyje yra vienas pažeidžiamumas, kuris taip pat leidžia apeiti UEFI saugų įkrovą. Pažeidžiamumų grupė buvo pavadinta Boothole 3, panašiai į panašias problemas, anksčiau nustatytas įkrovos įkroviklyje.

Norėdami pašalinti GRUB2 ir shim problemas, paskirstymai galės naudoti SBAT (UEFI Secure Boot Advanced Targeting) mechanizmą, kuris palaikomas GRUB2, shim ir fwupd. SBAT buvo sukurtas kartu su Microsoft ir apima papildomų metaduomenų įtraukimą į vykdomuosius UEFI komponentų failus, įskaitant informaciją apie gamintoją, produktą, komponentą ir versiją. Nurodyti metaduomenys yra sertifikuoti skaitmeniniu parašu ir gali būti atskirai įtraukti į leidžiamų arba draudžiamų UEFI saugaus įkrovos komponentų sąrašus.

Daugumoje „Linux“ paskirstymų naudojamas nedidelis „Microsoft“ skaitmeniniu parašu pasirašytas tarpinis sluoksnis, kad būtų galima patikrinti paleidimą UEFI saugaus įkrovos režimu. Šis sluoksnis patvirtina GRUB2 naudodamas savo sertifikatą, kuris leidžia platinimo kūrėjams neturėti kiekvieno branduolio ir GRUB naujinimo, sertifikuotų Microsoft. GRUB2 pažeidžiamumas leidžia pasiekti savo kodo vykdymą etape po sėkmingo tarpinio patikrinimo, bet prieš įkeliant operacinę sistemą, įsiterpiant į pasitikėjimo grandinę, kai aktyvus saugaus įkrovos režimas, ir visiškai valdyti tolesnį įkrovos procesą, įskaitant įkelti kitą OS, modifikuoti operacinės sistemos komponentų sistemą ir apeiti užrakinimo apsaugą.

Norėdami išspręsti įkrovos įkrovos problemas, paskirstymai turės sukurti naujus vidinius skaitmeninius parašus ir atnaujinti diegimo programas, įkrovos įkroviklius, branduolio paketus, fwupd programinę-aparatinę įrangą ir tarpinį sluoksnį. Prieš įvedant SBAT, sertifikatų panaikinimo sąrašo (dbx, UEFI panaikinimo sąrašo) atnaujinimas buvo būtina sąlyga norint visiškai užblokuoti pažeidžiamumą, nes užpuolikas, nepriklausomai nuo naudojamos operacinės sistemos, galėjo naudoti įkrovos laikmeną su sena pažeidžiama GRUB2 versija, sertifikuotas skaitmeniniu parašu, kad būtų pažeistas UEFI saugus įkrovimas.

Užuot atšaukęs parašą, SBAT leidžia blokuoti jo naudojimą atskiriems komponentų versijų numeriams neatšaukiant saugaus įkrovimo raktų. Blokuojant pažeidžiamumą naudojant SBAT, nereikia naudoti UEFI sertifikatų panaikinimo sąrašo (dbx), tačiau tai atliekama pakeičiant vidinį raktą, kad būtų generuojami parašai ir atnaujinamas GRUB2, tarpiklis ir kiti platinimų teikiami įkrovos artefaktai. Šiuo metu SBAT palaikymas jau buvo įtrauktas į populiariausius Linux platinimus.

Nustatyti pažeidžiamumai:

  • CVE-2021-3696, CVE-2021-3695 yra krūvos buferio perpildymai, kai apdorojami specialiai sukurti PNG vaizdai, kurie teoriškai gali būti naudojami užpuoliko kodui vykdyti ir UEFI saugaus įkrovimo apeiti. Pažymima, kad problemą sunku išnaudoti, nes norint sukurti veikiantį išnaudojimą, reikia atsižvelgti į daugybę veiksnių ir informacijos apie atminties išdėstymą prieinamumą.
  • CVE-2021-3697 – buferio perteklius JPEG vaizdo apdorojimo kode. Norint išnaudoti problemą, reikia žinoti atminties išdėstymą ir tai yra maždaug tokio pat sudėtingumo lygis kaip ir PNG problema (CVSS 7.5).
  • CVE-2022-28733 – sveikojo skaičiaus perpildymas funkcijoje grub_net_recv_ip4_packets() leidžia paveikti parametrą rsm->total_len siunčiant specialiai sukurtą IP paketą. Problema pažymėta kaip pavojingiausia iš pateiktų pažeidžiamumų (CVSS 8.1). Sėkmingai išnaudojamas pažeidžiamumas leidžia įrašyti duomenis už buferio ribos, skiriant sąmoningai mažesnį atminties dydį.
  • CVE-2022-28734 – vieno baito buferio perpildymas apdorojant nuimtas HTTP antraštes. Dėl problemos gali būti sugadinti GRUB2 metaduomenys (nulinio baito įrašymas iškart pasibaigus buferiui), kai analizuojamos specialiai sukurtos HTTP užklausos.
  • CVE-2022-28735 „Shim_lock“ tikrintuvo problema leidžia įkelti ne branduolio failą. Pažeidžiamumas gali būti naudojamas įkeliant nepasirašytus branduolio modulius arba nepatvirtintą kodą UEFI saugaus įkrovos režimu.
  • CVE-2022-28736 Jau atlaisvintos atminties prieiga funkcijoje grub_cmd_chainloader() per grandinės įkėlimo komandą, naudojama operacinėms sistemoms, nepalaikomoms GRUB2, paleisti. Išnaudojimas gali baigtis užpuoliko kodo vykdymu, jei užpuolikas gali nustatyti atminties paskirstymą GRUB2
  • CVE-2022-28737 – Įkeliant ir vykdant sukurtus EFI vaizdus, ​​tarpinio sluoksnio buferio perpildymas įvyksta naudojant hand_image() funkciją.

Šaltinis: opennet.ru

Добавить комментарий