CHERIoT, un projet Microsoft pour améliorer la sécurité en C

CHÉRIOT

CHERIoT, une option MS pour la sécurité des systèmes embarqués

La nouvelle a récemment éclaté que Microsoft a ouvert les développements liés au projet CHERIoT (Extension matérielle de capacité à RISC-V pour l'Internet des objets), destiné à bloquer les problèmes de sécurité dans le code C et C++ existant. CHERIoT propose une solution pour protéger les bases de code C/C++ existantes sans avoir à les refactoriser.

La protection est implémentée en utilisant un compilateur modifié qui utilise un ensemble étendu spécial d'instructions de processeur (ISA) fourni par le processeur et surveille l'accès à la mémoire au niveau matériel, vérifie l'exactitude du travail avec des pointeurs et fournit une isolation de bloc de code.

À propos de CHÉRIOT

Le projet a été créé avec la compréhension que la nature de bas niveau du langage C devient une source d'erreurs de mémoire, ce qui entraîne des problèmes tels que des débordements de tampon, accès à la mémoire déjà libérée, déréférencement de pointeur ou double libération.

La pratique montre que même les grandes entreprises telles que Google et Microsoft, qui ont une politique stricte d'examen des modifications et utilisent des méthodes de développement modernes et des outils d'analyse statique, ne peuvent pas garantir un fonctionnement sans erreur avec la mémoire (par exemple, environ 70 % des vulnérabilités dans Microsoft et Google sont causés par une gestion de la mémoire non sécurisée).

Le problème Il peut être résolu en utilisant des langages de programmation qui garantissent un travail sûr.ou avec de la mémoire ou des liens avec des contrôles supplémentaires, par exemple, en utilisant MiraclePtr (raw_ptr) au lieu de pointeurs communs, qui effectue des contrôles supplémentaires pour accéder aux zones de mémoire libérées.

Mais ces méthodes sont plus adaptées au nouveau code y il est assez fastidieux de retravailler des projets C/C++ existants, surtout s'ils sont destinés à fonctionner dans des environnements à ressources limitées, tels que les systèmes embarqués et les appareils IoT.

Les Les composants matériels CHERIoT sont conçus comme un microcontrôleur basé sur l'architecture RISC-V, implémentant l'architecture de processeur sécurisée CHERI (Capacity Hardware Extension for RISC-V), fournissant un modèle d'accès mémoire contrôlé.

Basé à l'architecture du jeu d'instructions (EST UN) Fourni dans CHERIoT, un modèle de programmation est construit qui garantit la sécurité du travail avec la mémoire au niveau des objets individuels, fournit une protection contre l'accès à la mémoire déjà libérée et implémente un système d'isolation léger pour l'accès à la mémoire.

Ce modèle de protection programmatique reflète directement le modèle de langage C/C++, ce qui lui permet d'être utilisé pour protéger les applications existantes (recompilation et exécution sur du matériel compatible ISA CHERIoT uniquement requis).

La solution proposée permet de bloquer les erreurs qui provoquent le dépassement des limites d'un objet en mémoire, n'autorise pas la substitution de pointeur (tous les pointeurs doivent être générés à partir de pointeurs existants), surveille l'accès mémoire après la libération (tout accès mémoire par un mauvais pointeur ou un pointeur référençant un objet libéré lève une exception).

Par exemple, l'utilisation de CHERIoT permet, sans apporter de modifications au code, d'implémenter une vérification automatique des limites, de suivre la durée de vie des zones mémoire et d'assurer l'intégrité des pointeurs dans les composants qui traitent des données non fiables.

Le projet inclut une spécification pour une architecture de jeu d'instructions CHERIoT extension, une implémentation de référence d'un processeur RISC-V 32 bits conforme à ISA CHERIoT et un ensemble d'outils LLVM modifié.

Enfin Si vous souhaitez en savoir plus, tu devrais savoir que schémas prototypes Les descriptions des blocs CPU et matériels dans Verilog sont distribuées sous la licence Apache 2.0. Le noyau Ibex du projet lowRISC est utilisé comme base pour le CPU et le modèle de code CHERIoT ISA est défini dans le langage Sail et distribué sous la licence BSD.

De plus, un prototype de système d'exploitation en temps réel CHERIoT RTOS est proposé, qui offre la possibilité d'isoler des compartiments (compartiment) même sur des systèmes embarqués avec 256 Mo de RAM.

Le code RTO CHERIOT Il est écrit en C++ et est distribué sous licence MIT. Sous forme de compartiments, les composants de base du système d'exploitation, tels que le chargeur de démarrage, le planificateur et le système d'allocation de mémoire, sont conçus.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.