Avatud on kaks haavatavust GRUB2 laadijates, mis võivad põhjustada koodi täitmist spetsiaalselt vormindatud fontide ja teatud Unicode-järjestuste töötlemise käigus. Haavatavusi saab kasutada UEFI Secure Booti kinnitatud laadimise mehhanismi vältimiseks.
Tuvastatud haavatavused:
- CVE-2022-2601 — puhverserveri ületamine funktsioonis grub_font_construct_glyph() spetsiaalselt vormindatud pf2 formaadis fontide töötlemisel, mis tuleneb vale maks_glyph_size parameetri arvutamisest ja mälupiirkonna eraldamisest, mis on selgelt väiksem kui vajalik glüüfidest hoidmiseks.
- CVE-2022-3775 — mälupiirkonna piiridest väljas kirjutamine mõnede Unicode-järjestuste joonistamisel spetsiaalselt vormindatud fondiga. Probleem esineb fontide töötlemise koodis ja on põhjustatud piisavate glüüfi laiuse ja kõrguse vastavuse kontrollide puudumisest olemasoleva bitmap-i suurusega. Ründaja saab sisendi valida nii, et põhjustada andmete kirjutamist eraldatud puhvri piiridest välja. Täheldatakse, et hoolimata haavatavuse kasutamise keerukusest ei saa koodi täitmise võimalust täielikult välistada.
Parandus on avaldatud plaastrina. Haavatavuste kõrvaldamise staatus distributsioonides on hinnatav järgmistel lehtedel: Ubuntu, SUSE, RHEL, Fedora, Debian. GRUB2 probleemide lahendamiseks ei piisa lihtsalt paketi uuendamisest; on vajalik ka uute sisemiste digitaalsignatuuride loomine ning installerite, laadijate, kerneli pakettide, fwupd-firmware'ide ja shim-kihi uuendamine.
Enamikus Linuxi distributsioonides kasutatakse UEFI Secure Boot režiimis kinnitatud laadimise jaoks väikest shim-vahetust, mille on digitaalselt allkirjastanud Microsoft. See vahetus verifitseerib GRUB2 oma sertifikaadiga, mis võimaldab distributsioonide arendajatel mitte kinnitada iga kerneli ja GRUBi uuendust Microsoftis. GRUB2 haavatavused võimaldavad koodi täitmist vahetuse tõendamise järgselt, kuid enne operatsioonisüsteemi laadimist, sekkudes usaldusprotsessi Secure Boot aktiivse režiimi ajal ja saavutades täieliku kontrolli laadimisprotsessi üle, sealhulgas teise OS-i laadimise, operatsioonisüsteemi komponentide muutmise ja Lockdown kaitse mööda mineku.
Digitaalallkirja tagasi võtmata haavatavuse blokeerimiseks võivad distributsioonid kasutada SBAT (UEFI Secure Boot Advanced Targeting) mehhanismi, mille toetust on rakendatud GRUB2, shim ja fwupd enamikus populaarsetes Linuxi distributsioonides. SBAT on välja töötatud koostöös Microsoftiga ning see hõlmab täiendavate metainformatsioonide lisamist UEFI komponente sisaldavatesse täiturfailidesse, sealhulgas tootja, toote, komponendi ja versiooni teavet. Mainitud metainformatsioon on digitaalallkirjaga allkirjastatud ja seda saab eraldi lisada lubatud või keelatud komponentide loetellu UEFI Secure Boot jaoks.
SBAT võimaldab blokeerida digitaalallkirja kasutamise konkreetsete komponentide versiooninumbrite jaoks ilma Secure Booti võtmete tagasivõtmiseta. SBAT kaudu haavatavuste blokeerimine ei vaja UEFI (dbx) tagasivõetud sertifikaatide loetelu kasutamist, vaid toimub sisemise võtme asendamise tasemel allkirjade genereerimiseks ja GRUB2, shim ja muude tarnitud distributsioonide käivitamisartefaktide uuendamiseks. Enne SBAT rakendamist oli tagasivõetud sertifikaatide loetelu (dbx, UEFI tagasivõetud loend) uuendamine hädavajalik, et haavatavus täielikult blokeerida, kuna ründaja, sõltumata kasutatavast operatsioonisüsteemist, sai UEFI Secure Booti kompromiteerimiseks kasutada vananemistootes haavatavat GRUB2 versiooni, mille digitaalallkiri oli kinnitatud.
Allikas: opennet.ru
