Težko popravljive ranljivosti v GRUB2, ki vam omogočajo, da obidete UEFI Secure Boot

Razkrite so bile informacije o 8 ranljivostih v zagonskem nalagalniku GRUB2, ki vam omogočajo, da obidete mehanizem varnega zagona UEFI in zaženete nepreverjeno kodo, na primer implementacijo zlonamerne programske opreme, ki se izvaja na ravni zagonskega nalagalnika ali jedra.

Spomnimo se, da se v večini distribucij Linuxa za preverjen zagon v načinu varnega zagona UEFI uporablja majhna podložna plast, ki jo digitalno podpiše Microsoft. Ta plast preverja GRUB2 z lastnim potrdilom, ki razvijalcem distribucij omogoča, da Microsoft ne potrdi vsakega jedra in posodobitve GRUB. Ranljivosti v GRUB2 vam omogočajo, da dosežete izvedbo vaše kode na stopnji po uspešnem preverjanju shim, vendar pred nalaganjem operacijskega sistema, zagozditvijo v verigo zaupanja, ko je način varnega zagona aktiven, in pridobitvijo popolnega nadzora nad nadaljnjim postopkom zagona, vključno z nalaganje drugega operacijskega sistema, spreminjanje sistemskih komponent operacijskega sistema in obhod zaščite pred zaklepanjem.

Kot pri lanski ranljivosti BootHole posodobitev zagonskega nalagalnika ni dovolj za blokiranje težave, saj lahko napadalec, ne glede na uporabljeni operacijski sistem, uporabi zagonski medij s staro, digitalno podpisano, ranljivo različico GRUB2, da ogrozi varni zagon UEFI. Težavo je mogoče rešiti le s posodobitvijo seznama preklicanih potrdil (dbx, UEFI Revocation List), vendar bo v tem primeru izgubljena možnost uporabe starega namestitvenega medija z Linuxom.

V sistemih z vdelano programsko opremo, ki ima posodobljen seznam preklicanih potrdil, je mogoče v načinu UEFI Secure Boot naložiti samo posodobljene različice distribucij Linuxa. Distribucije bodo morale posodobiti namestitvene programe, zagonske nalagalnike, pakete jedra, vdelano programsko opremo fwupd in shim plast ter zanje ustvariti nove digitalne podpise. Uporabniki bodo morali posodobiti namestitvene slike in druge zagonske medije ter naložiti seznam preklicanih potrdil (dbx) v strojno programsko opremo UEFI. Pred posodobitvijo dbx na UEFI ostane sistem ranljiv ne glede na namestitev posodobitev v OS. Status ranljivosti je mogoče oceniti na teh straneh: Ubuntu, SUSE, RHEL, Debian.

Za reševanje težav, ki nastanejo pri distribuciji preklicanih potrdil, je v prihodnje predvidena uporaba mehanizma SBAT (UEFI Secure Boot Advanced Targeting), katerega podpora je implementirana za GRUB2, shim in fwupd, od naslednjih posodobitev pa bo se uporablja namesto funkcionalnosti, ki jo ponuja paket dbxtool. SBAT je bil razvit skupaj z Microsoftom in vključuje dodajanje novih metapodatkov v izvršljive datoteke komponent UEFI, ki vključujejo podatke o proizvajalcu, izdelku, komponenti in različici. Navedeni metapodatki so potrjeni z digitalnim podpisom in jih je mogoče dodatno vključiti na sezname dovoljenih ali prepovedanih komponent za UEFI Secure Boot. Tako vam bo SBAT omogočil manipulacijo s številkami različic komponent med preklicem brez potrebe po ponovnem generiranju ključev za varni zagon in brez generiranja novih podpisov za jedro, shim, grub2 in fwupd.

Ugotovljene ranljivosti:

  • CVE-2020-14372 – Z uporabo ukaza acpi v GRUB2 lahko privilegirani uporabnik v lokalnem sistemu naloži spremenjene tabele ACPI tako, da postavi SSDT (Sekundarna sistemska opisna tabela) v imenik /boot/efi in spremeni nastavitve v grub.cfg. Čeprav je način Secure Boot aktiven, bo predlagani SSDT izvedlo jedro in ga je mogoče uporabiti za onemogočanje zaščite LockDown, ki blokira obhodne poti varnega zagona UEFI. Posledično lahko napadalec doseže nalaganje svojega modula jedra ali tekoče kode prek mehanizma kexec, ne da bi preveril digitalni podpis.
  • CVE-2020-25632 je dostop do pomnilnika po sprostitvi uporabe pri izvajanju ukaza rmmod, ki se zgodi, ko se poskusi razložiti kateri koli modul, ne da bi se upoštevale z njim povezane odvisnosti. Ranljivost ne izključuje ustvarjanja izkoriščanja, ki bi lahko povzročilo izvajanje kode mimo preverjanja varnega zagona.
  • CVE-2020-25647 Pisanje izven meja v funkciji grub_usb_device_initialize(), ki se kliče pri inicializaciji naprav USB. Težavo je mogoče izkoristiti s priključitvijo posebej pripravljene naprave USB, ki proizvaja parametre, katerih velikost ne ustreza velikosti medpomnilnika, dodeljenega strukturam USB. Napadalec lahko z manipulacijo naprav USB doseže izvedbo kode, ki ni preverjena v varnem zagonu.
  • CVE-2020-27749 je prekoračitev medpomnilnika v funkciji grub_parser_split_cmdline(), ki jo lahko povzroči podajanje spremenljivk, večjih od 2 KB, v ukazni vrstici GRUB1. Ranljivost omogoča izvajanje kode, ki obide varni zagon.
  • CVE-2020-27779 – Ukaz cutmem omogoča napadalcu, da odstrani vrsto naslovov iz pomnilnika, da zaobide varni zagon.
  • CVE-2021-3418 – Spremembe shim_lock so ustvarile dodaten vektor za izkoriščanje lanskoletne ranljivosti CVE-2020-15705. Z namestitvijo potrdila, uporabljenega za podpis GRUB2 v dbx, je GRUB2 dovolil neposredno nalaganje katerega koli jedra brez preverjanja podpisa.
  • CVE-2021-20225 - Možnost pisanja podatkov izven meja pri izvajanju ukazov z zelo velikim številom možnosti.
  • CVE-2021-20233 – Možnost zapisovanja podatkov izven meja zaradi nepravilnega izračuna velikosti medpomnilnika pri uporabi narekovajev. Pri izračunu velikosti je bilo predpostavljeno, da so potrebni trije znaki, da se izognejo posameznemu narekovaju, v resnici pa so bili potrebni štirje.

Vir: opennet.ru

Dodaj komentar