Pourquoi la sécurité de bout en bout est-elle importante pour les systèmes embarqués ?
Les systèmes intégrés sont à l'origine d'un grand nombre de technologies modernes. Qu'il s'agisse du régulateur de vitesse adaptatif de votre voiture ou du Wifi de votre réfrigérateur intelligent. Avec l'augmentation des cyberattaques, il est devenu essentiel de sécuriser ces systèmes.
Les dispositifs intégrés sont des cibles de choix pour les pirates informatiques, car une attaque réussie peut permettre aux intrus d'accéder aux données produites, reçues et traitées par ces dispositifs. Cela peut souvent avoir de graves conséquences pour le système plus large alimenté par le dispositif intégré. Par exemple, l'arrêt d'un dispositif intégré dans un avion de chasse F-15, qui recueille des données provenant de diverses caméras et capteurs, peut entraver considérablement les défenses de l'avion.
Nous avons rédigé cet article pour couvrir tout ce dont vous avez besoin pour commencer à développer des systèmes embarqués sécurisés. Voici ce qui est inclus :
- Qu'est-ce que la sécurité intégrée ?
- Défis rencontrés lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué "sûr" ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème embarqué.
- Certains outils de sécurité intégrés.
- Quelles sont les lacunes des solutions intégrées habituelles ?
- L'avenir de la sécurité intégrée.
Qu'est-ce que la sécurité intégrée ?
La sécurité embarquée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des dispositifs embarqués.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limitations en matière de mémoire et de stockage. L'intégration de mesures de sécurité dans ces systèmes devient donc un défi de taille en matière de conception. Cependant, aussi difficile que cela puisse être, il s'agit d'une nécessité de l'heure.
De nombreux gadgets et machines alimentés par des dispositifs intégrés sont également connectés à l'internet. Cela signifie que les pirates peuvent y accéder sans autorisation et y exécuter des codes malveillants.
Le piratage d'un dispositif intégré peut souvent se propager à d'autres composants connectés, et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un pirate informatique parvienne à prendre le contrôle d'un dispositif intégré qui permet aux conducteurs de mettre leur voiture en pilotage automatique. Le pirate peut alors conduire la voiture hors des routes ou dans la circulation, ce qui peut causer des dégâts considérables.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes embarqués ne reçoit pas l'attention qu'elle mérite. En voici quelques raisons :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des dispositifs embarqués sécurisés. Cela s'explique en partie par le point 2 et en partie par le fait que les applications embarquées sont beaucoup plus complexes que les applications logicielles traditionnelles. Comprendre leurs implications en matière de sécurité et écrire un code sûr et performant pour tous les cas d'utilisation, qui plus est dans un environnement micro-informatique contraint, peut s'avérer difficile.
- Manque de normalisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile tente peu à peu de remédier à cette situation. Ces dernières années, des chercheurs ont publié un certain nombre d'ouvrages traitant de la cybersécurité des véhicules intelligents. Citons notamment la norme SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems", et le règlement WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux dispositifs embarqués nécessitent des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans être testés pour détecter les failles de sécurité et les vulnérabilités.
- Logiciel obsolète
Un micrologiciel obsolète est généralement truffé de bogues et de vulnérabilités potentiellement exploitables. Même s'il peut être particulièrement difficile de mettre à jour périodiquement le micrologiciel d'un petit appareil intégré, il ne faut pas l'ignorer.
- Connexion directe à l'internet
De nombreux systèmes et appareils embarqués sont directement connectés à l'internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feu d'entreprise, qui peuvent détecter et prévenir les attaques du réseau. Les ressources étant limitées, il devient très difficile de mettre en œuvre des niveaux de sécurité rigoureux dans un environnement aussi restreint.
- Attaque à grande échelle
Les dispositifs embarqués sont généralement produits à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les effets d'une attaque contre un système embarqué peut donc constituer un défi de taille.
Qu'est-ce qui rend un système embarqué sûr ?
Dans les sections suivantes, nous examinerons certaines caractéristiques logicielles et matérielles des systèmes embarqués sécurisés.
Meilleures pratiques en matière de sécurité du matériel
Un système embarqué sécurisé a :
- Un environnement d'exécution fiable
Un environnement d'exécution de confiance (TEE) permet d'isoler au niveau matériel les opérations critiques pour la sécurité. Par exemple, l'authentification de l'utilisateur peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Des ressources matérielles réparties de manière appropriée
Les différents composants matériels tels que le(s) processeur(s), la mémoire cache, la mémoire et les interfaces réseau, etc. devraient être séparés de manière appropriée, en assurant leurs fonctions de la manière la plus indépendante possible. Cela permet d'éviter qu'une erreur dans un composant ne se propage à d'autres composants.
- Protection de l'espace exécutable (ESP)
La protection de l'espace exécutable, ou ESP, consiste à marquer certaines régions de la mémoire comme non exécutables. Si quelqu'un tente d'exécuter un code dans ces régions marquées, une exception est levée.
Meilleures pratiques en matière de sécurité des logiciels
Les meilleures pratiques suivantes doivent être gardées à l'esprit lors de la création d'un logiciel embarqué :
- Utilisez le démarrage sécurisé :
Lorsqu'un appareil embarqué démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela permet de s'assurer que la séquence de démarrage est correcte et que le logiciel (micrologiciel et toute autre donnée pertinente) n'a pas été altéré.
- Utiliser un système d'exploitation à micro-noyau
Un système d'exploitation à micro-noyau est beaucoup plus petit qu'un système d'exploitation traditionnel et ne contient qu'un sous-ensemble de ses fonctionnalités. L'espace du noyau est minuscule et de nombreux services aux utilisateurs (comme la gestion du système de fichiers, etc.) sont conservés dans un espace séparé, appelé espace utilisateur. Comme il y a moins de code et d'opérations exécutées dans l'espace du noyau, la surface d'attaque est considérablement réduite.
- Utiliser des applications logicielles correctement emballées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, celle-ci ne doit pas être installée globalement sur le système d'exploitation. Elle doit plutôt faire partie du paquetage/conteneur de l'application.
- Valider toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement assainies et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application récupère des données à partir d'une intégration API externe et fait basculer un paramètre en fonction de ces données, les données reçues doivent être rigoureusement validées avant que le paramètre ne soit modifié.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées, mots de passe, etc. sensibles stockés sur un appareil embarqué doivent être protégés. Cela se fait généralement par le biais du cryptage. Les clés privées utilisées pour crypter les données doivent être stockées dans un matériel de sécurité dédié et conçu à cet effet.
La pyramide de sécurité -- Sécurité de bout en bout pour les systèmes embarqués
L'époque où la sécurité n'était qu'un pis-aller est révolue. Une exigence non fonctionnelle. Aujourd'hui, la sécurité doit être intrinsèque. Les appareils doivent être sécurisés dès leur conception. À cette fin, il est essentiel de mettre en œuvre des exigences de sécurité de bout en bout dans un environnement embarqué. Cela signifie qu'il faut penser à la sécurité lors du choix du matériel, de la définition de l'architecture du système, de la conception du système et, bien sûr, de l'écriture du code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel est déficient, vous serez susceptible d'être attaqué. Les techniques de sécurité sur puce peuvent permettre un démarrage sécurisé et une gestion efficace des fonctions cryptographiques et des secrets. Certains composants matériels peuvent également permettre au système d'exploitation d'offrir diverses fonctions de sécurité telles que la détection d'anomalies dans les appels système, le cryptage du système de fichiers et les politiques de contrôle d'accès.
Un système tolérant aux pannes
Il existe de nombreuses raisons de concevoir un système tolérant aux fautes, et éviter les attaques par analyse différentielle des fautes n'est que l'une d'entre elles. Dans ce type d'attaque, un pirate potentiel peut utiliser des techniques d'injection de fautes pour tenter de produire des erreurs dans un dispositif embarqué. Cependant, il existe plusieurs façons de détecter ces fautes et de s'en protéger :
- Reproduisez les opérations les plus critiques, de sorte que les différents résultats puissent être comparés, à tout moment, pour détecter l'injection d'une erreur.
- Échouer par défaut : Lorsque vous traitez plusieurs conditions (à l'intérieur d'une condition If ou d'un bloc de commutation), échouez toujours dans le cas par défaut, c'est-à-dire lorsque rien d'autre ne correspond.
- Introduisez un comportement aléatoire : L'ajout de petits délais aléatoires avant les opérations cruciales garantit que leur timing n'est jamais prévisible. C'est un élément clé de la détection des intrusions, car il est très difficile pour les pirates de déterminer des schémas de fonctionnement et d'effectuer des attaques temporelles.
- Boucliers de protection : Les fabricants doivent utiliser des boucliers pour couvrir les composants les plus importants et les protéger des manipulations extérieures.
- Détecter les fluctuations anormales : Détectez les fluctuations anormales de la tension, du courant ou d'autres valeurs et levez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
La mise en place d'une défense de votre appareil au niveau de l'application implique :
- Choisir des logiciels et des composants matériels tiers testés et réputés qui peuvent être régulièrement mis à jour.
- Former les développeurs aux meilleures pratiques en matière de sécurité des systèmes embarqués.
- Utilisez un système d'exploitation à micro-noyaux pour vous assurer qu'un nombre minimal d'opérations est exécuté dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, y compris les virus, les chevaux de Troie et les logiciels malveillants.
- Supprimez tous les services inutiles. Votre microprogramme ne doit contenir que ce dont vous avez absolument besoin. Par exemple, si vous n'avez pas besoin de transférer des fichiers ou de capturer des paquets, vous pouvez désactiver les protocoles de transfert de fichiers et les paquets réseau tels que telnet.
- Utilisez des protocoles sécurisés tels que SFTP, IPsec, SSL, TLS, SSH et DNSSEC.
Outils pour la sécurité des systèmes embarqués
Voici une liste non exhaustive d'outils qui peuvent aider à sécuriser les systèmes embarqués :
- Bus blaster: Une plate-forme de débogage à grande vitesse qui peut interagir avec les ports de débogage matériels.
- Salae: Décodez différents protocoles comme Serial, SPI, et I2C etc. Vous pouvez utiliser des analyseurs de protocoles construits par la communauté, ou construire votre propre analyseur.
- Hydrabus: Matériel multi-outils open-source pouvant être utilisé pour le débogage, le piratage et/ou les tests de pénétration du matériel embarqué.
- Exploit: Un cadre open-source de test et d'exploitation de la sécurité de l'Internet des objets (IoT).
- FACT (The Firmware Analysis and Comparison Tool): Cadre utilisé pour automatiser l'analyse de la sécurité des microprogrammes.
- Routersploit: Un cadre d'exploitation open-source pour les dispositifs embarqués.
- Firmadyne: système open-source pour l'émulation et l'analyse dynamique des microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions modernes de sécurité embarquée ?
Bien qu'il existe plusieurs solutions pour déboguer, exploiter et tester les solutions embarquées, elles ne sont pas toujours utilisées. L'accent est mis sur la sécurisation physique de l'appareil, mais on ne fait pas assez d'efforts pour se protéger contre les attaques liées aux logiciels. Même les risques et les vulnérabilités les plus simples et les plus faciles à éviter en matière de sécurité des applications sont encore courants dans les appareils embarqués modernes.
L'une des principales raisons en est le manque de sensibilisation des développeurs à la sécurité intégrée. Selon une enquête menée par Tripwire, 68 % des professionnels de l'informatique estiment que leur personnel n'est pas suffisamment conscient des vulnérabilités potentielles.
Les développeurs ne savent pas, par exemple, quels protocoles de sécurité choisir, quels frameworks éviter, quels composants matériels séparer, comment traiter les données sensibles et comment déterminer quel algorithme de cryptage est le plus sûr. Ce manque général de connaissances et le mépris des meilleures pratiques rendent les applications fonctionnant sur des appareils embarqués susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Le marché de la sécurité embarquée est en plein essor. Les experts estiment que le taux de croissance annuel composé (TCAC) du marché peut atteindre un chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement d'un nombre croissant d'appareils IoT, nous pouvons nous attendre à ce que de nouvelles normes de sécurité intégrées soient établies.
L'adoption croissante de dispositifs médicaux portables va également accroître la demande de solutions de sécurité intégrées fiables. Pour que les appareils contiennent et traitent des données médicales sensibles, ils doivent passer certaines listes de contrôle de sécurité, et nous espérons que cela incitera les vendeurs et les ingénieurs à se concentrer davantage sur la sécurité.
À l'avenir, nous pourrions également disposer de solutions permettant la visibilité, la surveillance et le contrôle à distance des principaux composants logiciels et matériels des dispositifs embarqués. Cela changera véritablement la donne dans le monde de la sécurité des systèmes embarqués.
En fin de compte, les signatures numériques, le cryptage des données, l'ajout de pare-feu, la mise en place d'un contrôle d'accès et la randomisation des opérations ne peuvent vous mener que jusqu'à un certain point. Pour construire des dispositifs réellement sûrs, les développeurs doivent être formés à l'écriture d'un code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation au cours de la phase de conception de l'application contribuent grandement à rendre les systèmes intrinsèquement sûrs .
Comment Secure Code Warrior peut vous aider
Secure Code WarriorLe produit phare de la société - learning platform - comporte de nombreux défis interactifs, courses, et des évaluations qui peuvent aider à former les développeurs à l'écriture de code C/C++ sécurisé. Le contenu de la plateforme est spécifique au cadre et très engageant. Nos défis de codage C/C++:Embed se sont inspirés à la fois de MISRA C, d'AUTOSAR C++ (MISRA C++) et de la CEI.
Les développeurs peuvent s'embarquer dans des voyages d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques à C/C++ et, plus important encore, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès afin d'identifier leurs faiblesses, et même participer à des compétitions de codage amicales avec leurs pairs. Découvrez comment nous aidons les industries de l'automobile et du transport avec nos solutions.
Vous voulez découvrir à quel point nos défis sont interactifs et axés sur l'intégration ? Essayez quelques défis C/C++:Embed sur le site learning platform dès aujourd'hui !
Cet article présente une vue d'ensemble de la sécurisation des systèmes embarqués. Nous commencerons par une définition de base, puis nous aborderons les défis de la sécurité des systèmes embarqués, quelques solutions typiques et les éléments manquants.
Secure Code Warrior fait du codage sécurisé une expérience positive et attrayante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son propre parcours d'apprentissage, afin que les développeurs compétents en matière de sécurité deviennent les super-héros quotidiens de notre monde connecté.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationSecure Code Warrior fait du codage sécurisé une expérience positive et attrayante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son propre parcours d'apprentissage, afin que les développeurs compétents en matière de sécurité deviennent les super-héros quotidiens de notre monde connecté.
Secure Code Warrior crée une culture de développeurs axés sur la sécurité en leur donnant les compétences nécessaires pour coder de manière sécurisée. Notre programme phare Agile Learning Platform propose des parcours pertinents basés sur les compétences, des exercices pratiques missions et des outils contextuels permettant aux développeurs d'apprendre, de développer et d'appliquer rapidement leurs compétences pour écrire du code sécurisé.
Les systèmes intégrés sont à l'origine d'un grand nombre de technologies modernes. Qu'il s'agisse du régulateur de vitesse adaptatif de votre voiture ou du Wifi de votre réfrigérateur intelligent. Avec l'augmentation des cyberattaques, il est devenu essentiel de sécuriser ces systèmes.
Les dispositifs intégrés sont des cibles de choix pour les pirates informatiques, car une attaque réussie peut permettre aux intrus d'accéder aux données produites, reçues et traitées par ces dispositifs. Cela peut souvent avoir de graves conséquences pour le système plus large alimenté par le dispositif intégré. Par exemple, l'arrêt d'un dispositif intégré dans un avion de chasse F-15, qui recueille des données provenant de diverses caméras et capteurs, peut entraver considérablement les défenses de l'avion.
Nous avons rédigé cet article pour couvrir tout ce dont vous avez besoin pour commencer à développer des systèmes embarqués sécurisés. Voici ce qui est inclus :
- Qu'est-ce que la sécurité intégrée ?
- Défis rencontrés lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué "sûr" ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème embarqué.
- Certains outils de sécurité intégrés.
- Quelles sont les lacunes des solutions intégrées habituelles ?
- L'avenir de la sécurité intégrée.
Qu'est-ce que la sécurité intégrée ?
La sécurité embarquée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des dispositifs embarqués.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limitations en matière de mémoire et de stockage. L'intégration de mesures de sécurité dans ces systèmes devient donc un défi de taille en matière de conception. Cependant, aussi difficile que cela puisse être, il s'agit d'une nécessité de l'heure.
De nombreux gadgets et machines alimentés par des dispositifs intégrés sont également connectés à l'internet. Cela signifie que les pirates peuvent y accéder sans autorisation et y exécuter des codes malveillants.
Le piratage d'un dispositif intégré peut souvent se propager à d'autres composants connectés, et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un pirate informatique parvienne à prendre le contrôle d'un dispositif intégré qui permet aux conducteurs de mettre leur voiture en pilotage automatique. Le pirate peut alors conduire la voiture hors des routes ou dans la circulation, ce qui peut causer des dégâts considérables.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes embarqués ne reçoit pas l'attention qu'elle mérite. En voici quelques raisons :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des dispositifs embarqués sécurisés. Cela s'explique en partie par le point 2 et en partie par le fait que les applications embarquées sont beaucoup plus complexes que les applications logicielles traditionnelles. Comprendre leurs implications en matière de sécurité et écrire un code sûr et performant pour tous les cas d'utilisation, qui plus est dans un environnement micro-informatique contraint, peut s'avérer difficile.
- Manque de normalisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile tente peu à peu de remédier à cette situation. Ces dernières années, des chercheurs ont publié un certain nombre d'ouvrages traitant de la cybersécurité des véhicules intelligents. Citons notamment la norme SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems", et le règlement WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux dispositifs embarqués nécessitent des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans être testés pour détecter les failles de sécurité et les vulnérabilités.
- Logiciel obsolète
Un micrologiciel obsolète est généralement truffé de bogues et de vulnérabilités potentiellement exploitables. Même s'il peut être particulièrement difficile de mettre à jour périodiquement le micrologiciel d'un petit appareil intégré, il ne faut pas l'ignorer.
- Connexion directe à l'internet
De nombreux systèmes et appareils embarqués sont directement connectés à l'internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feu d'entreprise, qui peuvent détecter et prévenir les attaques du réseau. Les ressources étant limitées, il devient très difficile de mettre en œuvre des niveaux de sécurité rigoureux dans un environnement aussi restreint.
- Attaque à grande échelle
Les dispositifs embarqués sont généralement produits à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les effets d'une attaque contre un système embarqué peut donc constituer un défi de taille.
Qu'est-ce qui rend un système embarqué sûr ?
Dans les sections suivantes, nous examinerons certaines caractéristiques logicielles et matérielles des systèmes embarqués sécurisés.
Meilleures pratiques en matière de sécurité du matériel
Un système embarqué sécurisé a :
- Un environnement d'exécution fiable
Un environnement d'exécution de confiance (TEE) permet d'isoler au niveau matériel les opérations critiques pour la sécurité. Par exemple, l'authentification de l'utilisateur peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Des ressources matérielles réparties de manière appropriée
Les différents composants matériels tels que le(s) processeur(s), la mémoire cache, la mémoire et les interfaces réseau, etc. devraient être séparés de manière appropriée, en assurant leurs fonctions de la manière la plus indépendante possible. Cela permet d'éviter qu'une erreur dans un composant ne se propage à d'autres composants.
- Protection de l'espace exécutable (ESP)
La protection de l'espace exécutable, ou ESP, consiste à marquer certaines régions de la mémoire comme non exécutables. Si quelqu'un tente d'exécuter un code dans ces régions marquées, une exception est levée.
Meilleures pratiques en matière de sécurité des logiciels
Les meilleures pratiques suivantes doivent être gardées à l'esprit lors de la création d'un logiciel embarqué :
- Utilisez le démarrage sécurisé :
Lorsqu'un appareil embarqué démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela permet de s'assurer que la séquence de démarrage est correcte et que le logiciel (micrologiciel et toute autre donnée pertinente) n'a pas été altéré.
- Utiliser un système d'exploitation à micro-noyau
Un système d'exploitation à micro-noyau est beaucoup plus petit qu'un système d'exploitation traditionnel et ne contient qu'un sous-ensemble de ses fonctionnalités. L'espace du noyau est minuscule et de nombreux services aux utilisateurs (comme la gestion du système de fichiers, etc.) sont conservés dans un espace séparé, appelé espace utilisateur. Comme il y a moins de code et d'opérations exécutées dans l'espace du noyau, la surface d'attaque est considérablement réduite.
- Utiliser des applications logicielles correctement emballées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, celle-ci ne doit pas être installée globalement sur le système d'exploitation. Elle doit plutôt faire partie du paquetage/conteneur de l'application.
- Valider toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement assainies et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application récupère des données à partir d'une intégration API externe et fait basculer un paramètre en fonction de ces données, les données reçues doivent être rigoureusement validées avant que le paramètre ne soit modifié.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées, mots de passe, etc. sensibles stockés sur un appareil embarqué doivent être protégés. Cela se fait généralement par le biais du cryptage. Les clés privées utilisées pour crypter les données doivent être stockées dans un matériel de sécurité dédié et conçu à cet effet.
La pyramide de sécurité -- Sécurité de bout en bout pour les systèmes embarqués
L'époque où la sécurité n'était qu'un pis-aller est révolue. Une exigence non fonctionnelle. Aujourd'hui, la sécurité doit être intrinsèque. Les appareils doivent être sécurisés dès leur conception. À cette fin, il est essentiel de mettre en œuvre des exigences de sécurité de bout en bout dans un environnement embarqué. Cela signifie qu'il faut penser à la sécurité lors du choix du matériel, de la définition de l'architecture du système, de la conception du système et, bien sûr, de l'écriture du code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel est déficient, vous serez susceptible d'être attaqué. Les techniques de sécurité sur puce peuvent permettre un démarrage sécurisé et une gestion efficace des fonctions cryptographiques et des secrets. Certains composants matériels peuvent également permettre au système d'exploitation d'offrir diverses fonctions de sécurité telles que la détection d'anomalies dans les appels système, le cryptage du système de fichiers et les politiques de contrôle d'accès.
Un système tolérant aux pannes
Il existe de nombreuses raisons de concevoir un système tolérant aux fautes, et éviter les attaques par analyse différentielle des fautes n'est que l'une d'entre elles. Dans ce type d'attaque, un pirate potentiel peut utiliser des techniques d'injection de fautes pour tenter de produire des erreurs dans un dispositif embarqué. Cependant, il existe plusieurs façons de détecter ces fautes et de s'en protéger :
- Reproduisez les opérations les plus critiques, de sorte que les différents résultats puissent être comparés, à tout moment, pour détecter l'injection d'une erreur.
- Échouer par défaut : Lorsque vous traitez plusieurs conditions (à l'intérieur d'une condition If ou d'un bloc de commutation), échouez toujours dans le cas par défaut, c'est-à-dire lorsque rien d'autre ne correspond.
- Introduisez un comportement aléatoire : L'ajout de petits délais aléatoires avant les opérations cruciales garantit que leur timing n'est jamais prévisible. C'est un élément clé de la détection des intrusions, car il est très difficile pour les pirates de déterminer des schémas de fonctionnement et d'effectuer des attaques temporelles.
- Boucliers de protection : Les fabricants doivent utiliser des boucliers pour couvrir les composants les plus importants et les protéger des manipulations extérieures.
- Détecter les fluctuations anormales : Détectez les fluctuations anormales de la tension, du courant ou d'autres valeurs et levez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
La mise en place d'une défense de votre appareil au niveau de l'application implique :
- Choisir des logiciels et des composants matériels tiers testés et réputés qui peuvent être régulièrement mis à jour.
- Former les développeurs aux meilleures pratiques en matière de sécurité des systèmes embarqués.
- Utilisez un système d'exploitation à micro-noyaux pour vous assurer qu'un nombre minimal d'opérations est exécuté dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, y compris les virus, les chevaux de Troie et les logiciels malveillants.
- Supprimez tous les services inutiles. Votre microprogramme ne doit contenir que ce dont vous avez absolument besoin. Par exemple, si vous n'avez pas besoin de transférer des fichiers ou de capturer des paquets, vous pouvez désactiver les protocoles de transfert de fichiers et les paquets réseau tels que telnet.
- Utilisez des protocoles sécurisés tels que SFTP, IPsec, SSL, TLS, SSH et DNSSEC.
Outils pour la sécurité des systèmes embarqués
Voici une liste non exhaustive d'outils qui peuvent aider à sécuriser les systèmes embarqués :
- Bus blaster: Une plate-forme de débogage à grande vitesse qui peut interagir avec les ports de débogage matériels.
- Salae: Décodez différents protocoles comme Serial, SPI, et I2C etc. Vous pouvez utiliser des analyseurs de protocoles construits par la communauté, ou construire votre propre analyseur.
- Hydrabus: Matériel multi-outils open-source pouvant être utilisé pour le débogage, le piratage et/ou les tests de pénétration du matériel embarqué.
- Exploit: Un cadre open-source de test et d'exploitation de la sécurité de l'Internet des objets (IoT).
- FACT (The Firmware Analysis and Comparison Tool): Cadre utilisé pour automatiser l'analyse de la sécurité des microprogrammes.
- Routersploit: Un cadre d'exploitation open-source pour les dispositifs embarqués.
- Firmadyne: système open-source pour l'émulation et l'analyse dynamique des microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions modernes de sécurité embarquée ?
Bien qu'il existe plusieurs solutions pour déboguer, exploiter et tester les solutions embarquées, elles ne sont pas toujours utilisées. L'accent est mis sur la sécurisation physique de l'appareil, mais on ne fait pas assez d'efforts pour se protéger contre les attaques liées aux logiciels. Même les risques et les vulnérabilités les plus simples et les plus faciles à éviter en matière de sécurité des applications sont encore courants dans les appareils embarqués modernes.
L'une des principales raisons en est le manque de sensibilisation des développeurs à la sécurité intégrée. Selon une enquête menée par Tripwire, 68 % des professionnels de l'informatique estiment que leur personnel n'est pas suffisamment conscient des vulnérabilités potentielles.
Les développeurs ne savent pas, par exemple, quels protocoles de sécurité choisir, quels frameworks éviter, quels composants matériels séparer, comment traiter les données sensibles et comment déterminer quel algorithme de cryptage est le plus sûr. Ce manque général de connaissances et le mépris des meilleures pratiques rendent les applications fonctionnant sur des appareils embarqués susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Le marché de la sécurité embarquée est en plein essor. Les experts estiment que le taux de croissance annuel composé (TCAC) du marché peut atteindre un chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement d'un nombre croissant d'appareils IoT, nous pouvons nous attendre à ce que de nouvelles normes de sécurité intégrées soient établies.
L'adoption croissante de dispositifs médicaux portables va également accroître la demande de solutions de sécurité intégrées fiables. Pour que les appareils contiennent et traitent des données médicales sensibles, ils doivent passer certaines listes de contrôle de sécurité, et nous espérons que cela incitera les vendeurs et les ingénieurs à se concentrer davantage sur la sécurité.
À l'avenir, nous pourrions également disposer de solutions permettant la visibilité, la surveillance et le contrôle à distance des principaux composants logiciels et matériels des dispositifs embarqués. Cela changera véritablement la donne dans le monde de la sécurité des systèmes embarqués.
En fin de compte, les signatures numériques, le cryptage des données, l'ajout de pare-feu, la mise en place d'un contrôle d'accès et la randomisation des opérations ne peuvent vous mener que jusqu'à un certain point. Pour construire des dispositifs réellement sûrs, les développeurs doivent être formés à l'écriture d'un code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation au cours de la phase de conception de l'application contribuent grandement à rendre les systèmes intrinsèquement sûrs .
Comment Secure Code Warrior peut vous aider
Secure Code WarriorLe produit phare de la société - learning platform - comporte de nombreux défis interactifs, courses, et des évaluations qui peuvent aider à former les développeurs à l'écriture de code C/C++ sécurisé. Le contenu de la plateforme est spécifique au cadre et très engageant. Nos défis de codage C/C++:Embed se sont inspirés à la fois de MISRA C, d'AUTOSAR C++ (MISRA C++) et de la CEI.
Les développeurs peuvent s'embarquer dans des voyages d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques à C/C++ et, plus important encore, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès afin d'identifier leurs faiblesses, et même participer à des compétitions de codage amicales avec leurs pairs. Découvrez comment nous aidons les industries de l'automobile et du transport avec nos solutions.
Vous voulez découvrir à quel point nos défis sont interactifs et axés sur l'intégration ? Essayez quelques défis C/C++:Embed sur le site learning platform dès aujourd'hui !
Les systèmes intégrés sont à l'origine d'un grand nombre de technologies modernes. Qu'il s'agisse du régulateur de vitesse adaptatif de votre voiture ou du Wifi de votre réfrigérateur intelligent. Avec l'augmentation des cyberattaques, il est devenu essentiel de sécuriser ces systèmes.
Les dispositifs intégrés sont des cibles de choix pour les pirates informatiques, car une attaque réussie peut permettre aux intrus d'accéder aux données produites, reçues et traitées par ces dispositifs. Cela peut souvent avoir de graves conséquences pour le système plus large alimenté par le dispositif intégré. Par exemple, l'arrêt d'un dispositif intégré dans un avion de chasse F-15, qui recueille des données provenant de diverses caméras et capteurs, peut entraver considérablement les défenses de l'avion.
Nous avons rédigé cet article pour couvrir tout ce dont vous avez besoin pour commencer à développer des systèmes embarqués sécurisés. Voici ce qui est inclus :
- Qu'est-ce que la sécurité intégrée ?
- Défis rencontrés lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué "sûr" ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème embarqué.
- Certains outils de sécurité intégrés.
- Quelles sont les lacunes des solutions intégrées habituelles ?
- L'avenir de la sécurité intégrée.
Qu'est-ce que la sécurité intégrée ?
La sécurité embarquée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des dispositifs embarqués.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limitations en matière de mémoire et de stockage. L'intégration de mesures de sécurité dans ces systèmes devient donc un défi de taille en matière de conception. Cependant, aussi difficile que cela puisse être, il s'agit d'une nécessité de l'heure.
De nombreux gadgets et machines alimentés par des dispositifs intégrés sont également connectés à l'internet. Cela signifie que les pirates peuvent y accéder sans autorisation et y exécuter des codes malveillants.
Le piratage d'un dispositif intégré peut souvent se propager à d'autres composants connectés, et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un pirate informatique parvienne à prendre le contrôle d'un dispositif intégré qui permet aux conducteurs de mettre leur voiture en pilotage automatique. Le pirate peut alors conduire la voiture hors des routes ou dans la circulation, ce qui peut causer des dégâts considérables.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes embarqués ne reçoit pas l'attention qu'elle mérite. En voici quelques raisons :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des dispositifs embarqués sécurisés. Cela s'explique en partie par le point 2 et en partie par le fait que les applications embarquées sont beaucoup plus complexes que les applications logicielles traditionnelles. Comprendre leurs implications en matière de sécurité et écrire un code sûr et performant pour tous les cas d'utilisation, qui plus est dans un environnement micro-informatique contraint, peut s'avérer difficile.
- Manque de normalisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile tente peu à peu de remédier à cette situation. Ces dernières années, des chercheurs ont publié un certain nombre d'ouvrages traitant de la cybersécurité des véhicules intelligents. Citons notamment la norme SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems", et le règlement WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux dispositifs embarqués nécessitent des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans être testés pour détecter les failles de sécurité et les vulnérabilités.
- Logiciel obsolète
Un micrologiciel obsolète est généralement truffé de bogues et de vulnérabilités potentiellement exploitables. Même s'il peut être particulièrement difficile de mettre à jour périodiquement le micrologiciel d'un petit appareil intégré, il ne faut pas l'ignorer.
- Connexion directe à l'internet
De nombreux systèmes et appareils embarqués sont directement connectés à l'internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feu d'entreprise, qui peuvent détecter et prévenir les attaques du réseau. Les ressources étant limitées, il devient très difficile de mettre en œuvre des niveaux de sécurité rigoureux dans un environnement aussi restreint.
- Attaque à grande échelle
Les dispositifs embarqués sont généralement produits à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les effets d'une attaque contre un système embarqué peut donc constituer un défi de taille.
Qu'est-ce qui rend un système embarqué sûr ?
Dans les sections suivantes, nous examinerons certaines caractéristiques logicielles et matérielles des systèmes embarqués sécurisés.
Meilleures pratiques en matière de sécurité du matériel
Un système embarqué sécurisé a :
- Un environnement d'exécution fiable
Un environnement d'exécution de confiance (TEE) permet d'isoler au niveau matériel les opérations critiques pour la sécurité. Par exemple, l'authentification de l'utilisateur peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Des ressources matérielles réparties de manière appropriée
Les différents composants matériels tels que le(s) processeur(s), la mémoire cache, la mémoire et les interfaces réseau, etc. devraient être séparés de manière appropriée, en assurant leurs fonctions de la manière la plus indépendante possible. Cela permet d'éviter qu'une erreur dans un composant ne se propage à d'autres composants.
- Protection de l'espace exécutable (ESP)
La protection de l'espace exécutable, ou ESP, consiste à marquer certaines régions de la mémoire comme non exécutables. Si quelqu'un tente d'exécuter un code dans ces régions marquées, une exception est levée.
Meilleures pratiques en matière de sécurité des logiciels
Les meilleures pratiques suivantes doivent être gardées à l'esprit lors de la création d'un logiciel embarqué :
- Utilisez le démarrage sécurisé :
Lorsqu'un appareil embarqué démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela permet de s'assurer que la séquence de démarrage est correcte et que le logiciel (micrologiciel et toute autre donnée pertinente) n'a pas été altéré.
- Utiliser un système d'exploitation à micro-noyau
Un système d'exploitation à micro-noyau est beaucoup plus petit qu'un système d'exploitation traditionnel et ne contient qu'un sous-ensemble de ses fonctionnalités. L'espace du noyau est minuscule et de nombreux services aux utilisateurs (comme la gestion du système de fichiers, etc.) sont conservés dans un espace séparé, appelé espace utilisateur. Comme il y a moins de code et d'opérations exécutées dans l'espace du noyau, la surface d'attaque est considérablement réduite.
- Utiliser des applications logicielles correctement emballées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, celle-ci ne doit pas être installée globalement sur le système d'exploitation. Elle doit plutôt faire partie du paquetage/conteneur de l'application.
- Valider toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement assainies et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application récupère des données à partir d'une intégration API externe et fait basculer un paramètre en fonction de ces données, les données reçues doivent être rigoureusement validées avant que le paramètre ne soit modifié.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées, mots de passe, etc. sensibles stockés sur un appareil embarqué doivent être protégés. Cela se fait généralement par le biais du cryptage. Les clés privées utilisées pour crypter les données doivent être stockées dans un matériel de sécurité dédié et conçu à cet effet.
La pyramide de sécurité -- Sécurité de bout en bout pour les systèmes embarqués
L'époque où la sécurité n'était qu'un pis-aller est révolue. Une exigence non fonctionnelle. Aujourd'hui, la sécurité doit être intrinsèque. Les appareils doivent être sécurisés dès leur conception. À cette fin, il est essentiel de mettre en œuvre des exigences de sécurité de bout en bout dans un environnement embarqué. Cela signifie qu'il faut penser à la sécurité lors du choix du matériel, de la définition de l'architecture du système, de la conception du système et, bien sûr, de l'écriture du code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel est déficient, vous serez susceptible d'être attaqué. Les techniques de sécurité sur puce peuvent permettre un démarrage sécurisé et une gestion efficace des fonctions cryptographiques et des secrets. Certains composants matériels peuvent également permettre au système d'exploitation d'offrir diverses fonctions de sécurité telles que la détection d'anomalies dans les appels système, le cryptage du système de fichiers et les politiques de contrôle d'accès.
Un système tolérant aux pannes
Il existe de nombreuses raisons de concevoir un système tolérant aux fautes, et éviter les attaques par analyse différentielle des fautes n'est que l'une d'entre elles. Dans ce type d'attaque, un pirate potentiel peut utiliser des techniques d'injection de fautes pour tenter de produire des erreurs dans un dispositif embarqué. Cependant, il existe plusieurs façons de détecter ces fautes et de s'en protéger :
- Reproduisez les opérations les plus critiques, de sorte que les différents résultats puissent être comparés, à tout moment, pour détecter l'injection d'une erreur.
- Échouer par défaut : Lorsque vous traitez plusieurs conditions (à l'intérieur d'une condition If ou d'un bloc de commutation), échouez toujours dans le cas par défaut, c'est-à-dire lorsque rien d'autre ne correspond.
- Introduisez un comportement aléatoire : L'ajout de petits délais aléatoires avant les opérations cruciales garantit que leur timing n'est jamais prévisible. C'est un élément clé de la détection des intrusions, car il est très difficile pour les pirates de déterminer des schémas de fonctionnement et d'effectuer des attaques temporelles.
- Boucliers de protection : Les fabricants doivent utiliser des boucliers pour couvrir les composants les plus importants et les protéger des manipulations extérieures.
- Détecter les fluctuations anormales : Détectez les fluctuations anormales de la tension, du courant ou d'autres valeurs et levez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
La mise en place d'une défense de votre appareil au niveau de l'application implique :
- Choisir des logiciels et des composants matériels tiers testés et réputés qui peuvent être régulièrement mis à jour.
- Former les développeurs aux meilleures pratiques en matière de sécurité des systèmes embarqués.
- Utilisez un système d'exploitation à micro-noyaux pour vous assurer qu'un nombre minimal d'opérations est exécuté dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, y compris les virus, les chevaux de Troie et les logiciels malveillants.
- Supprimez tous les services inutiles. Votre microprogramme ne doit contenir que ce dont vous avez absolument besoin. Par exemple, si vous n'avez pas besoin de transférer des fichiers ou de capturer des paquets, vous pouvez désactiver les protocoles de transfert de fichiers et les paquets réseau tels que telnet.
- Utilisez des protocoles sécurisés tels que SFTP, IPsec, SSL, TLS, SSH et DNSSEC.
Outils pour la sécurité des systèmes embarqués
Voici une liste non exhaustive d'outils qui peuvent aider à sécuriser les systèmes embarqués :
- Bus blaster: Une plate-forme de débogage à grande vitesse qui peut interagir avec les ports de débogage matériels.
- Salae: Décodez différents protocoles comme Serial, SPI, et I2C etc. Vous pouvez utiliser des analyseurs de protocoles construits par la communauté, ou construire votre propre analyseur.
- Hydrabus: Matériel multi-outils open-source pouvant être utilisé pour le débogage, le piratage et/ou les tests de pénétration du matériel embarqué.
- Exploit: Un cadre open-source de test et d'exploitation de la sécurité de l'Internet des objets (IoT).
- FACT (The Firmware Analysis and Comparison Tool): Cadre utilisé pour automatiser l'analyse de la sécurité des microprogrammes.
- Routersploit: Un cadre d'exploitation open-source pour les dispositifs embarqués.
- Firmadyne: système open-source pour l'émulation et l'analyse dynamique des microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions modernes de sécurité embarquée ?
Bien qu'il existe plusieurs solutions pour déboguer, exploiter et tester les solutions embarquées, elles ne sont pas toujours utilisées. L'accent est mis sur la sécurisation physique de l'appareil, mais on ne fait pas assez d'efforts pour se protéger contre les attaques liées aux logiciels. Même les risques et les vulnérabilités les plus simples et les plus faciles à éviter en matière de sécurité des applications sont encore courants dans les appareils embarqués modernes.
L'une des principales raisons en est le manque de sensibilisation des développeurs à la sécurité intégrée. Selon une enquête menée par Tripwire, 68 % des professionnels de l'informatique estiment que leur personnel n'est pas suffisamment conscient des vulnérabilités potentielles.
Les développeurs ne savent pas, par exemple, quels protocoles de sécurité choisir, quels frameworks éviter, quels composants matériels séparer, comment traiter les données sensibles et comment déterminer quel algorithme de cryptage est le plus sûr. Ce manque général de connaissances et le mépris des meilleures pratiques rendent les applications fonctionnant sur des appareils embarqués susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Le marché de la sécurité embarquée est en plein essor. Les experts estiment que le taux de croissance annuel composé (TCAC) du marché peut atteindre un chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement d'un nombre croissant d'appareils IoT, nous pouvons nous attendre à ce que de nouvelles normes de sécurité intégrées soient établies.
L'adoption croissante de dispositifs médicaux portables va également accroître la demande de solutions de sécurité intégrées fiables. Pour que les appareils contiennent et traitent des données médicales sensibles, ils doivent passer certaines listes de contrôle de sécurité, et nous espérons que cela incitera les vendeurs et les ingénieurs à se concentrer davantage sur la sécurité.
À l'avenir, nous pourrions également disposer de solutions permettant la visibilité, la surveillance et le contrôle à distance des principaux composants logiciels et matériels des dispositifs embarqués. Cela changera véritablement la donne dans le monde de la sécurité des systèmes embarqués.
En fin de compte, les signatures numériques, le cryptage des données, l'ajout de pare-feu, la mise en place d'un contrôle d'accès et la randomisation des opérations ne peuvent vous mener que jusqu'à un certain point. Pour construire des dispositifs réellement sûrs, les développeurs doivent être formés à l'écriture d'un code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation au cours de la phase de conception de l'application contribuent grandement à rendre les systèmes intrinsèquement sûrs .
Comment Secure Code Warrior peut vous aider
Secure Code WarriorLe produit phare de la société - learning platform - comporte de nombreux défis interactifs, courses, et des évaluations qui peuvent aider à former les développeurs à l'écriture de code C/C++ sécurisé. Le contenu de la plateforme est spécifique au cadre et très engageant. Nos défis de codage C/C++:Embed se sont inspirés à la fois de MISRA C, d'AUTOSAR C++ (MISRA C++) et de la CEI.
Les développeurs peuvent s'embarquer dans des voyages d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques à C/C++ et, plus important encore, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès afin d'identifier leurs faiblesses, et même participer à des compétitions de codage amicales avec leurs pairs. Découvrez comment nous aidons les industries de l'automobile et du transport avec nos solutions.
Vous voulez découvrir à quel point nos défis sont interactifs et axés sur l'intégration ? Essayez quelques défis C/C++:Embed sur le site learning platform dès aujourd'hui !
Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationSecure Code Warrior fait du codage sécurisé une expérience positive et attrayante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son propre parcours d'apprentissage, afin que les développeurs compétents en matière de sécurité deviennent les super-héros quotidiens de notre monde connecté.
Secure Code Warrior crée une culture de développeurs axés sur la sécurité en leur donnant les compétences nécessaires pour coder de manière sécurisée. Notre programme phare Agile Learning Platform propose des parcours pertinents basés sur les compétences, des exercices pratiques missions et des outils contextuels permettant aux développeurs d'apprendre, de développer et d'appliquer rapidement leurs compétences pour écrire du code sécurisé.
Les systèmes intégrés sont à l'origine d'un grand nombre de technologies modernes. Qu'il s'agisse du régulateur de vitesse adaptatif de votre voiture ou du Wifi de votre réfrigérateur intelligent. Avec l'augmentation des cyberattaques, il est devenu essentiel de sécuriser ces systèmes.
Les dispositifs intégrés sont des cibles de choix pour les pirates informatiques, car une attaque réussie peut permettre aux intrus d'accéder aux données produites, reçues et traitées par ces dispositifs. Cela peut souvent avoir de graves conséquences pour le système plus large alimenté par le dispositif intégré. Par exemple, l'arrêt d'un dispositif intégré dans un avion de chasse F-15, qui recueille des données provenant de diverses caméras et capteurs, peut entraver considérablement les défenses de l'avion.
Nous avons rédigé cet article pour couvrir tout ce dont vous avez besoin pour commencer à développer des systèmes embarqués sécurisés. Voici ce qui est inclus :
- Qu'est-ce que la sécurité intégrée ?
- Défis rencontrés lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué "sûr" ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème embarqué.
- Certains outils de sécurité intégrés.
- Quelles sont les lacunes des solutions intégrées habituelles ?
- L'avenir de la sécurité intégrée.
Qu'est-ce que la sécurité intégrée ?
La sécurité embarquée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des dispositifs embarqués.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limitations en matière de mémoire et de stockage. L'intégration de mesures de sécurité dans ces systèmes devient donc un défi de taille en matière de conception. Cependant, aussi difficile que cela puisse être, il s'agit d'une nécessité de l'heure.
De nombreux gadgets et machines alimentés par des dispositifs intégrés sont également connectés à l'internet. Cela signifie que les pirates peuvent y accéder sans autorisation et y exécuter des codes malveillants.
Le piratage d'un dispositif intégré peut souvent se propager à d'autres composants connectés, et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un pirate informatique parvienne à prendre le contrôle d'un dispositif intégré qui permet aux conducteurs de mettre leur voiture en pilotage automatique. Le pirate peut alors conduire la voiture hors des routes ou dans la circulation, ce qui peut causer des dégâts considérables.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes embarqués ne reçoit pas l'attention qu'elle mérite. En voici quelques raisons :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des dispositifs embarqués sécurisés. Cela s'explique en partie par le point 2 et en partie par le fait que les applications embarquées sont beaucoup plus complexes que les applications logicielles traditionnelles. Comprendre leurs implications en matière de sécurité et écrire un code sûr et performant pour tous les cas d'utilisation, qui plus est dans un environnement micro-informatique contraint, peut s'avérer difficile.
- Manque de normalisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile tente peu à peu de remédier à cette situation. Ces dernières années, des chercheurs ont publié un certain nombre d'ouvrages traitant de la cybersécurité des véhicules intelligents. Citons notamment la norme SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems", et le règlement WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux dispositifs embarqués nécessitent des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans être testés pour détecter les failles de sécurité et les vulnérabilités.
- Logiciel obsolète
Un micrologiciel obsolète est généralement truffé de bogues et de vulnérabilités potentiellement exploitables. Même s'il peut être particulièrement difficile de mettre à jour périodiquement le micrologiciel d'un petit appareil intégré, il ne faut pas l'ignorer.
- Connexion directe à l'internet
De nombreux systèmes et appareils embarqués sont directement connectés à l'internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feu d'entreprise, qui peuvent détecter et prévenir les attaques du réseau. Les ressources étant limitées, il devient très difficile de mettre en œuvre des niveaux de sécurité rigoureux dans un environnement aussi restreint.
- Attaque à grande échelle
Les dispositifs embarqués sont généralement produits à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les effets d'une attaque contre un système embarqué peut donc constituer un défi de taille.
Qu'est-ce qui rend un système embarqué sûr ?
Dans les sections suivantes, nous examinerons certaines caractéristiques logicielles et matérielles des systèmes embarqués sécurisés.
Meilleures pratiques en matière de sécurité du matériel
Un système embarqué sécurisé a :
- Un environnement d'exécution fiable
Un environnement d'exécution de confiance (TEE) permet d'isoler au niveau matériel les opérations critiques pour la sécurité. Par exemple, l'authentification de l'utilisateur peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Des ressources matérielles réparties de manière appropriée
Les différents composants matériels tels que le(s) processeur(s), la mémoire cache, la mémoire et les interfaces réseau, etc. devraient être séparés de manière appropriée, en assurant leurs fonctions de la manière la plus indépendante possible. Cela permet d'éviter qu'une erreur dans un composant ne se propage à d'autres composants.
- Protection de l'espace exécutable (ESP)
La protection de l'espace exécutable, ou ESP, consiste à marquer certaines régions de la mémoire comme non exécutables. Si quelqu'un tente d'exécuter un code dans ces régions marquées, une exception est levée.
Meilleures pratiques en matière de sécurité des logiciels
Les meilleures pratiques suivantes doivent être gardées à l'esprit lors de la création d'un logiciel embarqué :
- Utilisez le démarrage sécurisé :
Lorsqu'un appareil embarqué démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela permet de s'assurer que la séquence de démarrage est correcte et que le logiciel (micrologiciel et toute autre donnée pertinente) n'a pas été altéré.
- Utiliser un système d'exploitation à micro-noyau
Un système d'exploitation à micro-noyau est beaucoup plus petit qu'un système d'exploitation traditionnel et ne contient qu'un sous-ensemble de ses fonctionnalités. L'espace du noyau est minuscule et de nombreux services aux utilisateurs (comme la gestion du système de fichiers, etc.) sont conservés dans un espace séparé, appelé espace utilisateur. Comme il y a moins de code et d'opérations exécutées dans l'espace du noyau, la surface d'attaque est considérablement réduite.
- Utiliser des applications logicielles correctement emballées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, celle-ci ne doit pas être installée globalement sur le système d'exploitation. Elle doit plutôt faire partie du paquetage/conteneur de l'application.
- Valider toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement assainies et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application récupère des données à partir d'une intégration API externe et fait basculer un paramètre en fonction de ces données, les données reçues doivent être rigoureusement validées avant que le paramètre ne soit modifié.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées, mots de passe, etc. sensibles stockés sur un appareil embarqué doivent être protégés. Cela se fait généralement par le biais du cryptage. Les clés privées utilisées pour crypter les données doivent être stockées dans un matériel de sécurité dédié et conçu à cet effet.
La pyramide de sécurité -- Sécurité de bout en bout pour les systèmes embarqués
L'époque où la sécurité n'était qu'un pis-aller est révolue. Une exigence non fonctionnelle. Aujourd'hui, la sécurité doit être intrinsèque. Les appareils doivent être sécurisés dès leur conception. À cette fin, il est essentiel de mettre en œuvre des exigences de sécurité de bout en bout dans un environnement embarqué. Cela signifie qu'il faut penser à la sécurité lors du choix du matériel, de la définition de l'architecture du système, de la conception du système et, bien sûr, de l'écriture du code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel est déficient, vous serez susceptible d'être attaqué. Les techniques de sécurité sur puce peuvent permettre un démarrage sécurisé et une gestion efficace des fonctions cryptographiques et des secrets. Certains composants matériels peuvent également permettre au système d'exploitation d'offrir diverses fonctions de sécurité telles que la détection d'anomalies dans les appels système, le cryptage du système de fichiers et les politiques de contrôle d'accès.
Un système tolérant aux pannes
Il existe de nombreuses raisons de concevoir un système tolérant aux fautes, et éviter les attaques par analyse différentielle des fautes n'est que l'une d'entre elles. Dans ce type d'attaque, un pirate potentiel peut utiliser des techniques d'injection de fautes pour tenter de produire des erreurs dans un dispositif embarqué. Cependant, il existe plusieurs façons de détecter ces fautes et de s'en protéger :
- Reproduisez les opérations les plus critiques, de sorte que les différents résultats puissent être comparés, à tout moment, pour détecter l'injection d'une erreur.
- Échouer par défaut : Lorsque vous traitez plusieurs conditions (à l'intérieur d'une condition If ou d'un bloc de commutation), échouez toujours dans le cas par défaut, c'est-à-dire lorsque rien d'autre ne correspond.
- Introduisez un comportement aléatoire : L'ajout de petits délais aléatoires avant les opérations cruciales garantit que leur timing n'est jamais prévisible. C'est un élément clé de la détection des intrusions, car il est très difficile pour les pirates de déterminer des schémas de fonctionnement et d'effectuer des attaques temporelles.
- Boucliers de protection : Les fabricants doivent utiliser des boucliers pour couvrir les composants les plus importants et les protéger des manipulations extérieures.
- Détecter les fluctuations anormales : Détectez les fluctuations anormales de la tension, du courant ou d'autres valeurs et levez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
La mise en place d'une défense de votre appareil au niveau de l'application implique :
- Choisir des logiciels et des composants matériels tiers testés et réputés qui peuvent être régulièrement mis à jour.
- Former les développeurs aux meilleures pratiques en matière de sécurité des systèmes embarqués.
- Utilisez un système d'exploitation à micro-noyaux pour vous assurer qu'un nombre minimal d'opérations est exécuté dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, y compris les virus, les chevaux de Troie et les logiciels malveillants.
- Supprimez tous les services inutiles. Votre microprogramme ne doit contenir que ce dont vous avez absolument besoin. Par exemple, si vous n'avez pas besoin de transférer des fichiers ou de capturer des paquets, vous pouvez désactiver les protocoles de transfert de fichiers et les paquets réseau tels que telnet.
- Utilisez des protocoles sécurisés tels que SFTP, IPsec, SSL, TLS, SSH et DNSSEC.
Outils pour la sécurité des systèmes embarqués
Voici une liste non exhaustive d'outils qui peuvent aider à sécuriser les systèmes embarqués :
- Bus blaster: Une plate-forme de débogage à grande vitesse qui peut interagir avec les ports de débogage matériels.
- Salae: Décodez différents protocoles comme Serial, SPI, et I2C etc. Vous pouvez utiliser des analyseurs de protocoles construits par la communauté, ou construire votre propre analyseur.
- Hydrabus: Matériel multi-outils open-source pouvant être utilisé pour le débogage, le piratage et/ou les tests de pénétration du matériel embarqué.
- Exploit: Un cadre open-source de test et d'exploitation de la sécurité de l'Internet des objets (IoT).
- FACT (The Firmware Analysis and Comparison Tool): Cadre utilisé pour automatiser l'analyse de la sécurité des microprogrammes.
- Routersploit: Un cadre d'exploitation open-source pour les dispositifs embarqués.
- Firmadyne: système open-source pour l'émulation et l'analyse dynamique des microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions modernes de sécurité embarquée ?
Bien qu'il existe plusieurs solutions pour déboguer, exploiter et tester les solutions embarquées, elles ne sont pas toujours utilisées. L'accent est mis sur la sécurisation physique de l'appareil, mais on ne fait pas assez d'efforts pour se protéger contre les attaques liées aux logiciels. Même les risques et les vulnérabilités les plus simples et les plus faciles à éviter en matière de sécurité des applications sont encore courants dans les appareils embarqués modernes.
L'une des principales raisons en est le manque de sensibilisation des développeurs à la sécurité intégrée. Selon une enquête menée par Tripwire, 68 % des professionnels de l'informatique estiment que leur personnel n'est pas suffisamment conscient des vulnérabilités potentielles.
Les développeurs ne savent pas, par exemple, quels protocoles de sécurité choisir, quels frameworks éviter, quels composants matériels séparer, comment traiter les données sensibles et comment déterminer quel algorithme de cryptage est le plus sûr. Ce manque général de connaissances et le mépris des meilleures pratiques rendent les applications fonctionnant sur des appareils embarqués susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Le marché de la sécurité embarquée est en plein essor. Les experts estiment que le taux de croissance annuel composé (TCAC) du marché peut atteindre un chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement d'un nombre croissant d'appareils IoT, nous pouvons nous attendre à ce que de nouvelles normes de sécurité intégrées soient établies.
L'adoption croissante de dispositifs médicaux portables va également accroître la demande de solutions de sécurité intégrées fiables. Pour que les appareils contiennent et traitent des données médicales sensibles, ils doivent passer certaines listes de contrôle de sécurité, et nous espérons que cela incitera les vendeurs et les ingénieurs à se concentrer davantage sur la sécurité.
À l'avenir, nous pourrions également disposer de solutions permettant la visibilité, la surveillance et le contrôle à distance des principaux composants logiciels et matériels des dispositifs embarqués. Cela changera véritablement la donne dans le monde de la sécurité des systèmes embarqués.
En fin de compte, les signatures numériques, le cryptage des données, l'ajout de pare-feu, la mise en place d'un contrôle d'accès et la randomisation des opérations ne peuvent vous mener que jusqu'à un certain point. Pour construire des dispositifs réellement sûrs, les développeurs doivent être formés à l'écriture d'un code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation au cours de la phase de conception de l'application contribuent grandement à rendre les systèmes intrinsèquement sûrs .
Comment Secure Code Warrior peut vous aider
Secure Code WarriorLe produit phare de la société - learning platform - comporte de nombreux défis interactifs, courses, et des évaluations qui peuvent aider à former les développeurs à l'écriture de code C/C++ sécurisé. Le contenu de la plateforme est spécifique au cadre et très engageant. Nos défis de codage C/C++:Embed se sont inspirés à la fois de MISRA C, d'AUTOSAR C++ (MISRA C++) et de la CEI.
Les développeurs peuvent s'embarquer dans des voyages d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques à C/C++ et, plus important encore, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès afin d'identifier leurs faiblesses, et même participer à des compétitions de codage amicales avec leurs pairs. Découvrez comment nous aidons les industries de l'automobile et du transport avec nos solutions.
Vous voulez découvrir à quel point nos défis sont interactifs et axés sur l'intégration ? Essayez quelques défis C/C++:Embed sur le site learning platform dès aujourd'hui !
Table des matières
Secure Code Warrior fait du codage sécurisé une expérience positive et attrayante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son propre parcours d'apprentissage, afin que les développeurs compétents en matière de sécurité deviennent les super-héros quotidiens de notre monde connecté.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
Évaluation comparative des compétences en matière de sécurité : Rationalisation de la conception sécurisée dans l'entreprise
Le mouvement "Secure-by-Design" (conception sécurisée) est l'avenir du développement de logiciels sécurisés. Découvrez les éléments clés que les entreprises doivent garder à l'esprit lorsqu'elles envisagent une initiative de conception sécurisée.
DigitalOcean réduit sa dette de sécurité avec Secure Code Warrior
L'utilisation par DigitalOcean de la formation Secure Code Warrior a considérablement réduit la dette de sécurité, permettant aux équipes de se concentrer davantage sur l'innovation et la productivité. L'amélioration de la sécurité a renforcé la qualité des produits et l'avantage concurrentiel de l'entreprise. À l'avenir, le score de confiance SCW les aidera à améliorer leurs pratiques de sécurité et à continuer à stimuler l'innovation.
Ressources pour vous aider à démarrer
Sécurité réactive contre sécurité préventive : La prévention est un meilleur remède
L'idée d'apporter une sécurité préventive aux codes et systèmes existants en même temps qu'aux applications plus récentes peut sembler décourageante, mais une approche "Secure-by-Design", mise en œuvre en améliorant les compétences des développeurs, permet d'appliquer les meilleures pratiques de sécurité à ces systèmes. C'est la meilleure chance qu'ont de nombreuses organisations d'améliorer leur sécurité.
Les avantages de l'évaluation des compétences des développeurs en matière de sécurité
L'importance croissante accordée au code sécurisé et aux principes de conception sécurisée exige que les développeurs soient formés à la cybersécurité dès le début du cycle de développement durable, et que des outils tels que le Trust Score de Secure Code Warriorles aident à mesurer et à améliorer leurs progrès.
Assurer le succès des initiatives de conception sécurisée de l'entreprise
Notre dernier document de recherche, Benchmarking Security Skills : Streamlining Secure-by-Design in the Enterprise est le résultat d'une analyse approfondie d'initiatives réelles de conception sécurisée au niveau de l'entreprise, et de l'élaboration d'approches de meilleures pratiques basées sur des conclusions fondées sur des données.
Plongée en profondeur : Naviguer dans la vulnérabilité critique de CUPS dans les systèmes GNU-Linux
Découvrez les derniers défis de sécurité auxquels sont confrontés les utilisateurs de Linux en explorant les récentes vulnérabilités de haute sévérité dans le système d'impression commun d'UNIX (CUPS). Apprenez comment ces problèmes peuvent conduire à une potentielle exécution de code à distance (RCE) et ce que vous pouvez faire pour protéger vos systèmes.