Lennart Poettering hat einen Vorschlag zur Modernisierung des Bootprozesses von Linux-Distributionen veröffentlicht, der darauf abzielt, bestehende Probleme zu lösen und die Organisation eines vollwertigen, verifizierten Bootvorgangs zu vereinfachen, der die IntegritĂ€t des Kernels und der grundlegenden Systemumgebung bestĂ€tigt. Die fĂŒr die Implementierung der neuen Architektur notwendigen Ănderungen sind bereits im Code von systemd enthalten und betreffen Komponenten wie systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase und systemd-creds.
Die vorgeschlagenen Ănderungen zielen darauf ab, ein einheitliches, universelles UKI-Image (Unified Kernel Image) zu schaffen, das das Linux-Kernel-Image, einen Handler zum Laden des Kernels aus UEFI (UEFI boot stub) und das in den Arbeitsspeicher geladene Systemumfeld initrd kombiniert, das fĂŒr die initiale Initialisierung in der Phase vor dem Mounten des Root-Dateisystems verwendet wird. Statt des RAM-Image initrd kann im UKI auch das gesamte System verpackt werden, was die Erstellung vollstĂ€ndig verifizierter Systemumgebungen ermöglicht, die in den Arbeitsspeicher geladen werden. Das UKI-Image wird als ausfĂŒhrbare Datei im PE-Format gestaltet, die nicht nur mit traditionellen Bootloaders geladen werden kann, sondern auch direkt aus der UEFI-Firmware aufgerufen werden kann.
Die Möglichkeit des Aufrufs aus UEFI ermöglicht die Verwendung einer IntegritĂ€ts- und EchtheitsprĂŒfung durch digitale Signaturen, die nicht nur den Kernel, sondern auch den Inhalt von initrd abdecken. Gleichzeitig ermöglicht die UnterstĂŒtzung des Aufrufs aus traditionellen Bootloaders die Beibehaltung solcher Möglichkeiten wie das Bereitstellen mehrerer Kernelversionen und das automatische ZurĂŒckrollen auf den funktionierenden Kernel im Falle von Problemen mit dem neuen Kernel nach einem Update.
Derzeit wird in den meisten Linux-Distributionen im Initialisierungsprozess eine Kette verwendet: "Firmware â von Microsoft signierte shim-Schicht â von der Distribution signierter Bootloader GRUB â von der Distribution signierter Linux-Kernel â nicht signierte Umgebung initrd â Root-Dateisystem". Das Fehlen einer Verifizierung von initrd in traditionellen Distributionen schafft Sicherheitsprobleme, da in dieser Umgebung unter anderem SchlĂŒssel zum EntschlĂŒsseln des Root-Dateisystems extrahiert werden.
Die Verifizierung des initrd-Images wird nicht unterstĂŒtzt, da diese Datei auf dem lokalen System des Benutzers erstellt wird und nicht mit einer digitalen Signatur des Distributors versehen werden kann, was die Organisation der ĂberprĂŒfung im SecureBoot-Modus erheblich erschwert (um das initrd zu signieren, muss der Benutzer seine SchlĂŒssel generieren und in die UEFI-Firmware hochladen). DarĂŒber hinaus erlaubt die derzeitige Boot-Organisation nicht, Informationen aus den TPM PCR-Registern (Platform Configuration Register) zur Ăberwachung der IntegritĂ€t der Komponenten im Benutzerspeicher zu verwenden, abgesehen von shim, grub und dem Kernel. Zu den bestehenden Problemen gehört auch die Schwierigkeit bei der Aktualisierung des Bootloaders und die fehlende Möglichkeit, den Zugriff auf die SchlĂŒssel im TPM fĂŒr Ă€ltere Betriebssystemversionen, die nach der Installation des Updates nicht mehr aktuell sind, einzuschrĂ€nken.
Die Hauptziele der EinfĂŒhrung einer neuen Boot-Architektur:
- Bereitstellung eines vollstÀndig verifizierten Boot-Prozesses, der alle Phasen von der Firmware bis zum Benutzerspeicher umfasst und die AuthentizitÀt und IntegritÀt der geladenen Komponenten bestÀtigt.
- Bindung kontrollierter Ressourcen an die TPM PCR-Register mit Trennung nach EigentĂŒmern.
- Möglichkeit der Vorberechnung der PCR-Werte basierend auf den bei der Booten verwendeten Kernel-, initrd-, Konfigurations- und lokalen System-ID.
- Schutz vor Rollback-Angriffen, die mit einem ZurĂŒcksetzen auf eine frĂŒhere verwundbare Version des Systems verbunden sind.
- Vereinfachung und Erhöhung der ZuverlÀssigkeit von Updates.
- UnterstĂŒtzung von Betriebssystem-Updates, die keine erneute Anwendung oder lokale Vorbereitung der durch TPM geschĂŒtzten Ressourcen erfordern.
- Bereitschaft des Systems zur DurchfĂŒhrung von Remote-Attestierungen zur BestĂ€tigung der Korrektheit des geladenen Betriebssystems und der Einstellungen.
- Möglichkeit, vertrauliche Daten an bestimmten Phasen des Bootvorgangs anzuhĂ€ngen, z. B. das Abrufen von VerschlĂŒsselungsschlĂŒsseln fĂŒr das Root-Dateisystem aus dem TPM.
- Bereitstellung eines sicheren, automatischen und benutzerunabhĂ€ngigen Prozesses zur Entsperrung von SchlĂŒsseln fĂŒr die EntschlĂŒsselung des jeweiligen Root-Disk.
- Verwendung von Chips, die die TPM 2.0-Spezifikation unterstĂŒtzen, mit der Möglichkeit, auf Systeme ohne TPM zurĂŒckzugreifen.
Quelle: opennet.ru
