
Sicherheitslücke in der Hypervisor-Firmware einiger älterer Qualcomm-Chipsätze
CVE-2022-22063 ist ein Sicherheitsproblem in der Hypervisor-Firmware einiger älterer Qualcomm-Chipsätze. Eine ungeschützte Hardware-Komponente (der „Boot-Remapper“) kann missbraucht werden, um von einem modifizierten Betriebssystem aus vollen Lese-/Schreibzugriff auf den Hypervisor zu erlangen (Privilege Escalation). Die Ausnutzung des Problems ist auf betroffenen Plattformen trivial, da keine Kenntnisse über die spezifische Firmware-Version (z. B. Adressen oder Variablen) erforderlich sind.
Hinweis: Obwohl Qualcomm Kunden Fixes bereitgestellt hat (mit reichlich Zeit, Updates zu veröffentlichen), sind viele betroffene Geräte bereits recht alt und erhalten den Fix vom Hersteller möglicherweise nicht. Das Problem kann nur von einem modifizierten oder kompromittierten Betriebssystem aus ausgenutzt werden (unter Verwendung eines anderen Sicherheitsproblems). Das Betriebssystem aktuell und sicher zu halten, könnte ausreichend sein, selbst wenn die Firmware verwundbar ist.
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDas Problem wurde auch in [Qualcomms Sicherheitsbulletin vom Dezember 2022] veröffentlicht.
Das Problem hängt von einer Kombination aus Hardware und Software ab, die auf dem betroffenen Zielgerät läuft:
hyp-Partition im internen Speicher).APCS_BOOT_START_ADDR_NSEC), die nicht vom Hypervisor geschützt wird und daher für den weniger privilegierten Betriebssystem-Kernel (z. B. Linux) zugänglich ist.Es gibt mehrere weitere Chipsätze, die wahrscheinlich die betroffene Hardware haben (z. B. MSM8909 und MSM8953), aber sie besitzen keine separate Hypervisor-Firmware, die kompromittiert werden könnte.
Privilege Escalation: Bei einem bereits kompromittierten Betriebssystem-Kernel (z. B. Linux) ermöglicht das Problem, Privilegien trivial auf die Hypervisor-Ebene anzuheben (EL1 -> EL2 auf ARM). Der gesamte vom Hypervisor verwaltete Speicher kann gelesen oder beschrieben werden. Dadurch wird die Isolation verschiedener Sicherheitsdomänen oder virtueller Maschinen, die vom Hypervisor verwaltet werden (sofern vorhanden, je nach Konfiguration), aufgehoben.
(Siehe auch: [Eine Einführung in die Zugriffskontrolle auf Qualcomm-Snapdragon-Plattformen])
Secure Boot: Die meisten in der Produktion erhältlichen Qualcomm-Geräte verwenden Secure Boot, um unbefugte Änderungen an der Firmware zu verhindern. Die Firmware wird kryptografisch signiert und von der Boot-Kette verifiziert. Das Problem ermöglicht es, die geladene Hypervisor-Firmware zur Laufzeit von einem modifizierten Betriebssystem aus zu ändern oder sogar vollständig zu ersetzen (entweder über offiziell unterstütztes „Bootloader-Unlocking“ oder einen anderen Exploit).
(Siehe auch: [Qualcomm Secure Boot and Image Authentication Technical Overview (v1.0)] und (v2.0))
Hinweis: Das Problem wurde ursprünglich auf der Plattform Qualcomm Snapdragon 410 (MSM8916) gefunden. Einige der folgenden Erklärungen könnten spezifisch für MSM8916 sein, z. B.:
Das allgemeine Konzept gilt jedoch in ähnlicher Weise für alle betroffenen Plattformen.
Die 64-Bit-ARMv8-A-Architektur definiert 4 Privilegienstufen („Exception Levels“, EL). Es gibt getrennte Ebenen, die typischerweise für Anwendungen, Betriebssystem-Kernel und einen Hypervisor verwendet werden:
Die CPU wechselt während Exceptions zwischen den Ebenen, z. B. aufgrund eines eingehenden Interrupts. Es ist auch möglich, mit speziellen Befehlen wie dem Hypervisor Call (hvc) zwischen einigen Ebenen zu wechseln.
(Siehe auch: [AArch64-Exception-Modell])
Der Hypervisor kann eine oder mehrere virtuelle Maschinen mit separaten Betriebssystem-Kerneln hosten. Jede virtuelle Maschine kann mithilfe der Stage-2-Übersetzung eine eigene Sicht auf den Speicher erhalten. Alle Speicherzugriffe einer virtuellen Maschine durchlaufen zwei Übersetzungsstufen: Die erste wird vom (virtuellen) Betriebssystem verwaltet, während die zweite Stufe vom Hypervisor verwaltet wird. Vom Hypervisor oder von anderen virtuellen Maschinen genutzter Speicher kann ausgeblendet werden, indem er aus den Übersetzungstabellen ausgelassen wird.
(Siehe auch: [AArch64-Virtualisierung], [AArch64-Speicherverwaltung])
Qualcomms Hypervisor-Firmware läuft in EL2 und verwendet die Stage-2-Übersetzung, um Zugriff auf den Hypervisor-Speicher vom Haupt-Betriebssystem-Kernel in EL1 (normalerweise Linux) zu verhindern. Beachten Sie, dass die Stage-2-Übersetzung in diesem Aufbau hauptsächlich zum Speicherschutz ohne Adressübersetzung verwendet wird. Das Haupt-Betriebssystem hat direkten Zugriff auf die meisten Hardware-Komponenten im Memory-Mapped-Input/Output-Bereich (MMIO), z. B. den SD-Controller oder das Kamera-Subsystem. Zugriff auf Speicher, der zum Hypervisor/EL2 (hyp) und zum Secure Monitor/EL3 (Teil von tz) gehört, ist eingeschränkt:
Der Boot-Remapper hat nichts mit Virtualisierung zu tun: Er wird beim frühen Boot eines CPU-Kerns benötigt. Auf dieser Hardware-Plattform beginnen die CPU-Kerne die Ausführung immer an Adresse 0x0. Der Boot-Remapper ist eine zusätzliche Hardware-Komponente, die um die CPU herum aufgebaut ist und die ersten 64 oder 128 KiB (0x00000 - 0x20000) auf einen konfigurierbaren Speicherbereich umsetzt.
Standardmäßig zeigt der Boot-Remapper auf das Boot-ROM (den ersten Code, der beim Start des Geräts ausgeführt wird). Später wird die Zuordnung geändert, sodass die anderen CPU-Kerne sofort mit der Ausführung in der EL3-Firmware (Teil von tz) beginnen, die in den RAM geladen wurde:
Beachten Sie, wie die vom CPU angesprochene Adresse (innerhalb von tz) über zwei verschiedene physische Adressen erreichbar ist: die echte Adresse im RAM (0x8650xxxx) und die umgesetzte Adresse über den Boot-Remapper (0x0000xxxx).
Es gibt tatsächlich zwei separate Instanzen des Boot-Remappers: