Qu'est-ce que CHERI ?
Abréviation de Capability Hardware Enhanced RISC Instructions. Extension du jeu d'instructions qui remplace les pointeurs par des capacités portant, outre l'adresse, la plage vers laquelle elles peuvent pointer et leurs droits, afin que les accès hors limites et la falsification de pointeurs soient arrêtés par le matériel. Les recherches ont été menées par l'université de Cambridge et SRI International. Arm a mis Morello, un processeur prototype qui s'en inspire, à la disposition des chercheurs au début des années 2020.
Nom japonais: CHERI
« CHERI » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Sécurité matérielle : évolutions récentes.
Domaine: Sécurité matérielle : évolutions récentes
Contenu d'une capacité
Un pointeur classique n'est qu'une adresse, et le matériel n'a aucun moyen de vérifier ce vers quoi il pointe. Une capacité CHERI porte, en plus de l'adresse, les bornes inférieure et supérieure de la plage vers laquelle elle peut pointer et des droits comme la lecture, l'écriture et l'exécution. Pour des adresses de 64 bits, les bornes sont stockées sous forme compressée pour que la capacité tienne sur 128 bits, et un bit d'étiquette supplémentaire est conservé en dehors du contenu normal de la mémoire. Le CPU vérifie les bornes et les droits à chaque chargement et à chaque écriture et lève une exception en cas de violation ; les erreurs comme un débordement de tampon sont ainsi arrêtées sur-le-champ.
Questions fréquentes
Quelle est la différence entre CHERI et MTE (Memory Tagging Extension) ?
MTE compare des étiquettes de 4 bits attachées à la mémoire et aux pointeurs et détecte les erreurs de façon probabiliste. CHERI donne à chaque pointeur ses propres bornes et ses propres droits et arrête les accès hors limites de façon déterministe. MTE s'introduit plus facilement dans les logiciels existants, tandis que CHERI offre des garanties plus fortes au prix de modifications plus importantes du jeu d'instructions et des logiciels.
CHERI élimine-t-il tous les problèmes de sûreté mémoire ?
Il empêche les accès hors limites et la falsification de pointeurs, mais empêcher l'utilisation de la mémoire après sa libération demande un travail supplémentaire dans l'allocateur. Il ne peut pas non plus empêcher les erreurs de logique ni l'usage abusif de droits accordés légitimement. Il s'utilise en combinaison avec d'autres mesures.