Forscher der NCC Group Schwachstellen () in Qualcomm-Chips, die es ermöglichen, den Inhalt geschlossener Verschlüsselungsschlüssel zu bestimmen, die im isolierten Enklave Qualcomm QSEE (Qualcomm Secure Execution Environment) untergebracht sind, welches auf ARM TrustZone-Technologie basiert. Das Problem zeigt sich in Snapdragon SoCs, die in Smartphones mit Android-Betriebssystem verbreitet sind. Die Korrekturen, die das Problem beheben, wurden bereits in das April-Update von Android und in neue Versionen von Firmware für Qualcomm-Chips integriert. Qualcomm benötigte mehr als ein Jahr, um das Problem zu beheben – die Informationen über die Schwachstelle wurden bereits am 19. März 2018 an Qualcomm übermittelt.
Wir erinnern daran, dass die ARM TrustZone-Technologie es ermöglicht, hardware-isolierte sichere Umgebungen zu schaffen, die vollständig vom Hauptsystem getrennt sind und auf einem einzelnen virtuellen Prozessor mit einem separaten, spezialisierten Betriebssystem ausgeführt werden. Der Zweck von TrustZone besteht darin, eine isolierte Ausführung von Schlüsselverarbeitern für Verschlüsselung, biometrische Authentifizierung, Zahlungsdaten und anderen vertraulichen Informationen zu gewährleisten. Die Interaktion mit dem Hauptbetriebssystem erfolgt indirekt über eine Dispatch-Schnittstelle. Geschlossene Verschlüsselungsschlüssel werden in einem hardware-isolierten Schlüsselspeicher abgelegt, was bei ordnungsgemäßer Umsetzung verhindert, dass sie im Falle einer Kompromittierung des Hauptsystems abfließen.
Die Schwachstelle ist auf einen Mangel in der Implementierung des Algorithmus zur Verarbeitung elliptischer Kurven zurückzuführen, der zu einer Informationsleakage über den Verarbeitungsstatus der Daten führte. Die Forscher entwickelten eine Technik für Seitenkanalangriffe, die es ermöglicht, anhand vorhandener indirekter Lecks den Inhalt geschlossener Schlüssel, die in hardware-isoliertem . Lecks werden auf der Grundlage der Analyse der Aktivität des Vorhersageübertrittsblocks und der Änderung der Zugriffszeit auf Daten im Speicher ermittelt. Während des Experiments haben die Forscher erfolgreich die Wiederherstellung der 224- und 256-Bit ECDSA-Schlüssel aus einem hardware-isolierten Schlüsselspeicher demonstriert, der im Nexus 5X Smartphone verwendet wird. Für die Wiederherstellung des Schlüssels war die Generierung von etwa 12.000 digitalen Signaturen erforderlich, was mehr als 14 Stunden in Anspruch nahm. Für den Angriff wurde ein Toolkit verwendet. .
Der Hauptgrund für das Auftreten des Problems ist die gemeinsame Nutzung von gemeinsamen Hardwarekomponenten und dem Cache für Berechnungen in TrustZone und im Hauptsystem — die Isolation erfolgt auf logischer Ebene, verwendet jedoch gemeinsame Rechenblöcke, was zu Spuren von Berechnungen und Informationen über die Übergangsadressen im gemeinsamen CPU-Cache führt. Mit der Methode Prime+Probe, die auf der Bewertung der Änderung der Zugriffszeit auf zwischengespeicherte Informationen basiert, kann man mit ausreichend hoher Genauigkeit Datenströme und Anzeichen der Ausführung von codebezogenen Berechnungen in TrustZone durch die Überprüfung bestimmter Muster im Cache nachverfolgen.
Die meiste Zeit für die Erstellung einer digitalen Signatur unter Verwendung von ECDSA-Schlüsseln in Qualcomm-Chips wird mit der Durchführung von Multiplikationsoperationen in einer Schleife unter Verwendung eines unveränderten Initialisierungsvektors (). Wenn der Angreifer selbst nur einige Bits mit Informationen über diesen Vektor wiederherstellen kann, besteht die Möglichkeit eines Angriffs durch schrittweise Wiederherstellung des gesamten privaten Schlüssels.
Im Fall von Qualcomm wurden zwei Stellen enthüllt, an denen solche Informationen im Multiplikationsalgorithmus auslaufen: bei der Durchführung von Suchvorgängen in Tabellen und im bedingten Datenextraktionscode basierend auf dem Wert des letzten Bits im 'nonce'-Vektor. Trotz der im Qualcomm-Code vorhandenen Maßnahmen zur Bekämpfung des information leak über externe Kanäle ermöglicht die entwickelte Angriffsmethode, diese Maßnahmen zu umgehen und mehrere Bits des 'nonce'-Wertes zu bestimmen, die ausreichen, um 256-Bit ECDSA-Schlüssel wiederherzustellen.
Quelle: opennet.ru
