Im GRUB2-Bootloader 8 Schwachstellen. Die gefĂ€hrlichste (), die den Codenamen BootHole trĂ€gt, den UEFI Secure Boot-Mechanismus zu umgehen und nicht verifiziertes Malware zu installieren. Ein Merkmal dieser Schwachstelle ist, dass es nicht ausreicht, GRUB2 zu aktualisieren, da ein Angreifer ein bootfĂ€higes Medium mit einer alten, anfĂ€lligen Version, die mit einer digitalen Signatur signiert ist, verwenden kann. Der Angreifer kann den Verifizierungsprozess nicht nur von Linux, sondern auch von anderen Betriebssystemen, einschlieĂlich .
Das Problem wird nur durch ein Update im System (dbx, UEFI Revocation List) behoben, aber in diesem Fall geht die Möglichkeit verloren, alte Installationsmedien mit Linux zu verwenden. Einige Hardwarehersteller haben bereits die aktualisierte Liste der widerrufenen Zertifikate in ihre Firmware integriert, auf solchen Systemen kann im UEFI Secure Boot-Modus nur mit aktualisierten Versionen der Linux-Distributionen gebootet werden.
Um die Schwachstelle in den Distributionen zu beheben, mĂŒssen auch die Installer, Bootloader, Kernel-Pakete, fwupd-Firmware und die shim-Schicht aktualisiert werden, wobei neue digitale Signaturen fĂŒr sie generiert werden mĂŒssen. Benutzer mĂŒssen die Installationsabbilder und andere bootfĂ€hige Medien aktualisieren sowie die Liste der widerrufenen Zertifikate (dbx) in die UEFI-Firmware laden. Bis die dbx in der UEFI aktualisiert wird, bleibt das System verwundbar, unabhĂ€ngig von den installierten Updates im Betriebssystem.
Schwachstelle BufferĂŒberlauf, der ausgenutzt werden kann, um beliebigen Code wĂ€hrend des Bootvorgangs auszufĂŒhren.
Die Schwachstelle tritt beim Parsen des Inhalts der grub.cfg-Konfigurationsdatei auf, die sich normalerweise im ESP (EFI System Partition) befindet und von einem Angreifer, der Administratorrechte hat, bearbeitet werden kann, ohne die IntegritĂ€t der signierten Executables von shim und GRUB2 zu verletzen. Aufgrund von einem Fehler im Konfigurationsparser gab der Fehlerbehandlungsmechanismus YY_FATAL_ERROR lediglich eine Warnung aus, ohne das Programm zu beenden. Das Risiko dieser Schwachstelle wird durch die Notwendigkeit privilegierten Zugriffs auf das System gemildert, trotzdem könnte das Problem fĂŒr die Implementierung verborgener Rootkits relevant werden, wenn physischer Zugang zu der Hardware besteht (bei der Möglichkeit, von einem eigenen Medium zu booten).
In den meisten Linux-Distributionen wird fĂŒr den verifizierten Start eine kleine , die durch eine digitale Signatur von Microsoft zertifiziert ist. Diese Schicht verifiziert GRUB2 mit ihrem eigenen Zertifikat, was es den Entwicklern der Distributionen ermöglicht, nicht jedes Update des Kernels und GRUB bei Microsoft zertifizieren zu mĂŒssen. Die Schwachstelle ermöglicht es, durch die Ănderung des Inhalts von grub.cfg eigenen Code nach erfolgreicher Verifizierung von Shim auszufĂŒhren, jedoch vor dem Laden des Betriebssystems, sich in die Vertrauenskette im aktiven Secure Boot-Modus einzuschleusen und vollstĂ€ndige Kontrolle ĂŒber den weiteren Boot-Prozess zu erhalten, einschlieĂlich des Ladens eines anderen OS, der Modifizierung von Betriebssystemkomponenten und dem Umgehen von SchutzmaĂnahmen. .
Andere Schwachstellen in GRUB2:
- â PufferĂŒberlauf aufgrund fehlender GröĂenprĂŒfung des zugewiesenen Speicherbereichs in grub_malloc;
- â GanzzahlĂŒberlauf in grub_squash_read_symlink, der zu einer DatenĂŒbertragung auĂerhalb des zugewiesenen Puffers fĂŒhren kann;
- â GanzzahlĂŒberlauf in read_section_from_string, der zu einer DatenĂŒbertragung auĂerhalb des zugewiesenen Puffers fĂŒhren kann;
- â GanzzahlĂŒberlauf in grub_ext2_read_link, der zu einer DatenĂŒbertragung auĂerhalb des zugewiesenen Puffers fĂŒhren kann;
- â ermöglicht das Laden nicht signierter Kerne bei direktem Booten im Secure Boot-Modus ohne Shim-Schicht;
- â Zugriff auf bereits freigegebenen Speicherbereich (use-after-free) wĂ€hrend der Laufzeit bei FunktionsĂŒberschreibung;
- â GanzzahlĂŒberlauf im Handler fĂŒr die GröĂe initrd.
Paketupdates mit Korrekturen wurden veröffentlicht fĂŒr , , und . FĂŒr GRUB2 ein Patchsatz.
Quelle: opennet.ru
