Die endgültige Version der Spezifikation der Software-Hardware-Plattform CHERIoT 1.0 (Capability Hardware Extension to RISC-V für das Internet der Dinge) wurde vorgestellt, die die Erweiterung des Befehlssatzes (ISA) zur Erstellung sicherer Geräte definiert. CHERIoT bietet hardwarebasierte Funktionen zur Überwachung des Zugriffs auf den Speicher, zur Überprüfung der Korrektheit der Arbeit mit Zeigern und zur Gewährleistung der Isolation von Codeblocks. Gleichzeitig wurde eine stabile Version des Referenzmodells der formalen CHERIoT ISA veröffentlicht, die in der Sprache Sail definiert ist. Die Entwicklungen des Projekts werden unter der BSD-Lizenz verbreitet.
Das CHERIoT-Projekt wurde von Microsoft ins Leben gerufen, um Sicherheitsprobleme im bestehenden Code in den Sprachen C und C++ zu lösen und ähnlichen Code zu schützen, ohne ihn neu zu schreiben. Der Schutz erfolgt durch die Verwendung eines modifizierten Compilers, der einen erweiterten Satz von Prozessoranweisungen (ISA) nutzt, um die Integrität der Zeiger, die Kontrolle der Grenzen beim Arbeiten mit dem Speicher sowie den Schutz vor dem Zugriff auf freigegebenen Speicher zu gewährleisten. Im Jahr 2023 wurden die Entwicklungen von CHERIoT veröffentlicht und in ein Gemeinschaftsprojekt umgewandelt, an dem sich auch andere Unternehmen beteiligen.
Die Hardwarekomponenten von CHERIoT sind als Mikrocontroller auf der Basis der RISC-V-Architektur konzipiert, die eine sichere Prozessorarchitektur CHERI (Capability Hardware Extension to RISC-V) implementiert. Diese Architektur nutzt ein 'Capability'-Modell für den kontrollierten Zugriff auf den Speicher, wobei jede Lese- und Schreiboperation im Speicher autorisiert wird. Basierend auf der im CHERIoT bereitgestellten Befehlssatzarchitektur (ISA) wurde ein Softwaremodell entwickelt, das die Sicherheit der Speicheroperationen auf der Ebene einzelner Objekte gewährleistet, Schutz vor dem Zugriff auf bereits freigegebenen Speicher bietet und ein leichtgewichtiges System zur Isolierung des Speicherzugriffs implementiert.
Das genannte Software-Schutzmodell spiegelt sich direkt im Sprachmodell C/C++ wider, was eine Anwendung für bestehende Anwendungen ermöglicht, für deren Schutz lediglich eine Neukompilierung und Ausführung auf Hardware erforderlich ist, die die ISA CHERIoT unterstützt. Zum Beispiel ermöglicht die Anwendung von CHERIoT die automatische Überprüfung der Grenzen, das Verfolgen der Lebensdauer von Speicherbereichen und die Gewährleistung der Integrität von Zeigern in Komponenten, die mit nicht vertrauenswürdigen Daten arbeiten, ohne Änderungen am Code vorzunehmen.
Unter den Problemen, die mit CHERIoT blockiert werden, sind:
- Überschreitung der Grenzen eines Objekts im Speicher;
- Pointer-Direktion (bei Verwendung von CHERIoT müssen alle Zeiger von bereits existierenden Zeigern abgeleitet werden);
- Zugriff auf den Speicher nach Freigabe (jeder Zugriff auf den Speicher über einen ungültigen Zeiger oder einen Zeiger, der auf ein freigegebenes Objekt verweist, führt bei Verwendung von CHERIoT zur Generierung einer Ausnahme).
Neben der Spezifikation und dem formalen Modell wird im Rahmen des Projekts eine Referenzimplementierung der 32-Bit RISC-V CPU Ibex mit Unterstützung der ISA CHERIoT sowie ein modifiziertes LLVM-Toolset entwickelt. Die Prototyp-Schemata der CPU und die Beschreibungen der Hardwareblöcke sind in Verilog formuliert und werden unter der Lizenz Apache 2.0 verbreitet. Als Grundlage für die CPU wurde der Ibex-Core des Projekts lowRISC verwendet. Auf Basis des CHERIoT Ibex-Cores werden Chips des ICENI für die Serienproduktion vorbereitet, deren Markteinführung für das nächste Jahr geplant ist. Separat entwickelt Microsoft den Mikrocontroller Kudu mit Unterstützung der ISA CHERIoT. Ibex und Kudu unterstützen bereits vollständig die Spezifikation CHERIoT 1.0. Es wird an der Standardisierung der CHERI-Erweiterungen für RISC-V-Prozessoren innerhalb der Organisation RISC-V International gearbeitet.
Zusätzlich wird ein Emulator der Plattform auf Basis von FPGA und ein Docker-Container für Entwickler mit vorinstalliertem Toolset und dem CPU-Simulator Ibex, umgesetzt mit Verilator, entwickelt. Darüber hinaus wurde auf Basis von CHERIoT ein Prototyp des Echtzeitbetriebssystems CHERIoT RTOS vorbereitet, das eine Isolation von Compartments (Compartment) selbst auf eingebetteten Systemen mit 256 MB RAM ermöglicht. Der Code von CHERIoT RTOS ist in C++ geschrieben und wird unter der MIT-Lizenz verbreitet. Die grundlegenden Komponenten des OS, wie Bootloader, Scheduler und Speichermanagementsystem, sind in Form von Compartments realisiert.
Ein Compartment in CHERIoT RTOS stellt eine isolierte Kombination aus Code und globalen Variablen dar, die einer gemeinsam genutzten Bibliothek ähnelt, sich jedoch im Gegensatz zu dieser in ihrem Zustand (mutable) ändern kann und in einem separaten Sicherheitskontext ausgeführt wird. Kein externes Code kann die Kontrolle an den Code im Compartment übergeben oder auf Objekte zugreifen, außer durch speziell definierte Einstiegspunkte und die Verwendung von Zeigern auf Objekte, die explizit beim Aufruf eines anderen Compartments übergeben wurden. Die Integrität und Vertraulichkeit von Code und globalen Objekten im Compartment wird garantiert.
Quelle: opennet.ru
