Plateforme hardware-software CHERIoT 1.0 pour améliorer la sécurité du code en langage C.

La version finale de la spécification de la plateforme matérielle et logicielle CHERIoT 1.0 (Capability Hardware Extension to RISC-V for Internet of Things) a été présentée, définissant l'extension de l'ensemble d'instructions (ISA) pour créer des dispositifs sécurisés. CHERIoT fournit des capacités matérielles pour suivre l'accès à la mémoire, vérifier la validité des pointeurs et assurer l'isolation des blocs de code. Un modèle formel de référence CHERIoT ISA, défini dans le langage Sail, a également été publié. Les résultats du projet sont distribués sous licence BSD.

Le projet CHERIoT a été créé par Microsoft pour résoudre les problèmes de sécurité dans le code existant écrit en C et C++ et protéger ce code sans nécessiter de réécriture. La protection est mise en œuvre via un compilateur modifié qui utilise un ensemble étendu d'instructions processeur (ISA) pour garantir l'intégrité des pointeurs, contrôler les limites lors de l'accès à la mémoire et éviter l'accès à la mémoire libérée. En 2023, les travaux de CHERIoT ont été ouverts et transformés en un projet collaboratif auquel se sont jointes d'autres entreprises.

Les composants matériels de CHERIoT sont agencés sous la forme d'un microcontrôleur basé sur l'architecture RISC-V, mettant en œuvre une architecture processeur sécurisée CHERI (Capability Hardware Extension to RISC-V) avec un modèle d'accès mémoire contrôlé basé sur les « capabilities » (chaque opération de lecture et d'écriture en mémoire est autorisée). Sur la base de l'architecture de l'ensemble d'instructions (ISA) fournie dans CHERIoT, un modèle logiciel a été construit, garantissant la sécurité de l'accès à la mémoire au niveau des objets individuels, protégeant contre l'accès à la mémoire déjà libérée et mettant en œuvre un système léger d'isolation d'accès à la mémoire.

Le modèle logiciel de protection indiqué se reflète directement dans le modèle de langage C/C++, ce qui permet de l'appliquer à des applications existantes, dont la protection nécessite uniquement une recompilation et un démarrage sur du matériel prenant en charge l'ISA CHERIoT. Par exemple, l'application de CHERIoT permet de réaliser une vérification automatique des limites, un suivi du temps de vie des zones mémoire et d'assurer l'intégrité des pointeurs dans les composants traitant des données non fiables, sans apporter de modifications au code.

Parmi les problèmes bloqués à l'aide de CHERIoT :

  • Débordement d'objet en mémoire ;
  • Substitution de pointeurs (lors de l'utilisation de CHERIoT, tous les pointeurs doivent être générés à partir de pointeurs déjà existants) ;
  • Accès à la mémoire après libération (tout accès à la mémoire via un pointeur incorrect ou un pointeur référent à un objet libéré entraîne, lors de l'utilisation de CHERIoT, la génération d'une exception).

En plus de la spécification et du modèle formel, le projet développe une implémentation de référence d'un CPU RISC-V 32 bits Ibex avec prise en charge de l'ISA CHERIoT et des outils LLVM modifiés. Les schémas du prototype de CPU et les descriptions des blocs matériels en langage Verilog sont diffusés sous la licence Apache 2.0. Le cœur Ibex du projet lowRISC est utilisé comme base pour le CPU. Sur la base du cœur CHERIoT, des puces ICENI sont préparées pour une production en série, dont la mise en vente est prévue pour l'année prochaine. Par ailleurs, Microsoft développe le microcontrôleur Kudu avec prise en charge de l'ISA CHERIoT. Ibex et Kudu prennent déjà en charge entièrement la spécification CHERIoT 1.0. Des travaux sont en cours sur la normalisation des extensions CHERI pour les processeurs RISC-V au sein de l'organisation RISC-V International.

De plus, un émulateur de plateforme basé sur FPGA et un conteneur Docker pour les développeurs avec un environnement d'outils préinstallé et un simulateur de CPU Ibex, implémenté avec Verilator, sont en développement. En outre, sur la base de CHERIoT, un prototype d'un système d'exploitation temps réel CHERIoT RTOS a été préparé, offrant la possibilité d'isoler des compartiments (compartments) même sur des systèmes embarqués avec 256 Mo de RAM. Le code du CHERIoT RTOS est écrit en C++ et est distribué sous la licence MIT. Les composants de base de l'OS, tels que le chargeur, l'ordonnanceur et le système de distribution de mémoire, sont structurés sous forme de compartiments.

Un compartiment dans CHERIoT RTOS est une combinaison isolée de code et de variables globales, ressemblant à une bibliothèque partagée, mais contrairement à celle-ci, il peut modifier son état (mutable) et être exécuté dans un contexte de sécurité distinct. Aucun code externe ne peut transférer le contrôle au code dans le compartiment ni accéder aux objets, à part appeler des points d'entrée spécialement définis et utiliser des pointeurs vers des objets explicitement transmis lors de l'appel d'un autre compartiment. L'intégrité et la confidentialité des codes et des objets globaux dans le compartiment sont garanties.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster