Vulnerabilități greu de remediat în GRUB2 care vă permit să ocoliți UEFI Secure Boot

Au fost dezvăluite informații despre 8 vulnerabilități în bootloader-ul GRUB2, care vă permit să ocoliți mecanismul UEFI Secure Boot și să rulați cod neverificat, de exemplu, să implementați malware care rulează la nivel de bootloader sau kernel.

Să ne reamintim că în majoritatea distribuțiilor Linux, pentru pornirea verificată în modul UEFI Secure Boot, este folosit un mic strat shim, semnat digital de Microsoft. Acest strat verifică GRUB2 cu propriul certificat, ceea ce permite dezvoltatorilor de distribuție să nu aibă fiecare kernel și actualizare GRUB certificat de Microsoft. Vulnerabilitățile din GRUB2 vă permit să realizați execuția codului dvs. în etapa după verificarea cu succes a shim-ului, dar înainte de a încărca sistemul de operare, să vă conectați în lanțul de încredere atunci când modul Secure Boot este activ și să obțineți control deplin asupra procesului de pornire ulterioară, inclusiv încărcarea unui alt sistem de operare, modificarea sistemului de componente ale sistemului de operare și ocolirea protecției Lockdown.

Ca și în cazul vulnerabilității BootHole de anul trecut, actualizarea bootloader-ului nu este suficientă pentru a bloca problema, deoarece un atacator, indiferent de sistemul de operare utilizat, poate folosi medii de pornire cu o versiune veche, semnată digital, vulnerabilă a GRUB2 pentru a compromite UEFI Secure Boot. Problema poate fi rezolvată doar prin actualizarea listei de revocare a certificatelor (dbx, UEFI Revocation List), dar în acest caz se va pierde capacitatea de a utiliza medii vechi de instalare cu Linux.

Pe sistemele cu firmware care are o listă de revocare a certificatelor actualizată, numai versiunile actualizate ale distribuțiilor Linux pot fi încărcate în modul UEFI Secure Boot. Distribuțiile vor trebui să actualizeze instalatorii, încărcătoarele, pachetele de kernel, firmware-ul fwupd și stratul shim, generând noi semnături digitale pentru ele. Utilizatorilor li se va cere să actualizeze imaginile de instalare și alte medii de pornire, precum și să încarce o listă de revocare a certificatelor (dbx) în firmware-ul UEFI. Înainte de a actualiza dbx la UEFI, sistemul rămâne vulnerabil indiferent de instalarea actualizărilor în sistemul de operare. Starea vulnerabilităților poate fi evaluată pe aceste pagini: Ubuntu, SUSE, RHEL, Debian.

Pentru a rezolva problemele care apar la distribuirea certificatelor revocate, pe viitor este planificată utilizarea mecanismului SBAT (UEFI Secure Boot Advanced Targeting), suport pentru care a fost implementat pentru GRUB2, shim și fwupd, iar începând cu următoarele actualizări vor fi folosit în locul funcționalității oferite de pachetul dbxtool. SBAT a fost dezvoltat împreună cu Microsoft și implică adăugarea de noi metadate la fișierele executabile ale componentelor UEFI, care includ informații despre producător, produs, componentă și versiune. Metadatele specificate sunt certificate cu o semnătură digitală și pot fi incluse în plus în listele de componente permise sau interzise pentru UEFI Secure Boot. Astfel, SBAT vă va permite să manipulați numerele versiunii componentelor în timpul revocării fără a fi nevoie să regenerați cheile pentru Secure Boot și fără a genera noi semnături pentru kernel, shim, grub2 și fwupd.

Vulnerabilitati identificate:

  • CVE-2020-14372 – Folosind comanda acpi din GRUB2, un utilizator privilegiat din sistemul local poate încărca tabele ACPI modificate prin plasarea unui SSDT (Secundary System Description Table) în directorul /boot/efi și modificarea setărilor în grub.cfg. Deși modul Secure Boot este activ, SSDT-ul propus va fi executat de kernel și poate fi folosit pentru a dezactiva protecția LockDown care blochează căile de ocolire UEFI Secure Boot. Ca rezultat, un atacator poate realiza încărcarea modulului său de kernel sau rularea codului prin mecanismul kexec, fără a verifica semnătura digitală.
  • CVE-2020-25632 este un acces la memorie după utilizare liberă în implementarea comenzii rmmod, care apare atunci când se încearcă descărcarea oricărui modul fără a lua în considerare dependențele asociate acestuia. Vulnerabilitatea nu exclude crearea unui exploit care ar putea duce la executarea codului ocolind verificarea Secure Boot.
  • CVE-2020-25647 O scriere în afara limitelor în funcția grub_usb_device_initialize() numită la inițializarea dispozitivelor USB. Problema poate fi exploatată prin conectarea unui dispozitiv USB special pregătit care produce parametri a căror dimensiune nu corespunde cu dimensiunea buffer-ului alocat structurilor USB. Un atacator poate realiza execuția unui cod care nu este verificat în Secure Boot prin manipularea dispozitivelor USB.
  • CVE-2020-27749 este o depășire a memoriei tampon în funcția grub_parser_split_cmdline(), care poate fi cauzată de specificarea variabilelor mai mari de 2 KB pe linia de comandă GRUB1. Vulnerabilitatea permite execuției codului să ocolească Secure Boot.
  • CVE-2020-27779 – Comanda cutmem permite unui atacator să elimine o serie de adrese din memorie pentru a ocoli Secure Boot.
  • CVE-2021-3418 - Modificările aduse shim_lock au creat un vector suplimentar pentru a exploata vulnerabilitatea CVE-2020-15705 de anul trecut. Prin instalarea certificatului folosit pentru a semna GRUB2 în dbx, GRUB2 a permis încărcarea directă a oricărui nucleu fără a verifica semnătura.
  • CVE-2021-20225 - Posibilitatea de a scrie date în afara limitelor la rularea comenzilor cu un număr foarte mare de opțiuni.
  • CVE-2021-20233 - Posibilitatea de a scrie date în afara limitelor din cauza calculului incorect al dimensiunii tamponului atunci când se utilizează ghilimele. La calcularea dimensiunii, s-a presupus că erau necesare trei caractere pentru a scăpa de un singur ghilimeleu, când de fapt erau necesare patru.

Sursa: opennet.ru

Adauga un comentariu