Në shtresën Shim, e cila përdoret në shumicën e distribucioneve Linux për ngarkimin e verifikuar në modalitetin UEFI Secure Boot, është identifikuar një vulnerabilitet (CVE-2023-40547) që mund të çojë në ekzekutimin e kodit në distancë dhe anashkalimin e mekanizmit të ngarkimit të verifikuar UEFI Secure Boot. Një sulmues që kontrollon serverin HTTP, të cilit i qaset Shim, mund të kthejë një përgjigje të formuar në mënyrë speciale që çon në një shkresë të kontrolluar jashtë kufirit të bllokut për të organizuar ekzekutimin e kodit në një fazë të hershme të ngarkimit.
Vulnerabiliteti shkaktohet nga një gabim në kodin e ngarkimit të skedarëve përmes HTTP, i cili shfaqet gjatë përpunimit të përgjigjeve të papërshtatshme që kthehen nga serveri HTTP, të cilit i qaset shim. Modaliteti HTTPBoot në Shim është mbështetur që nga viti 2016 dhe lejon ngarkimin përmes rrjetit, duke përdorur protokollin HTTP për të nxjerrë skedarin me ngarkuesin, i cili thirret në fazën e ardhshme. Shim, gjatë ngarkimit të skedarëve përmes HTTP, alokuan një bllok për të dhënat e pranuara, duke marrë parasysh jo madhësinë reale të të dhënave, por madhësinë e cila është specifikuar në headerin HTTP 'Content-Length'. Prandaj, duke kthyer një vlerë më të vogël në headerin Content-Length, mund të arrihet të shkruhet fundi i kërkesës në memorie përtej kufirit të bllokut.
Shim është i verifikuar me një nënshkrim digjital nga Microsoft dhe verifikon GRUB2 me një certifikatë të vetë, e cila u lejon zhvilluesve të distribucioneve të mos e nënshkruajnë çdo përditësim të kernelit dhe GRUB te Microsoft. Vulnerabiliteti në Shim ofron mundësinë e ndërhyrjes në zinxhirin e besimit gjatë funksionimit të Secure Boot dhe marrjen e kontrollit të plotë mbi procesin e ngarkimit, për shembull, për të ngarkuar një OS tjetër, për të modifikuar komponentët e sistemit operativ dhe për të anashkaluar mbrojtjen Lockdown.
Vulnerabiliteti është eliminuar në versionin Shim 15.8, por për të bllokuar plotësisht sulmin përmes Shim kërkohet nënshkrimi i versionit të ri nga Microsoft dhe implementimi i tij në distribucionet. Statusi i rregullimit të vulnerabilitetit në distribucionet mund të vlerësohet në këto faqe: Debian, Ubuntu, SUSE, RHEL, Fedora. Problemi qëndron në faktin se pa tërheqjen e nënshkrimit për versionin e vjetër, rregullimi është i pafrytshëm, pasi sulmuesi mund të përdorë një media ngarkimi me versionin e cenueshëm Shim për të kompromituar UEFI Secure Boot. Por tërheqja e nënshkrimit do të çonte në pamundësinë e ngarkimit të verifikuar të distribucioneve që vazhdojnë të përdorin versionin e vjetër të Shim.
Për të bllokuar vulnerabilitetin pa tërheqjen e nënshkrimit dixhital, shpërndarjet mund të përdorin mekanizmin SBAT (UEFI Secure Boot Advanced Targeting), mbështetje e të cilit është zbatuar për GRUB2, shim dhe fwupd në shumicën e shpërndarjeve të njohura Linux. SBAT-u është zhvilluar në bashkëpunim me Microsoft dhe nënkupton shtimin në skedarët ekzekutivë të komponentëve UEFI të metadatat shtesë, të cilat përfshijnë informacionin mbi prodhuesin, produktin, komponentin dhe versionin. Metaet e përmendura nënshkruhen me një nënshkrim dixhital dhe mund të përfshihen veçmas në listat e lejuara ose të ndaluara të komponentëve për UEFI Secure Boot.
SBAT lejon bllokimin e përdorimit të nënshkrimit digjital për numra të veçantë versionesh të komponentëve pa pasur nevojë për tërheqjen e çelësave për Secure Boot. Bllokimi i vulnerabiliteteve përmes SBAT nuk kërkon përdorimin e listës së nënshkruar të certifikatave të tërhequra UEFI (dbx), por bëhet në nivelin e zëvendësimit të çelësit të brendshëm për formimin e nënshkrimeve dhe përditësimin e GRUB2, shim dhe artefakteve të tjera të ngarkesës të ofruara nga distribucioni.
Përveç vulnerabilitetit të trajtuar në Shim 15.8, janë rregulluar gjithashtu disa çështje më pak të rrezikshme, të shfrytëzuara lokal:
- CVE-2023-40548 - mbushje e numrave të plotë në funksionin verify_sbat_section, që çon në mbushjen e bllokut në sistemet 32-bit.
- CVE-2023-40546 - leximi nga një zonë memorje jashtë bllokut gjatë shtypjes së mesazheve të gabimit përmes funksionit LogError().
- CVE-2023-40549 - leximi nga një zonë memorje jashtë bllokut gjatë përpunimit në funksionin verify_buffer_authenticode() të një skedari të formatuar në mënyrë speciale në formatin PE.
- CVE-2023-40550 - leximi nga një zonë memorje jashtë bllokut në funksionin verify_buffer_sbat().
- CVE-2023-40551 - leximi nga një zonë memorje jashtë bllokut gjatë analizimit të skedarëve në formatin MZ.
Burimi: opennet.ru
