U GRUB2 učitavaču ispravljeno je 7 ranjivosti koje omogućuju zaobilaženje mehanizma UEFI Secure Boot i pokretanje neprovjerenog koda, na primjer, implementaciju zlonamjernog softvera koji radi na razini učitavača ili jezgre. Dodatno se navodi jedna ranjivost u shim posredniku, koja također omogućuje zaobilaženje UEFI Secure Boot. Skupina ranjivosti dobila je kodno ime Boothole 3, prema sličnim problemima koje su ranije otkriveni u učitavaču.
Kako bi ispravili probleme u GRUB2 i shim, distribucije će moći koristiti mehanizam SBAT (UEFI Secure Boot Advanced Targeting), čija je podrška implementirana za GRUB2, shim i fwupd. SBAT je razvijen u suradnji s Microsoftom i podrazumijeva dodavanje dodatnih metapodataka u izvršne datoteke UEFI komponenti, koji uključuju informacije o proizvođaču, proizvodu, komponenti i verziji. Spomenuti metapodaci su digitalno potpisani i mogu se odvojeno uključiti na liste odobrenih ili zabranjenih komponenti za UEFI Secure Boot.
U većini Linux distribucija za verifikovano podizanje sistema u režimu UEFI Secure Boot koristi se mali shim sloj, digitalno potpisan od strane Microsoft-a. Ovaj sloj verifikuje GRUB2 vlastitim sertifikatom, što omogućava developerima distribucija da ne potpisuju svaku nadogradnju kernela i GRUB-a u Microsoft-u. Ranjivosti u GRUB2 omogućavaju izvršavanje vlastitog koda u fazi nakon uspešne verifikacije shima, ali pre pokretanja operativnog sistema, upadajući u lanac poverenja dok je aktivan režim Secure Boot i stičući potpunu kontrolu nad daljim procesom podizanja sustava, uključujući pokretanje druge OS, modifikaciju komponenti operativnog sistema i zaobilaženje Lockdown zaštite.
Kako bi ispravili probleme u učitavaču, distribucije će morati formirati nove unutarnje digitalne potpise i ažurirati instalatore, učitavače, pakete jezgre, fwupd firmware i shim posrednika. Prije implementacije SBAT-a, ažuriranje popisa opozvanih certifikata (dbx, UEFI Revocation List) bilo je obavezno kako bi se potpuno blokirala ranjivost, jer je napadač, bez obzira na korišteni operativni sustav, mogao iskoristiti uređaj za pokretanje sa starom ranjivom verzijom GRUB2, koja je digitalno potpisana.
Umjesto opoziva potpisa, SBAT omogućuje blokiranje njegove upotrebe za određene verzije komponenti bez potrebe za opozivom ključeva za Secure Boot. Blokiranje ranjivosti putem SBAT-a ne zahtijeva korištenje popisa opozvanih certifikata UEFI (dbx), već se vrši na razini zamjene unutarnjeg ključa za generiranje potpisa i ažuriranje GRUB2, shim i drugih učitavačkih artefakata koje isporučuju distribucije. U ovom trenutku, podrška za SBAT već je dodana u većinu popularnih Linux distribucija.
Otkrivene ranjivosti:
- CVE-2021-3696, CVE-2021-3695 - prelivanje bafera u hrpi prilikom obrade posebno oblikovanih PNG slika, što se teoretski može iskoristiti za izvršavanje napadačkog koda iobilaženje UEFI Secure Boot-a. Napominje se da je problem teško iskoristiv, jer za stvaranje funkcionalnog eksploita treba uzeti u obzir veliki broj faktora i imati informacije o rasporedu memorije.
- CVE-2021-3697 - prelivanje kroz donju granicu bafera (buffer underflow) u kodu za obradu JPEG slika. Eksploatacija problema zahtijeva prikupljanje informacija o rasporedu memorije i otprilike je na istoj razini složenosti kao i problem s PNG-om (CVSS 7.5).
- CVE-2022-28733 - cijelobrojno prelivanje u funkciji grub_net_recv_ip4_packets(), što omogućava utjecaj na parametar rsm->total_len putem slanja posebno oblikovanog IP paketa. Problem je označen kao najopasnija od predstavljenih ranjivosti (CVSS 8.1). U slučaju uspješne eksploatacije, ranjivost omogućava pisanje podataka izvan granice bafera putem dodjeljivanja načini manjih veličina memorije.
- CVE-2022-28734 - jedno-bajtno prelivanje bafera prilikom obrade razdvojenih HTTP zaglavlja. Problem može dovesti do oštećenja metapodataka GRUB2 (zapisa nultog bajta odmah nakon kraja bafera) prilikom parsiranja posebno oblikovanih HTTP zahtjeva.
- CVE-2022-28735 - problem u verifikatoru shim_lock, koji omogućava učitavanje datoteka koje nisu povezane s jezgrom. Ranjivost se može iskoristiti za učitavanje u režimu UEFI Secure Boot neovlaštenih i digitalno nepodpisanih modula jezgre ili neprovjerenog koda.
- CVE-2022-28736 - pristup već oslobođenoj memorijskoj oblasti u funkciji grub_cmd_chainloader() ponovnim pokretanjem chainloader komande, koja se koristi za učitavanje operativnih sustava koji nisu podržani u GRUB2. Eksploatacija može dovesti do izvršavanja napadačkog koda, ako napadač može odrediti karakteristike raspodjele memorije u GRUB2.
- CVE-2022-28737 - prelivanje bafera u sloju shim, koje se događa u funkciji handle_image() prilikom učitavanja i izvršavanja posebno oblikovanih EFI slika.
Izvor: opennet.ru
