Im Bootloader GRUB2 wurden 7 Sicherheitsanfälligkeiten behoben, die eine Umgehung des UEFI Secure Boot-Mechanismus ermöglichen und das Ausführen von nicht verifiziertem Code ermöglichen, wie zum Beispiel die Einschleusung von Malware, die auf der Ebene des Bootloaders oder des Kernels arbeitet. Zusätzlich wird eine Sicherheitsanfälligkeit im shim-Layer erwähnt, die ebenfalls eine Umgehung von UEFI Secure Boot ermöglicht. Die Gruppe von Sicherheitsanfälligkeiten erhielt den Codenamen Boothole 3, analog zu ähnlichen Problemen, die zuvor im Bootloader identifiziert wurden.
Um die Probleme in GRUB2 und shim zu beheben, können die Distributionen den SBAT-Mechanismus (UEFI Secure Boot Advanced Targeting) verwenden, dessen Unterstützung für GRUB2, shim und fwupd implementiert wurde. SBAT wurde gemeinsam mit Microsoft entwickelt und sieht vor, dass zusätzliche Metadaten zu den ausführbaren Dateien der UEFI-Komponenten hinzugefügt werden, die Informationen über Hersteller, Produkt, Komponente und Version enthalten. Die angegebenen Metadaten werden mit einer digitalen Signatur signiert und können separat in Listen zugelassener oder verbotener UEFI Secure Boot-Komponenten aufgenommen werden.
In den meisten Linux-Distributionen wird für die verifizierte Bootfähigkeit im UEFI Secure Boot-Modus eine kleine shim-Schicht verwendet, die durch eine digitale Signatur von Microsoft signiert ist. Diese Schicht verifiziert GRUB2 mit ihrem eigenen Zertifikat, was es den Entwicklern der Distributionen ermöglicht, nicht jedes Kernel- und GRUB-Update bei Microsoft zu signieren. Schwachstellen in GRUB2 ermöglichen die Ausführung eigenen Codes nach erfolgreicher Verifizierung von shim, jedoch vor dem Laden des Betriebssystems, sodass sie sich in die Vertrauenskette während des aktiven Secure Boot-Modus einschleichen und die vollständige Kontrolle über den weiteren Bootvorgang erlangen können, einschließlich des Ladens eines anderen Betriebssystems, der Modifikation von Betriebssystemkomponenten und der Umgehung des Lockdown-Schutzes.
Um die Probleme im Bootloader zu beheben, müssen die Distributionen neue interne digitale Signaturen erstellen und Installer, Bootloader, Kernel-Pakete, fwupd-Firmware und den shim-Layer aktualisieren. Vor der Einführung von SBAT war die Aktualisierung der Liste der widerrufenen Zertifikate (dbx, UEFI Revocation List) eine Voraussetzung für die vollständige Blockierung der Sicherheitsanfälligkeit, da ein Angreifer, unabhängig vom verwendeten Betriebssystem, ein Bootmedium mit einer alten, anfälligen Version von GRUB2, die mit einer digitalen Signatur signiert war, zur Kompromittierung von UEFI Secure Boot verwenden konnte.
Anstelle des Widerrufs der Signatur ermöglicht SBAT, deren Verwendung für einzelne Versionsnummern der Komponenten zu blockieren, ohne die Schlüssel für Secure Boot widerrufen zu müssen. Die Blockierung von Sicherheitsanfälligkeiten über SBAT erfordert nicht die Verwendung der Liste der widerrufenen UEFI-Zertifikate (dbx), sondern erfolgt auf der Ebene des Austauschs des internen Schlüssels zur Erstellung von Signaturen und der Aktualisierung von GRUB2, shim und anderen Boot-Artefakten, die von den Distributionen bereitgestellt werden. Derzeit wurde die Unterstützung für SBAT bereits in den meisten beliebten Linux-Distributionen hinzugefügt.
Festgestellte Schwachstellen:
- CVE-2021-3696, CVE-2021-3695 - Bufferüberlauf im Heap bei der Verarbeitung von speziell gestalteten PNG-Bildern, die theoretisch für die Ausführung von Angreifercode und das Umgehen des UEFI Secure Boot verwendet werden können. Es wird darauf hingewiesen, dass das Problem schwer ausnutzen lässt, da für die Erstellung eines funktionsfähigen Exploits viele Faktoren und Informationen über die Speicheranordnung erforderlich sind.
- CVE-2021-3697 - Bufferunterlauf im JPEG-Bildverarbeitungscode. Die Ausnutzung des Problems erfordert Informationen über die Speicheranordnung und befindet sich in etwa auf dem gleichen Schwierigkeitsgrad wie das Problem mit PNG (CVSS 7.5).
- CVE-2022-28733 - Ganzzahlüberlauf in der Funktion grub_net_recv_ip4_packets(), der es ermöglicht, den Parameter rsm->total_len durch das Senden eines speziell gestalteten IP-Pakets zu beeinflussen. Das Problem gilt als die gefährlichste der vorgestellten Schwachstellen (CVSS 8.1). Bei erfolgreicher Ausnutzung ermöglicht die Schwachstelle das Schreiben von Daten außerhalb des Puffers durch die Zuweisung eines nachweislich kleineren Speicherbereichs.
- CVE-2022-28734 - Ein Byte Bufferüberlauf bei der Verarbeitung von getrennten HTTP-Headern. Das Problem kann zu Beschädigungen von GRUB2-Metadaten (Schreiben eines Null-Bytes direkt nach dem Ende des Puffers) bei der Analyse speziell gestalteter HTTP-Anfragen führen.
- CVE-2022-28735 - Problem im Verifikator shim_lock, das die Installation von Dateien ermöglicht, die nicht Teil des Kernels sind. Die Schwachstelle kann genutzt werden, um un signierte Kernelmodule oder unüberprüften Code im UEFI Secure Boot-Modus zu laden.
- CVE-2022-28736 - Zugriff auf bereits freigegebenen Speicherbereich in der Funktion grub_cmd_chainloader() durch den wiederholten Aufruf des Chainloader-Befehls, der zum Laden von Betriebssystemen verwendet wird, die in GRUB2 nicht unterstützt werden. Die Ausnutzung kann zur Ausführung von Angreifercode führen, wenn ein Angreifer die Besonderheiten der Speicheranordnung in GRUB2 bestimmen kann.
- CVE-2022-28737 - Bufferüberlauf in der shim-Schicht, der in der Funktion handle_image() beim Laden und Ausführen speziell gestalteter EFI-Images auftritt.
Quelle: opennet.ru
