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.

Des étiquettes qui empêchent la falsification

L'étiquette n'est posée que lorsqu'une capacité est créée par les instructions prévues ou dérivée d'une capacité existante en réduisant sa plage. Si une capacité est réécrite comme une donnée ordinaire, son étiquette est effacée, et une valeur sans étiquette ne peut pas servir de pointeur. Les bornes et les droits peuvent seulement être réduits, jamais élargis ; un programme ne peut donc pas créer plus de droits qu'il n'en a reçu. Cette propriété permet aussi de diviser un même programme en petits compartiments, chacun limité à ce qu'il peut atteindre (compartimentation).

Les défis de l'adoption

Comme les pointeurs doublent de taille, l'utilisation de la mémoire et l'efficacité du cache en sont affectées, et les logiciels qui traitent les pointeurs comme des entiers doivent être modifiés. Les recherches ont montré que de nombreux programmes C et C++ fonctionnent avec de petites modifications. Au milieu des années 2020, il s'agit surtout de prototypes de recherche et de quelques implémentations pour microcontrôleur ; CHERI n'équipe pas les CPU des PC et smartphones ordinaires.

S'entraîner : questions sur CHERI

Quelle affirmation décrit correctement les capacités (capabilities) utilisées dans l'extension du jeu d'instructions appelée CHERI ?

  1. ALes valeurs des pointeurs sont chiffrées avec une clé interne au CPU avant d'être placées en mémoire et déchiffrées à chaque utilisation, de sorte que les autres programmes et l'OS ne peuvent pas les lire
  2. BLe CPU vérifie la signature numérique jointe au fichier exécutable du programme à chaque instruction exécutée et refuse d'exécuter les instructions non signées
  3. CUn pointeur porte la plage à laquelle il peut accéder et ses droits, et une étiquette de 1 bit que le logiciel ne peut pas écrire distingue en mémoire s'il a été créé de façon légitime
Afficher la réponse et l'explication

Réponse : C. Un pointeur porte la plage à laquelle il peut accéder et ses droits, et une étiquette de 1 bit que le logiciel ne peut pas écrire distingue en mémoire s'il a été créé de façon légitime

CHERI remplace les pointeurs réduits à une adresse par des capacités qui regroupent l'adresse, les bornes inférieure et supérieure de la plage vers laquelle elles peuvent pointer et des droits comme la lecture, l'écriture et l'exécution (pour des adresses de 64 bits, elles sont compressées sur 128 bits, avec une étiquette de 1 bit à part). Le CPU vérifie la plage et les droits à chaque accès, si bien que les erreurs de sûreté mémoire, comme une lecture ou une écriture hors d'un tableau, peuvent être arrêtées par le matériel. L'étiquette n'est posée que lorsqu'une capacité est créée par les instructions prévues, et elle est effacée si la capacité est réécrite comme une donnée ordinaire ; les pointeurs ne peuvent donc pas être forgés. L'université de Cambridge et d'autres mènent ces recherches, et Arm a mis à la disposition des chercheurs, au début des années 2020, Morello, un processeur prototype et une carte d'évaluation qui s'en inspirent.

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.

« CHERI » dans les explications

Questions mentionnant « CHERI » (1)

  1. Quelle affirmation décrit correctement les capacités (capabilities) utilisées dans l'extension du jeu d'instructions appelée CHERI ?

Termes associés

Pointeur Tableau Arm CCA (Confidential Compute Architecture) Attaque par exécution transitoire Authentification de pointeurs (PAC) DICE (Device Identifier Composition Engine) FIPS 140-3 HBOM (nomenclature matérielle) Informatique confidentielle (confidential computing) Injection de fautes par laser

Retour au glossaire