În loaderul GRUB2 au fost remediate 7 vulnerabilități care permit ocolirea mecanismului UEFI Secure Boot și executarea de cod necertificat, de exemplu, posibilitatea de a introduce malware care rulează la nivel de loader sau kernel. De asemenea, se semnalează o vulnerabilitate în stratul shim, care permite, de asemenea, ocolirea UEFI Secure Boot. Grupul de vulnerabilități a primit numele de cod Boothole 3, similar cu problemele anterioare semnalate în loader.
Pentru a remedia problemele din GRUB2 și shim, distribuitorii vor putea utiliza mecanismul SBAT (UEFI Secure Boot Advanced Targeting), a cărui suport este implementat pentru GRUB2, shim și fwupd. SBAT a fost dezvoltat în colaborare cu Microsoft și presupune adăugarea de metadate suplimentare în fișierele executabile ale componentelor UEFI, care includ informații despre producător, produs, componentă și versiune. Aceste metadate sunt semnate digital și pot fi incluse separat în listele de componente permise sau interzise pentru UEFI Secure Boot.
În majoritatea distribuțiilor Linux, pentru bootarea verificată în modul UEFI Secure Boot se folosește un mic strat shim, semnat digital de Microsoft. Acest strat verifică GRUB2 cu propriul certificat, permițând distribuitorilor să nu semneze fiecare actualizare de kernel și GRUB în Microsoft. Vulnerabilitățile din GRUB2 permit executarea codului propriu în etapa de după verificarea reușită a shim, dar înainte de încărcarea sistemului de operare, intervenind în lanțul de încredere în modul Secure Boot activ și obținând control total asupra procesului de bootare ulterioară, inclusiv pentru bootarea unei alte OS, modificarea componentelor sistemului de operare și ocolirea protecției Lockdown.
Pentru a remedia problemele din loader, distribuitorii vor trebui să formeze noi semnături digitale interne și să actualizeze instalatoarele, bootloaderele, pachetele de kernel, firmware-urile fwupd și stratul shim. Până la implementarea SBAT, actualizarea listei certificatelor revocate (dbx, UEFI Revocation List) a fost o condiție obligatorie pentru blocarea completă a vulnerabilității, deoarece un atacator, indiferent de sistemul de operare utilizat, putea folosi un mediu de boot cu o versiune veche vulnerabilă de GRUB2, semnat digital.
În locul revocării, semnăturile SBAT permit blocarea utilizării acestora pentru anumite versiuni ale componentelor, fără a fi necesară revocarea cheilor pentru Secure Boot. Blocarea vulnerabilităților prin SBAT nu necesită utilizarea listei de certificate revocate UEFI (dbx) și se realizează la nivelul înlocuirii cheii interne pentru generarea semnăturilor și actualizarea GRUB2, shim și a altor artefacte de boot furnizate de distribuții. În prezent, suportul pentru SBAT a fost deja adăugat în majoritatea distribuțiilor populare Linux.
Vulnerabilitățile identificate:
- CVE-2021-3696, CVE-2021-3695 - overflow de buffer în heap la procesarea imaginilor PNG special concepute, care pot fi teoretic utilizate pentru executarea codului atacatorului și ocolirea UEFI Secure Boot. Se menționează că problema este greu de exploatat, deoarece crearea unui exploit funcțional necesită cunoașterea unui număr mare de factori și informații despre aranjamentul memoriei.
- CVE-2021-3697 - overflow prin sublimita buffer-ului (buffer underflow) în codul de procesare a imaginilor JPEG. Exploatarea problemei necesită obținerea de informații despre aranjarea memoriei și este la un nivel similar de complexitate cu problema legată de PNG (CVSS 7.5).
- CVE-2022-28733 - overflow de număr întreg în funcția grub_net_recv_ip4_packets(), permițând influențarea parametrului rsm->total_len prin trimiterea unui pachet IP special conceput. Problema este considerată a fi cea mai periculoasă dintre vulnerabilitățile prezentate (CVSS 8.1). În cazul exploatării cu succes, vulnerabilitatea permite scrierea de date dincolo de limita buffer-ului prin alocarea unei dimensiuni de memorie intenționat mai mici.
- CVE-2022-28734 - overflow de un byte a buffer-ului la procesarea antetelor HTTP segmentate. Problema poate conduce la coruperea metadatelor GRUB2 (scrierea unui byte nul imediat după sfârșitul buffer-ului) în timpul analizei cererilor HTTP special concepute.
- CVE-2022-28735 - problemă în verificatorul shim_lock, permițând încărcarea fișierelor care nu sunt legate de kernel. Vulnerabilitatea poate fi utilizată pentru a încărca, în modul UEFI Secure Boot, module kernel fără semnătură digitală validată sau cod nesupravegheat.
- CVE-2022-28736 - accesarea unei zone de memorie deja eliberate în funcția grub_cmd_chainloader() prin reluarea comenzii chainloader, utilizată pentru a încărca sisteme de operare care nu sunt suportate în GRUB2. Exploatarea poate duce la executarea codului atacatorului, dacă un atacator reușește să determine caracteristicile distribuției memoriei în GRUB2
- CVE-2022-28737 - depășirea buffer-ului în stratul shim, care apare în funcția handle_image() atunci când se încarcă și se execută imagini EFI special concepute.
Sursa: opennet.ro
