În driverul care asigură funcționarea sistemului de fișiere NTFS în bootloader-ul GRUB2 a fost identificată o vulnerabilitate (CVE-2023-4692), care permite executarea de cod personalizat la nivelul bootloader-ului prin accesarea unei imagini de sistem de fișiere special formate. Această vulnerabilitate poate fi folosită pentru a ocoli mecanismul de verificare a încărcării UEFI Secure Boot.
Vulnerabilitatea este cauzată de o eroare în codul de analiză a atributului NTFS „$ATTRIBUTE_LIST” (grub-core/fs/ntfs.c), care poate fi folosită pentru a scrie informații controlate de utilizator în zona de memorie dincolo de bufferul alocat. Atunci când se procesează o imagine NTFS special formatată, acest overflow duce la suprascrierea unei părți a memoriei GRUB și, în anumite condiții, la deteriorarea zonei de memorie a firmware-ului UEFI, ceea ce permite, potențial, executarea de cod personalizat la nivelul bootloader-ului sau firmware-ului.
În plus, în driverul NTFS din GRUB2 a fost identificată o altă vulnerabilitate (CVE-2023-4693), care permite citirea conținutului unei zone de memorie arbitrare la analizarea atributului „$DATA” într-o imagine NTFS special formatată. Printre altele, vulnerabilitatea permite extragerea de date confidențiale, stocate în cache în memorie, sau determinarea valorilor variabilelor EFI.
Problemele au fost remediate până acum doar sub formă de patch-uri. Starea remedierii vulnerabilităților în distribuțiile Linux poate fi evaluată pe aceste pagini: Debian, Ubuntu, SUSE, RHEL, Fedora. Pentru a remedia problemele în GRUB2 nu este suficient să actualizezi doar pachetul, este necesar să formezi și noi semnături digitale interne și să actualizezi instalatoarele, bootloader-ele, pachetele cu kernel, firmware-urile fwupd și stratul shim.
În majoritatea distribuțiilor Linux, pentru verificarea încărcării în modul UEFI Secure Boot se folosește un strat mic numit shim, certificat prin semnătura digitală a Microsoft. Acest strat verifică GRUB2 cu propriul certificat, ceea ce permite dezvoltatorilor de distribuții să nu certifice fiecare actualizare a kernel-ului și GRUB la Microsoft. Vulnerabilitățile din GRUB2 permit executarea de cod personalizat după verificarea cu succes a shim-ului, dar înainte de încărcarea sistemului de operare, infiltrându-se în lanțul de încredere în modul Secure Boot activ și obținând control total asupra procesului de încărcare ulterioare, de exemplu, pentru a încărca un alt sistem de operare, a modifica componentele sistemului de operare și a ocoli protecția Lockdown.
Pentru blocarea vulnerabilității fără revocarea semnăturii digitale, distribuțiile pot utiliza mecanismul SBAT (UEFI Secure Boot Advanced Targeting), pentru care suportul este implementat în GRUB2, shim și fwupd în cele mai populare distribuții Linux. SBAT a fost dezvoltat în colaborare cu Microsoft și prevede 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.
SBAT permite blocarea utilizării semnăturii digitale pentru anumite numere de versiune 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), ci se face la nivelul înlocuirii cheii interne pentru generarea semnăturilor și actualizarea GRUB2, shim și altor artefacte de boot furnizate de distribuții. Până la implementarea SBAT, actualizarea listei de certificate revocate (dbx, UEFI Revocation List) era o condiție obligatorie pentru blocarea completă a vulnerabilității, deoarece un atacator, indiferent de sistemul de operare utilizat, putea compromite UEFI Secure Boot folosind bootloader.
Sursa: opennet.ro
