Fjern sårbarhed i Shim-laget, der muliggør omgåelse af UEFI Secure Boot

I Shim-laget, der bruges i de fleste Linux-distributioner til verifikation af opstart i UEFI Secure Boot-tilstand, er der fundet en sårbarhed (CVE-2023-40547), som kan føre til fjernudførelse af kode og omgåelse af verifikationsmekanismen for UEFI Secure Boot. En angriber, der kontrollerer en HTTP-server, som Shim henvender sig til, kan returnere et specialdesignet svar, der fører til kontrolleret skrivning uden for bufferområdet for at sikre udførelse af kode i den tidlige opstartsfase.

Sårbarheden skyldes en fejl i koden til indlæsning af filer via HTTP, som viser sig ved behandlingen af ukorrekte svar, der returneres af HTTP-serveren, som shim henvender sig til. HTTPBoot-tilstanden i Shim har været understøttet siden 2016 og muliggør netværksopstart ved at bruge HTTP-protokollen til at hente en fil med bootloaderen, der kaldes i det næste trin. Shim afsætter et buffer til de modtagne data, når der indlæses filer via HTTP, hvilket tager højde for det indikerede størrelse i HTTP-headeren 'Content-Lenght' snarere end den faktiske datastørrelse. Følgelig kan man ved at returnere en lavere værdi i 'Content-Lenght'-headeren opnå skrivning af forespørgsels-tampen i hukommelsen uden for bufferen.

Shim er digitalt underskrevet af Microsoft og verificerer GRUB2 med sit eget certifikat, hvilket gør det muligt for distributionudviklere at undgå at skulle underskrive hver opdatering af kernen og GRUB hos Microsoft. Sårbarheden i Shim muliggør indblanding i tillidskeden under aktiv Secure Boot-tilstand og giver fuld kontrol over den videre opstartsproces, eksempelvis til opstart af et andet OS, modificering af operativsystemkomponenter og omgåelse af Lockdown-beskyttelsen.

Sårbarheden er udbedret i Shim version 15.8, men for fuldstændigt at blokere angrebet via Shim kræves en godkendelse af den nye version hos Microsoft og implementering af denne i distributionerne. Status for udbedring af sårbarheden i distributionerne kan vurderes på følgende sider: Debian, Ubuntu, SUSE, RHEL, Fedora. Problemet ligger i, at uden tilbagetrækning af underskriften til den gamle version, er rettelsen meningsløs, da en angriber kan bruge et bootmedie med den sårbare version af Shim til at kompromittere UEFI Secure Boot. Men en tilbagetrækning af underskriften vil gøre det umuligt at verificere opstarten af distributioner, der fortsat bruger den gamle version af Shim.

For at blokere sårbarheden uden at tilbagekalde den digitale signatur kan distributionerne anvende mekanismen SBAT (UEFI Secure Boot Advanced Targeting), som understøttes af GRUB2, shim og fwupd i de fleste populære Linux-distributioner. SBAT er udviklet i samarbejde med Microsoft og indebærer tilføjelse af metadata til UEFI-komponenternes eksekverbare filer, som inkluderer oplysninger om producent, produkt, komponent og version. De nævnte metadata signeres digitalt og kan separat inkluderes i lister over tilladte eller forbudte komponenter til UEFI Secure Boot.

SBAT gør det muligt at blokere brugen af digitale signaturer for specifikke versionsnumre af komponenter uden at skulle tilbagekalde nøglerne til Secure Boot. Blokering af sårbarheder via SBAT kræver ikke brug af UEFI-listen over tilbagekaldte certifikater (dbx), men udføres på niveauet for at erstatte den interne nøgle til dannelse af signaturer og opdatering af GRUB2, shim og andre boot-artefakter leveret med distributioner.

Udover den nævnte sårbarhed i Shim 15.8 er flere mindre farlige problemer også blevet udbedret, som kan udnyttes lokalt:

  • CVE-2023-40548 — heltals-overløb i funktionen verify_sbat_section, der fører til buffer-overløb på 32-bit systemer.
  • CVE-2023-40546 — læsning fra hukommelsesområde uden for bufferet ved udskrivning af fejlmeddelelser gennem funktionen LogError().
  • CVE-2023-40549 — læsning fra hukommelsesområde uden for bufferet ved behandling af en specielt formateret PE-fil i funktionen verify_buffer_authenticode().
  • CVE-2023-40550 — læsning fra hukommelsesområde uden for bufferet i funktionen verify_buffer_sbat().
  • CVE-2023-40551 — læsning fra hukommelsesområde uden for bufferet ved parsing af filer i MZ-format.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster