Was ist CHERI?
Abkürzung für Capability Hardware Enhanced RISC Instructions. Befehlssatzerweiterung, die Zeiger durch Capabilities ersetzt, die zusätzlich zur Adresse den Bereich, auf den sie zeigen dürfen, und ihre Rechte tragen, sodass Zugriffe außerhalb der Grenzen und gefälschte Zeiger in Hardware gestoppt werden. Sie wurde von der University of Cambridge und SRI International entwickelt. Arm stellte Forschenden Anfang der 2020er-Jahre Morello bereit, einen darauf basierenden Prototyp-Prozessor.
Japanische Bezeichnung: CHERI
„CHERI“ kommt in 1 Übungsfragen aus 1 Themen vor, z. B. Aktuelle Entwicklungen der Hardwaresicherheit.
Fachgebiet: Aktuelle Entwicklungen der Hardwaresicherheit
Was eine Capability enthält
Ein herkömmlicher Zeiger ist nur eine Adresse, und die Hardware hat keine Möglichkeit zu prüfen, worauf er zeigt. Eine CHERI-Capability enthält neben der Adresse Unter- und Obergrenze des Bereichs, auf den sie zeigen darf, sowie Rechte wie Lesen, Schreiben und Ausführen. Bei 64-Bit-Adressen werden die Grenzen komprimiert dargestellt, sodass die Capability in 128 Bit passt, und ein weiteres Tag-Bit wird außerhalb des normalen Speicherinhalts gehalten. Die CPU prüft Grenzen und Rechte bei jedem Load und Store und löst bei Verstößen eine Ausnahme aus, sodass Fehler wie ein Pufferüberlauf sofort gestoppt werden.
Tags, die Fälschung verhindern
Das Tag wird nur gesetzt, wenn eine Capability mit den dafür vorgesehenen Befehlen erzeugt oder durch Einengen des Bereichs aus einer bestehenden Capability abgeleitet wird. Wird eine Capability als gewöhnliche Daten überschrieben, wird ihr Tag gelöscht, und ein Wert ohne Tag kann nicht als Zeiger verwendet werden. Grenzen und Rechte lassen sich nur einengen, nie erweitern, sodass ein Programm nicht mehr Befugnisse erzeugen kann, als es erhalten hat. Diese Eigenschaft erlaubt es auch, ein einzelnes Programm in kleine Abschnitte zu unterteilen, die jeweils nur auf das zugreifen dürfen, was ihnen zusteht (Kompartimentierung).
Häufige Fragen
Was unterscheidet CHERI von MTE (Memory Tagging Extension)?
MTE vergleicht 4-Bit-Tags an Speicher und Zeigern und findet Fehler probabilistisch. CHERI gibt jedem Zeiger eigene Grenzen und Rechte und stoppt Zugriffe außerhalb der Grenzen deterministisch. MTE lässt sich leichter in vorhandene Software einführen, während CHERI stärkere Garantien bietet, dafür aber größere Änderungen an Befehlssatz und Software erfordert.
Beseitigt CHERI alle Probleme der Speichersicherheit?
Es verhindert Zugriffe außerhalb der Grenzen und das Fälschen von Zeigern, doch um die Verwendung von Speicher nach seiner Freigabe zu verhindern, sind zusätzliche Vorkehrungen im Allokator nötig. Logikfehler und der Missbrauch legitim erteilter Rechte lassen sich ebenfalls nicht verhindern. CHERI wird zusammen mit anderen Maßnahmen eingesetzt.