Razkrila so se informacije o 8 ranljivostih v nalagalniku GRUB2, ki omogočajo obhod mehanizma UEFI Secure Boot in zagon neoverjenega kode, na primer vnos zlonamerne programske opreme, ki deluje na ravni nalagalnika ali jedra.
Ponovimo, da večina Linux distribucij za verifikacijo nalaganja v načinu UEFI Secure Boot uporablja majhno plast shim, preverjeno s sodobnim digitalnim podpisom Microsofta. Ta plast preverja GRUB2 s svojim certifikatom, kar omogoča razvijalcem distribucij, da ne preverjajo vsake posodobitve jedra in GRUB pri Microsoftu. Ranljivosti v GRUB2 omogočajo izvajanje lastne kode po uspešni verifikaciji shima, a pred nalaganjem operacijskega sistema, kar omogoča vdor v verigo zaupanja med aktivnim načinom Secure Boot in prevzem popolne kontrole nad nadaljevanjem nalaganja, vključno z nalaganjem drugega operacijskega sistema, modifikacijo komponent operacijskega sistema in obhodom zaščite Lockdown.
Kot pri ranljivosti BootHole iz prejšnjega leta, za blokiranje težave ni dovolj, da bi posodobili nalagalnik, kar pomeni, da lahko napadalec, ne glede na uporabljeni operacijski sistem, za kompromitacijo UEFI Secure Boot uporabi zagon medija s staro ranljivo različico GRUB2, preverjeno s sodobnim digitalnim podpisom. Težavo rešimo le s posodobitvijo seznama preklicanih certifikatov (dbx, UEFI Revocation List), vendar bo v tem primeru izgubljena možnost uporabe starih namestitvenih medijev c Linux.
Na sistemih s programsko opremo, kjer je posodobljen seznam preklicanih certifikatov, bo v načinu UEFI Secure Boot mogoče zagnati le posodobljene različice Linux distribucij. Distribucije bodo morale posodobiti namestitvene programe, nalagalnike, pakete s jedrom, fwupd-firmware in shim-plast, ter zanje ustvariti nove digitalne podpise. Uporabniki bodo morali posodobiti namestitvene slike in druge zagonske medije ter naložiti seznam preklicanih certifikatov (dbx) v UEFI programsko opremo. Dokler se dbx v UEFI ne posodobi, ostaja sistem ranljiv ne glede na namestitev posodobitev v OS. Status odprave ranljivosti lahko ocenite na teh straneh: Ubuntu, SUSE, RHEL, Debian.
Za reševanje težav, ki nastanejo pri širjenju preklicanih potrdil, se v prihodnosti načrtuje vključitev mehanizma SBAT (UEFI Secure Boot Advanced Targeting), čigar podpora je izvedena za GRUB2, shim in fwupd, in se bo od naslednjih posodobitev uporabljala namesto funkcionalnosti, ki jo zagotavlja paket dbxtool. SBAT je bil razvit v sodelovanju z Microsoftom in predvideva dodajanje novih metapodatkov v izvršne datoteke komponent UEFI, ki vključujejo informacije o proizvajalcu, izdelku, komponenti in verziji. Omenjeni metapodatki so digitalno podpisani in jih je mogoče dodatno vključiti v sezname dovoljenih ali prepovedanih komponent za UEFI Secure Boot. Tako bo SBAT omogočil manipulacijo s številkami verzij komponent ob preklicu brez potrebe po ponovni generaciji ključev za Secure Boot in brez oblikovanja novih podpisov za jedro, shim, grub2 in fwupd.
Ugotovljene ranljivosti:
- CVE-2020-14372 – s pomočjo ukaza acpi v GRUB2 lahko privilegiran lokalni uporabnik naloži spremenjene ACPI tabele, tako da v imenik /boot/efi namesti SSDT (Secondary System Description Table) in spremeni nastavitve v grub.cfg. Kljub aktivnemu načinu Secure Boot se bo predlagani SSDT izvajal v jedru in se lahko uporabi za izklop zaščite LockDown, ki blokira poti za obvod UEFI Secure Boot. Posledično lahko napadalec doseže nalaganje svojega modula jedra ali zagon kode s pomočjo mehanizma kexec, brez preverjanja digitalnega podpisa.
- CVE-2020-25632 – dostop do že osvobojene področja pomnilnika (use-after-free) v implementaciji ukaza rmmod, ki se kaže pri poskusu odstranitve kateregakoli modula brez upoštevanja povezanih odvisnosti. Ranljivost ne izključuje ustvarjanja eksploita, ki lahko privede do izvajanja kode mimo verifikacije Secure Boot.
- CVE-2020-25647 – pisanje zunaj meja buffra v funkciji grub_usb_device_initialize(), ki se pokliče pri inicializaciji USB naprav. Težava se lahko izkorišča preko povezave posebej pripravljene USB naprave, ki posreduje parametre, katerih velikost ne ustreza velikosti buffra, dodeljenega za strukture USB. Napadalec lahko doseže izvajanje kode, ki ni verificirana v Secure Boot, preko manipulacij z USB napravami.
- CVE-2020-27749 — переполнение буфера в функции grub_parser_split_cmdline(), которое может быть вызвано указанием в командной строке GRUB2 переменных размером более 1 КБ. Уязвимость позволяет достичь выполнения кода в обход Secure Boot.
- CVE-2020-27779 — команда cutmem дает возможность атакующему удалить диапазон адресов из памяти для обхода Secure Boot.
- CVE-2021-3418 — изменения в shim_lock создали дополнительный вектор для эксплуатации прошлогодней уязвимости CVE-2020-15705. При установке сертификата в dbx, используемого для подписи GRUB2, GRUB2 позволял загрузить любое ядро напрямую без проверки подписи.
- CVE-2021-20225 — возможность записи данных за пределы буфера при запуске команд с очень большим числом опций.
- CVE-2021-20233 — возможность записи данных за границу буфера из-за неверного расчета размера буфера при использовании кавычек. При расчете размера предполагалось, что для экранирования одинарной кавычки требуется три символа, хотя на деле необходимо четыре.
Izvor: opennet.ru
