
Pourquoi la sécurité de bout en bout est importante pour les systèmes embarqués
Les systèmes embarqués contribuent à fournir de nombreuses technologies modernes. Du régulateur de vitesse adaptatif de votre voiture au Wifi de votre réfrigérateur intelligent. Face à la recrudescence des cyberattaques, la sécurisation de ces systèmes est devenue essentielle.
Les appareils embarqués sont des cibles privilégiées pour le piratage, car une attaque réussie peut permettre aux intrus d'accéder aux données qu'ils produisent, reçoivent et traitent. Cela peut souvent avoir de graves conséquences pour l'ensemble du système alimenté par le périphérique intégré. Par exemple, arrêt un dispositif intégré à l'avion de chasse F-15, qui collecte des données à partir de diverses caméras et capteurs, peut considérablement entraver les défenses de l'avion.
Nous avons écrit 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 ?
- Difficultés rencontrées lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué « sécurisé » ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème intégré.
- Certains outils de sécurité intégrés.
- Qu'est-ce qui manque aux solutions embarquées classiques ?
- L'avenir de la sécurité embarquée.
Qu'est-ce que la sécurité intégrée ?
La sécurité intégrée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des appareils intégrés.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limites en matière de mémoire et de stockage. Leur intégration de mesures de sécurité devient donc un énorme défi de conception. Cependant, aussi difficile que cela puisse être, c'est un besoin du moment.
De nombreux gadgets et machines alimentés par des appareils intégrés sont également connectés à Internet. Cela signifie que les pirates peuvent y accéder sans autorisation et exécuter n'importe quel code malveillant.
Le piratage d'un appareil embarqué peut souvent se propager à d'autres composants connectés et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un attaquant soit capable de prendre le contrôle d'un périphérique intégré qui permet aux conducteurs de mettre leur voiture en mode pilote automatique. Le pirate informatique peut alors diriger la voiture hors route ou dans la circulation, ce qui peut causer de gros dégâts.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes intégrés ne reçoit pas l'attention qu'elle mérite. Voici quelques raisons pour lesquelles :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des appareils intégrés sécurisés. Cela est dû en partie au point #2, et en partie au 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, y compris dans un environnement restreint de micro-ordinateurs, peut s'avérer difficile.
- Absence de standardisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile essaie lentement de changer cela. Au cours des dernières années, les chercheurs ont publié de nombreuses publications traitant des considérations de cybersécurité pour les véhicules intelligents. Parmi les plus remarquables, citons SAE J3061, « Guide de cybersécurité pour les systèmes cyberphysiques des véhicules : » et Règlement du WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux appareils intégrés nécessitaient des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans avoir été testés pour détecter des failles de sécurité ou des vulnérabilités.
- Logiciel obsolète
Un microprogramme 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 firmware d'un petit appareil intégré, ce n'est pas quelque chose qui peut être ignoré.
- Connectivité Internet directe
De nombreux systèmes et appareils embarqués sont directement connectés à Internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feux d'entreprise, qui peuvent détecter et empêcher les attaques 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 appareils intégrés sont généralement fabriqués à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les impacts d'une attaque de système embarqué peut donc représenter un défi de taille.
Qu'est-ce qui caractérise un système embarqué sécurisé ?
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é matérielle
Un système embarqué sécurisé possède :
- Un environnement d'exécution fiable
Un environnement d'exécution sécurisé (TEE) permet d'isoler au niveau matériel les opérations critiques en matière de sécurité. Par exemple, l'authentification des utilisateurs peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Ressources matérielles partitionnées de manière appropriée
Les différents composants matériels tels que le ou les processeurs, le cache, la mémoire et les interfaces réseau, etc. doivent être séparés de manière appropriée, afin de fournir 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 mémoire comme non exécutables. Si quelqu'un tente d'exécuter du code dans ces zones marquées, une exception est levée.
Meilleures pratiques en matière de sécurité logicielle
Les meilleures pratiques suivantes doivent être prises en compte lors de la création de logiciels embarqués :
- Utilisez le démarrage sécurisé :
Lorsqu'un périphérique intégré démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela garantit que la séquence de démarrage est correcte et que le logiciel (microprogramme 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 contient un sous-ensemble de ses fonctionnalités. L'espace du noyau est restreint et de nombreux services utilisateurs (tels que la gestion des systèmes 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 packagées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, elle ne doit pas être installée globalement sur le système d'exploitation. Il devrait plutôt faire partie du dossier ou du contenant de la demande.
- Validez toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement nettoyées et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application extrait des données à partir d'une intégration d'API externe et modifie certains paramètres en fonction de celle-ci, les données reçues doivent être rigoureusement validées avant de modifier le paramètre.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées et mots de passe sensibles, etc. qui sont stockés sur un appareil intégré doivent être protégés. Cela se fait généralement par cryptage. Les clés privées utilisées pour chiffrer les données doivent être stockées dans un matériel de sécurité dédié et spécialement conçu.
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'une question secondaire 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 intégré. Cela signifie : pensez à la sécurité lors du choix de votre matériel, lors de la définition de l'architecture de votre système, lors de la conception de votre système et, bien sûr, lors de l'écriture de code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel fait défaut, vous serez vulnérable aux attaques. Les techniques de sécurité intégrées 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 de proposer diverses fonctionnalités de sécurité, telles que la détection des anomalies liées aux 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 pannes, et éviter les attaques par analyse différentielle des défauts n'est que l'une d'entre elles. Lors d'une telle attaque, un pirate informatique potentiel peut utiliser des techniques d'injection de défauts pour tenter de générer des erreurs dans un périphérique intégré. Cependant, il existe plusieurs moyens de détecter de tels défauts et de s'en protéger :
- Répliquez les opérations les plus critiques afin de pouvoir comparer différentes sorties, à tout moment, afin de détecter l'injection d'un défaut.
- Échec par défaut : lorsque vous gérez plusieurs conditions (dans une condition If ou 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 calendrier n'est jamais prévisible. C'est un élément essentiel de la détection des intrusions, car il est très difficile pour les pirates de déterminer les modes de fonctionnement et d'effectuer des attaques temporelles.
- Écrans de protection : les fabricants doivent utiliser des écrans pour recouvrir les composants les plus cruciaux, afin de les protéger des manipulations externes.
- Détectez les fluctuations anormales : détectez les fluctuations anormales de tension, de courant ou d'autres valeurs et déclenchez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
Le renforcement de la défense de votre appareil au niveau de l'application implique :
- Choisir des composants logiciels et 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-noyau pour vous assurer qu'un nombre minimal d'opérations sont exécutées dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, notamment les virus, les chevaux de Troie et les malwares.
- Supprimez tous les services inutiles. Votre firmware ne doit contenir que ce dont vous avez absolument besoin. Par exemple, il se peut que vous n'ayez pas besoin de transférer des fichiers ou de capturer des paquets. Vous pouvez donc désactiver les protocoles de transfert de fichiers et les packages 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 vous aider à sécuriser les systèmes embarqués :
- Blaster de bus: plateforme de débogage à haut débit qui peut interagir avec les ports de débogage matériels.
- Salade: Décodez divers protocoles tels que Serial, SPI et I2C, etc. Vous pouvez utiliser des analyseurs de protocoles créés par la communauté ou créer les vôtres.
- Hydrabus: matériel multi-outils open source qui peut être utilisé pour le débogage, le piratage et/ou les tests d'intrusion du matériel embarqué.
- Exploiter: Un cadre de test et d'exploitation de la sécurité de l'Internet des objets (IoT) open source.
- FACT (L'outil d'analyse et de comparaison des micrologiciels): Framework utilisé pour automatiser l'analyse de la sécurité du microprogramme.
- Routeurs Sploit: Un framework d'exploitation open source pour les appareils embarqués.
- Firmadyne: Système open source pour l'émulation et l'analyse dynamique de microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions de sécurité intégrées modernes ?
Bien qu'il existe différentes solutions disponibles pour le débogage, l'exploitation et le test de solutions intégrées, elles ne sont pas facilement utilisées. L'accent reste mis sur la sécurisation physique de l'appareil, mais les efforts déployés pour se protéger contre les attaques liées aux logiciels sont insuffisants. Même les risques et vulnérabilités de sécurité des applications les plus simples et facilement évitables sont encore courants sur les appareils embarqués modernes.
Cela s'explique en grande partie par 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 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 ce mépris des meilleures pratiques rendent les applications exécutées sur des appareils intégrés susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Beaucoup de travail est en cours sur le marché de la sécurité intégrée. Les experts estiment que le taux de croissance annuel composé (CAGR) du marché peut atteindre chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement de plus en plus 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 augmenter 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 satisfaire à certaines listes de sécurité, et nous espérons que cela incitera les fournisseurs 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 appareils 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 chiffrement des données, l'ajout de pare-feux, la mise en œuvre du contrôle d'accès et la randomisation des opérations ne peuvent pas vous mener loin. Pour créer des appareils réellement sécurisés, les développeurs doivent être formés à l'écriture de code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation lors de la phase de conception des applications contribuent grandement à la création de systèmes intrinsèquement sécurisé.
Comment Secure Code Warrior peut vous aider
Le produit phare de Secure Code Warrior, la plateforme d'apprentissage, propose de nombreux défis, cours et évaluations interactifs qui peuvent aider à former les développeurs à écrire du code C/C++ sécurisé. Le contenu de la plateforme est spécifique au framework et très engageant. Nos défis de codage C/C++:Embed se sont inspirés de MISRA C, AUTOSAR C++ (MISRA C++) et IEC.
Les développeurs peuvent se lancer dans des parcours d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques au C/C++ et, surtout, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès pour identifier leurs faiblesses et même participer à des compétitions de codage amicales avec leurs pairs. En savoir plus sur comment nous aidons les industries de l'automobile et des transports grâce à nos solutions.
Vous voulez découvrir dans quelle mesure nos défis sont interactifs et intégrés ? Essayez quelques défis liés à C/C++:Embed sur la plateforme d'apprentissage dès aujourd'hui !


Cet article donne un aperçu de la sécurisation des systèmes embarqués. Nous commencerons par une définition de base, puis aborderons les défis liés à la sécurité intégrée, certaines solutions typiques et les énigmes manquantes.
Secure Code Warrior fait du codage sécurisé une expérience positive et engageante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son parcours d'apprentissage préféré, afin que les développeurs doués pour la sécurité deviennent les super-héros du quotidien de notre monde connecté.

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenSecure Code Warrior fait du codage sécurisé une expérience positive et engageante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son parcours d'apprentissage préféré, afin que les développeurs doués pour la sécurité deviennent les super-héros du quotidien de notre monde connecté.
Cet article a été rédigé par l'équipe d'experts du secteur de Secure Code Warrior, qui s'est engagée à donner aux développeurs les connaissances et les compétences nécessaires pour créer des logiciels sécurisés dès le départ. S'appuyant sur une expertise approfondie en matière de pratiques de codage sécurisé, de tendances du secteur et de connaissances du monde réel.


Les systèmes embarqués contribuent à fournir de nombreuses technologies modernes. Du régulateur de vitesse adaptatif de votre voiture au Wifi de votre réfrigérateur intelligent. Face à la recrudescence des cyberattaques, la sécurisation de ces systèmes est devenue essentielle.
Les appareils embarqués sont des cibles privilégiées pour le piratage, car une attaque réussie peut permettre aux intrus d'accéder aux données qu'ils produisent, reçoivent et traitent. Cela peut souvent avoir de graves conséquences pour l'ensemble du système alimenté par le périphérique intégré. Par exemple, arrêt un dispositif intégré à l'avion de chasse F-15, qui collecte des données à partir de diverses caméras et capteurs, peut considérablement entraver les défenses de l'avion.
Nous avons écrit 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 ?
- Difficultés rencontrées lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué « sécurisé » ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème intégré.
- Certains outils de sécurité intégrés.
- Qu'est-ce qui manque aux solutions embarquées classiques ?
- L'avenir de la sécurité embarquée.
Qu'est-ce que la sécurité intégrée ?
La sécurité intégrée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des appareils intégrés.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limites en matière de mémoire et de stockage. Leur intégration de mesures de sécurité devient donc un énorme défi de conception. Cependant, aussi difficile que cela puisse être, c'est un besoin du moment.
De nombreux gadgets et machines alimentés par des appareils intégrés sont également connectés à Internet. Cela signifie que les pirates peuvent y accéder sans autorisation et exécuter n'importe quel code malveillant.
Le piratage d'un appareil embarqué peut souvent se propager à d'autres composants connectés et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un attaquant soit capable de prendre le contrôle d'un périphérique intégré qui permet aux conducteurs de mettre leur voiture en mode pilote automatique. Le pirate informatique peut alors diriger la voiture hors route ou dans la circulation, ce qui peut causer de gros dégâts.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes intégrés ne reçoit pas l'attention qu'elle mérite. Voici quelques raisons pour lesquelles :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des appareils intégrés sécurisés. Cela est dû en partie au point #2, et en partie au 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, y compris dans un environnement restreint de micro-ordinateurs, peut s'avérer difficile.
- Absence de standardisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile essaie lentement de changer cela. Au cours des dernières années, les chercheurs ont publié de nombreuses publications traitant des considérations de cybersécurité pour les véhicules intelligents. Parmi les plus remarquables, citons SAE J3061, « Guide de cybersécurité pour les systèmes cyberphysiques des véhicules : » et Règlement du WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux appareils intégrés nécessitaient des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans avoir été testés pour détecter des failles de sécurité ou des vulnérabilités.
- Logiciel obsolète
Un microprogramme 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 firmware d'un petit appareil intégré, ce n'est pas quelque chose qui peut être ignoré.
- Connectivité Internet directe
De nombreux systèmes et appareils embarqués sont directement connectés à Internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feux d'entreprise, qui peuvent détecter et empêcher les attaques 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 appareils intégrés sont généralement fabriqués à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les impacts d'une attaque de système embarqué peut donc représenter un défi de taille.
Qu'est-ce qui caractérise un système embarqué sécurisé ?
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é matérielle
Un système embarqué sécurisé possède :
- Un environnement d'exécution fiable
Un environnement d'exécution sécurisé (TEE) permet d'isoler au niveau matériel les opérations critiques en matière de sécurité. Par exemple, l'authentification des utilisateurs peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Ressources matérielles partitionnées de manière appropriée
Les différents composants matériels tels que le ou les processeurs, le cache, la mémoire et les interfaces réseau, etc. doivent être séparés de manière appropriée, afin de fournir 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 mémoire comme non exécutables. Si quelqu'un tente d'exécuter du code dans ces zones marquées, une exception est levée.
Meilleures pratiques en matière de sécurité logicielle
Les meilleures pratiques suivantes doivent être prises en compte lors de la création de logiciels embarqués :
- Utilisez le démarrage sécurisé :
Lorsqu'un périphérique intégré démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela garantit que la séquence de démarrage est correcte et que le logiciel (microprogramme 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 contient un sous-ensemble de ses fonctionnalités. L'espace du noyau est restreint et de nombreux services utilisateurs (tels que la gestion des systèmes 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 packagées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, elle ne doit pas être installée globalement sur le système d'exploitation. Il devrait plutôt faire partie du dossier ou du contenant de la demande.
- Validez toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement nettoyées et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application extrait des données à partir d'une intégration d'API externe et modifie certains paramètres en fonction de celle-ci, les données reçues doivent être rigoureusement validées avant de modifier le paramètre.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées et mots de passe sensibles, etc. qui sont stockés sur un appareil intégré doivent être protégés. Cela se fait généralement par cryptage. Les clés privées utilisées pour chiffrer les données doivent être stockées dans un matériel de sécurité dédié et spécialement conçu.
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'une question secondaire 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 intégré. Cela signifie : pensez à la sécurité lors du choix de votre matériel, lors de la définition de l'architecture de votre système, lors de la conception de votre système et, bien sûr, lors de l'écriture de code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel fait défaut, vous serez vulnérable aux attaques. Les techniques de sécurité intégrées 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 de proposer diverses fonctionnalités de sécurité, telles que la détection des anomalies liées aux 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 pannes, et éviter les attaques par analyse différentielle des défauts n'est que l'une d'entre elles. Lors d'une telle attaque, un pirate informatique potentiel peut utiliser des techniques d'injection de défauts pour tenter de générer des erreurs dans un périphérique intégré. Cependant, il existe plusieurs moyens de détecter de tels défauts et de s'en protéger :
- Répliquez les opérations les plus critiques afin de pouvoir comparer différentes sorties, à tout moment, afin de détecter l'injection d'un défaut.
- Échec par défaut : lorsque vous gérez plusieurs conditions (dans une condition If ou 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 calendrier n'est jamais prévisible. C'est un élément essentiel de la détection des intrusions, car il est très difficile pour les pirates de déterminer les modes de fonctionnement et d'effectuer des attaques temporelles.
- Écrans de protection : les fabricants doivent utiliser des écrans pour recouvrir les composants les plus cruciaux, afin de les protéger des manipulations externes.
- Détectez les fluctuations anormales : détectez les fluctuations anormales de tension, de courant ou d'autres valeurs et déclenchez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
Le renforcement de la défense de votre appareil au niveau de l'application implique :
- Choisir des composants logiciels et 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-noyau pour vous assurer qu'un nombre minimal d'opérations sont exécutées dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, notamment les virus, les chevaux de Troie et les malwares.
- Supprimez tous les services inutiles. Votre firmware ne doit contenir que ce dont vous avez absolument besoin. Par exemple, il se peut que vous n'ayez pas besoin de transférer des fichiers ou de capturer des paquets. Vous pouvez donc désactiver les protocoles de transfert de fichiers et les packages 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 vous aider à sécuriser les systèmes embarqués :
- Blaster de bus: plateforme de débogage à haut débit qui peut interagir avec les ports de débogage matériels.
- Salade: Décodez divers protocoles tels que Serial, SPI et I2C, etc. Vous pouvez utiliser des analyseurs de protocoles créés par la communauté ou créer les vôtres.
- Hydrabus: matériel multi-outils open source qui peut être utilisé pour le débogage, le piratage et/ou les tests d'intrusion du matériel embarqué.
- Exploiter: Un cadre de test et d'exploitation de la sécurité de l'Internet des objets (IoT) open source.
- FACT (L'outil d'analyse et de comparaison des micrologiciels): Framework utilisé pour automatiser l'analyse de la sécurité du microprogramme.
- Routeurs Sploit: Un framework d'exploitation open source pour les appareils embarqués.
- Firmadyne: Système open source pour l'émulation et l'analyse dynamique de microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions de sécurité intégrées modernes ?
Bien qu'il existe différentes solutions disponibles pour le débogage, l'exploitation et le test de solutions intégrées, elles ne sont pas facilement utilisées. L'accent reste mis sur la sécurisation physique de l'appareil, mais les efforts déployés pour se protéger contre les attaques liées aux logiciels sont insuffisants. Même les risques et vulnérabilités de sécurité des applications les plus simples et facilement évitables sont encore courants sur les appareils embarqués modernes.
Cela s'explique en grande partie par 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 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 ce mépris des meilleures pratiques rendent les applications exécutées sur des appareils intégrés susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Beaucoup de travail est en cours sur le marché de la sécurité intégrée. Les experts estiment que le taux de croissance annuel composé (CAGR) du marché peut atteindre chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement de plus en plus 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 augmenter 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 satisfaire à certaines listes de sécurité, et nous espérons que cela incitera les fournisseurs 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 appareils 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 chiffrement des données, l'ajout de pare-feux, la mise en œuvre du contrôle d'accès et la randomisation des opérations ne peuvent pas vous mener loin. Pour créer des appareils réellement sécurisés, les développeurs doivent être formés à l'écriture de code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation lors de la phase de conception des applications contribuent grandement à la création de systèmes intrinsèquement sécurisé.
Comment Secure Code Warrior peut vous aider
Le produit phare de Secure Code Warrior, la plateforme d'apprentissage, propose de nombreux défis, cours et évaluations interactifs qui peuvent aider à former les développeurs à écrire du code C/C++ sécurisé. Le contenu de la plateforme est spécifique au framework et très engageant. Nos défis de codage C/C++:Embed se sont inspirés de MISRA C, AUTOSAR C++ (MISRA C++) et IEC.
Les développeurs peuvent se lancer dans des parcours d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques au C/C++ et, surtout, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès pour identifier leurs faiblesses et même participer à des compétitions de codage amicales avec leurs pairs. En savoir plus sur comment nous aidons les industries de l'automobile et des transports grâce à nos solutions.
Vous voulez découvrir dans quelle mesure nos défis sont interactifs et intégrés ? Essayez quelques défis liés à C/C++:Embed sur la plateforme d'apprentissage dès aujourd'hui !

Les systèmes embarqués contribuent à fournir de nombreuses technologies modernes. Du régulateur de vitesse adaptatif de votre voiture au Wifi de votre réfrigérateur intelligent. Face à la recrudescence des cyberattaques, la sécurisation de ces systèmes est devenue essentielle.
Les appareils embarqués sont des cibles privilégiées pour le piratage, car une attaque réussie peut permettre aux intrus d'accéder aux données qu'ils produisent, reçoivent et traitent. Cela peut souvent avoir de graves conséquences pour l'ensemble du système alimenté par le périphérique intégré. Par exemple, arrêt un dispositif intégré à l'avion de chasse F-15, qui collecte des données à partir de diverses caméras et capteurs, peut considérablement entraver les défenses de l'avion.
Nous avons écrit 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 ?
- Difficultés rencontrées lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué « sécurisé » ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème intégré.
- Certains outils de sécurité intégrés.
- Qu'est-ce qui manque aux solutions embarquées classiques ?
- L'avenir de la sécurité embarquée.
Qu'est-ce que la sécurité intégrée ?
La sécurité intégrée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des appareils intégrés.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limites en matière de mémoire et de stockage. Leur intégration de mesures de sécurité devient donc un énorme défi de conception. Cependant, aussi difficile que cela puisse être, c'est un besoin du moment.
De nombreux gadgets et machines alimentés par des appareils intégrés sont également connectés à Internet. Cela signifie que les pirates peuvent y accéder sans autorisation et exécuter n'importe quel code malveillant.
Le piratage d'un appareil embarqué peut souvent se propager à d'autres composants connectés et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un attaquant soit capable de prendre le contrôle d'un périphérique intégré qui permet aux conducteurs de mettre leur voiture en mode pilote automatique. Le pirate informatique peut alors diriger la voiture hors route ou dans la circulation, ce qui peut causer de gros dégâts.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes intégrés ne reçoit pas l'attention qu'elle mérite. Voici quelques raisons pour lesquelles :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des appareils intégrés sécurisés. Cela est dû en partie au point #2, et en partie au 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, y compris dans un environnement restreint de micro-ordinateurs, peut s'avérer difficile.
- Absence de standardisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile essaie lentement de changer cela. Au cours des dernières années, les chercheurs ont publié de nombreuses publications traitant des considérations de cybersécurité pour les véhicules intelligents. Parmi les plus remarquables, citons SAE J3061, « Guide de cybersécurité pour les systèmes cyberphysiques des véhicules : » et Règlement du WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux appareils intégrés nécessitaient des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans avoir été testés pour détecter des failles de sécurité ou des vulnérabilités.
- Logiciel obsolète
Un microprogramme 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 firmware d'un petit appareil intégré, ce n'est pas quelque chose qui peut être ignoré.
- Connectivité Internet directe
De nombreux systèmes et appareils embarqués sont directement connectés à Internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feux d'entreprise, qui peuvent détecter et empêcher les attaques 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 appareils intégrés sont généralement fabriqués à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les impacts d'une attaque de système embarqué peut donc représenter un défi de taille.
Qu'est-ce qui caractérise un système embarqué sécurisé ?
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é matérielle
Un système embarqué sécurisé possède :
- Un environnement d'exécution fiable
Un environnement d'exécution sécurisé (TEE) permet d'isoler au niveau matériel les opérations critiques en matière de sécurité. Par exemple, l'authentification des utilisateurs peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Ressources matérielles partitionnées de manière appropriée
Les différents composants matériels tels que le ou les processeurs, le cache, la mémoire et les interfaces réseau, etc. doivent être séparés de manière appropriée, afin de fournir 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 mémoire comme non exécutables. Si quelqu'un tente d'exécuter du code dans ces zones marquées, une exception est levée.
Meilleures pratiques en matière de sécurité logicielle
Les meilleures pratiques suivantes doivent être prises en compte lors de la création de logiciels embarqués :
- Utilisez le démarrage sécurisé :
Lorsqu'un périphérique intégré démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela garantit que la séquence de démarrage est correcte et que le logiciel (microprogramme 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 contient un sous-ensemble de ses fonctionnalités. L'espace du noyau est restreint et de nombreux services utilisateurs (tels que la gestion des systèmes 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 packagées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, elle ne doit pas être installée globalement sur le système d'exploitation. Il devrait plutôt faire partie du dossier ou du contenant de la demande.
- Validez toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement nettoyées et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application extrait des données à partir d'une intégration d'API externe et modifie certains paramètres en fonction de celle-ci, les données reçues doivent être rigoureusement validées avant de modifier le paramètre.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées et mots de passe sensibles, etc. qui sont stockés sur un appareil intégré doivent être protégés. Cela se fait généralement par cryptage. Les clés privées utilisées pour chiffrer les données doivent être stockées dans un matériel de sécurité dédié et spécialement conçu.
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'une question secondaire 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 intégré. Cela signifie : pensez à la sécurité lors du choix de votre matériel, lors de la définition de l'architecture de votre système, lors de la conception de votre système et, bien sûr, lors de l'écriture de code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel fait défaut, vous serez vulnérable aux attaques. Les techniques de sécurité intégrées 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 de proposer diverses fonctionnalités de sécurité, telles que la détection des anomalies liées aux 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 pannes, et éviter les attaques par analyse différentielle des défauts n'est que l'une d'entre elles. Lors d'une telle attaque, un pirate informatique potentiel peut utiliser des techniques d'injection de défauts pour tenter de générer des erreurs dans un périphérique intégré. Cependant, il existe plusieurs moyens de détecter de tels défauts et de s'en protéger :
- Répliquez les opérations les plus critiques afin de pouvoir comparer différentes sorties, à tout moment, afin de détecter l'injection d'un défaut.
- Échec par défaut : lorsque vous gérez plusieurs conditions (dans une condition If ou 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 calendrier n'est jamais prévisible. C'est un élément essentiel de la détection des intrusions, car il est très difficile pour les pirates de déterminer les modes de fonctionnement et d'effectuer des attaques temporelles.
- Écrans de protection : les fabricants doivent utiliser des écrans pour recouvrir les composants les plus cruciaux, afin de les protéger des manipulations externes.
- Détectez les fluctuations anormales : détectez les fluctuations anormales de tension, de courant ou d'autres valeurs et déclenchez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
Le renforcement de la défense de votre appareil au niveau de l'application implique :
- Choisir des composants logiciels et 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-noyau pour vous assurer qu'un nombre minimal d'opérations sont exécutées dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, notamment les virus, les chevaux de Troie et les malwares.
- Supprimez tous les services inutiles. Votre firmware ne doit contenir que ce dont vous avez absolument besoin. Par exemple, il se peut que vous n'ayez pas besoin de transférer des fichiers ou de capturer des paquets. Vous pouvez donc désactiver les protocoles de transfert de fichiers et les packages 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 vous aider à sécuriser les systèmes embarqués :
- Blaster de bus: plateforme de débogage à haut débit qui peut interagir avec les ports de débogage matériels.
- Salade: Décodez divers protocoles tels que Serial, SPI et I2C, etc. Vous pouvez utiliser des analyseurs de protocoles créés par la communauté ou créer les vôtres.
- Hydrabus: matériel multi-outils open source qui peut être utilisé pour le débogage, le piratage et/ou les tests d'intrusion du matériel embarqué.
- Exploiter: Un cadre de test et d'exploitation de la sécurité de l'Internet des objets (IoT) open source.
- FACT (L'outil d'analyse et de comparaison des micrologiciels): Framework utilisé pour automatiser l'analyse de la sécurité du microprogramme.
- Routeurs Sploit: Un framework d'exploitation open source pour les appareils embarqués.
- Firmadyne: Système open source pour l'émulation et l'analyse dynamique de microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions de sécurité intégrées modernes ?
Bien qu'il existe différentes solutions disponibles pour le débogage, l'exploitation et le test de solutions intégrées, elles ne sont pas facilement utilisées. L'accent reste mis sur la sécurisation physique de l'appareil, mais les efforts déployés pour se protéger contre les attaques liées aux logiciels sont insuffisants. Même les risques et vulnérabilités de sécurité des applications les plus simples et facilement évitables sont encore courants sur les appareils embarqués modernes.
Cela s'explique en grande partie par 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 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 ce mépris des meilleures pratiques rendent les applications exécutées sur des appareils intégrés susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Beaucoup de travail est en cours sur le marché de la sécurité intégrée. Les experts estiment que le taux de croissance annuel composé (CAGR) du marché peut atteindre chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement de plus en plus 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 augmenter 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 satisfaire à certaines listes de sécurité, et nous espérons que cela incitera les fournisseurs 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 appareils 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 chiffrement des données, l'ajout de pare-feux, la mise en œuvre du contrôle d'accès et la randomisation des opérations ne peuvent pas vous mener loin. Pour créer des appareils réellement sécurisés, les développeurs doivent être formés à l'écriture de code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation lors de la phase de conception des applications contribuent grandement à la création de systèmes intrinsèquement sécurisé.
Comment Secure Code Warrior peut vous aider
Le produit phare de Secure Code Warrior, la plateforme d'apprentissage, propose de nombreux défis, cours et évaluations interactifs qui peuvent aider à former les développeurs à écrire du code C/C++ sécurisé. Le contenu de la plateforme est spécifique au framework et très engageant. Nos défis de codage C/C++:Embed se sont inspirés de MISRA C, AUTOSAR C++ (MISRA C++) et IEC.
Les développeurs peuvent se lancer dans des parcours d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques au C/C++ et, surtout, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès pour identifier leurs faiblesses et même participer à des compétitions de codage amicales avec leurs pairs. En savoir plus sur comment nous aidons les industries de l'automobile et des transports grâce à nos solutions.
Vous voulez découvrir dans quelle mesure nos défis sont interactifs et intégrés ? Essayez quelques défis liés à C/C++:Embed sur la plateforme d'apprentissage dès aujourd'hui !

Klicken Sie auf den untenstehenden Link und laden Sie das PDF dieser Ressource herunter.
Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht anzeigenDemo buchenSecure Code Warrior fait du codage sécurisé une expérience positive et engageante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son parcours d'apprentissage préféré, afin que les développeurs doués pour la sécurité deviennent les super-héros du quotidien de notre monde connecté.
Cet article a été rédigé par l'équipe d'experts du secteur de Secure Code Warrior, qui s'est engagée à donner aux développeurs les connaissances et les compétences nécessaires pour créer des logiciels sécurisés dès le départ. S'appuyant sur une expertise approfondie en matière de pratiques de codage sécurisé, de tendances du secteur et de connaissances du monde réel.
Les systèmes embarqués contribuent à fournir de nombreuses technologies modernes. Du régulateur de vitesse adaptatif de votre voiture au Wifi de votre réfrigérateur intelligent. Face à la recrudescence des cyberattaques, la sécurisation de ces systèmes est devenue essentielle.
Les appareils embarqués sont des cibles privilégiées pour le piratage, car une attaque réussie peut permettre aux intrus d'accéder aux données qu'ils produisent, reçoivent et traitent. Cela peut souvent avoir de graves conséquences pour l'ensemble du système alimenté par le périphérique intégré. Par exemple, arrêt un dispositif intégré à l'avion de chasse F-15, qui collecte des données à partir de diverses caméras et capteurs, peut considérablement entraver les défenses de l'avion.
Nous avons écrit 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 ?
- Difficultés rencontrées lors de la mise en œuvre de la sécurité intégrée.
- Qu'est-ce qui rend un système embarqué « sécurisé » ?
- Pourquoi la sécurité de bout en bout est importante dans un écosystème intégré.
- Certains outils de sécurité intégrés.
- Qu'est-ce qui manque aux solutions embarquées classiques ?
- L'avenir de la sécurité embarquée.
Qu'est-ce que la sécurité intégrée ?
La sécurité intégrée fournit les outils, les processus et les meilleures pratiques pour sécuriser les logiciels et le matériel des appareils intégrés.
Les modules matériels des systèmes embarqués étant de petite taille, ils présentent diverses limites en matière de mémoire et de stockage. Leur intégration de mesures de sécurité devient donc un énorme défi de conception. Cependant, aussi difficile que cela puisse être, c'est un besoin du moment.
De nombreux gadgets et machines alimentés par des appareils intégrés sont également connectés à Internet. Cela signifie que les pirates peuvent y accéder sans autorisation et exécuter n'importe quel code malveillant.
Le piratage d'un appareil embarqué peut souvent se propager à d'autres composants connectés et/ou paralyser l'ensemble du système. Supposons, par exemple, qu'un attaquant soit capable de prendre le contrôle d'un périphérique intégré qui permet aux conducteurs de mettre leur voiture en mode pilote automatique. Le pirate informatique peut alors diriger la voiture hors route ou dans la circulation, ce qui peut causer de gros dégâts.
Défis critiques en matière de sécurité des systèmes embarqués
La sécurité des systèmes intégrés ne reçoit pas l'attention qu'elle mérite. Voici quelques raisons pour lesquelles :
- Manque de sensibilisation des développeurs :
Les développeurs ne connaissent généralement pas les meilleures pratiques pour développer des appareils intégrés sécurisés. Cela est dû en partie au point #2, et en partie au 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, y compris dans un environnement restreint de micro-ordinateurs, peut s'avérer difficile.
- Absence de standardisation :
Il n'existe pas de normes de cybersécurité pour les systèmes embarqués. Même si l'industrie automobile essaie lentement de changer cela. Au cours des dernières années, les chercheurs ont publié de nombreuses publications traitant des considérations de cybersécurité pour les véhicules intelligents. Parmi les plus remarquables, citons SAE J3061, « Guide de cybersécurité pour les systèmes cyberphysiques des véhicules : » et Règlement du WP.29 de la CEE-ONU sur la cybersécurité et les processus de mise à jour des logiciels.
- Utilisation de composants tiers
De nombreux appareils intégrés nécessitaient des composants matériels et logiciels tiers pour fonctionner. Souvent, ces composants sont utilisés sans avoir été testés pour détecter des failles de sécurité ou des vulnérabilités.
- Logiciel obsolète
Un microprogramme 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 firmware d'un petit appareil intégré, ce n'est pas quelque chose qui peut être ignoré.
- Connectivité Internet directe
De nombreux systèmes et appareils embarqués sont directement connectés à Internet. Cela signifie qu'ils ne bénéficient pas de la protection des pare-feux d'entreprise, qui peuvent détecter et empêcher les attaques 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 appareils intégrés sont généralement fabriqués à grande échelle. Cela signifie qu'une seule vulnérabilité ou faille peut affecter des millions d'appareils, parfois dans le monde entier. Contenir les impacts d'une attaque de système embarqué peut donc représenter un défi de taille.
Qu'est-ce qui caractérise un système embarqué sécurisé ?
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é matérielle
Un système embarqué sécurisé possède :
- Un environnement d'exécution fiable
Un environnement d'exécution sécurisé (TEE) permet d'isoler au niveau matériel les opérations critiques en matière de sécurité. Par exemple, l'authentification des utilisateurs peut être exécutée dans une zone séparée, ce qui permet de mieux protéger les informations sensibles.
- Ressources matérielles partitionnées de manière appropriée
Les différents composants matériels tels que le ou les processeurs, le cache, la mémoire et les interfaces réseau, etc. doivent être séparés de manière appropriée, afin de fournir 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 mémoire comme non exécutables. Si quelqu'un tente d'exécuter du code dans ces zones marquées, une exception est levée.
Meilleures pratiques en matière de sécurité logicielle
Les meilleures pratiques suivantes doivent être prises en compte lors de la création de logiciels embarqués :
- Utilisez le démarrage sécurisé :
Lorsqu'un périphérique intégré démarre, l'image de démarrage est vérifiée à l'aide d'algorithmes cryptographiques. Cela garantit que la séquence de démarrage est correcte et que le logiciel (microprogramme 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 contient un sous-ensemble de ses fonctionnalités. L'espace du noyau est restreint et de nombreux services utilisateurs (tels que la gestion des systèmes 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 packagées
Toutes les applications logicielles doivent être autonomes et correctement emballées. Par exemple, si une application nécessite une dépendance tierce, elle ne doit pas être installée globalement sur le système d'exploitation. Il devrait plutôt faire partie du dossier ou du contenant de la demande.
- Validez toutes les entrées
Toutes les données reçues de sources externes et/ou non fiables doivent être correctement nettoyées et validées avant d'être transmises à des composants logiciels et/ou matériels critiques.
Si une application extrait des données à partir d'une intégration d'API externe et modifie certains paramètres en fonction de celle-ci, les données reçues doivent être rigoureusement validées avant de modifier le paramètre.
- Protégez les données au repos :
Tous les logiciels, données, fichiers de configuration, clés sécurisées et mots de passe sensibles, etc. qui sont stockés sur un appareil intégré doivent être protégés. Cela se fait généralement par cryptage. Les clés privées utilisées pour chiffrer les données doivent être stockées dans un matériel de sécurité dédié et spécialement conçu.
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'une question secondaire 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 intégré. Cela signifie : pensez à la sécurité lors du choix de votre matériel, lors de la définition de l'architecture de votre système, lors de la conception de votre système et, bien sûr, lors de l'écriture de code.
Commencez par le matériel
Quelle que soit la robustesse de votre sécurité logicielle, si votre matériel fait défaut, vous serez vulnérable aux attaques. Les techniques de sécurité intégrées 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 de proposer diverses fonctionnalités de sécurité, telles que la détection des anomalies liées aux 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 pannes, et éviter les attaques par analyse différentielle des défauts n'est que l'une d'entre elles. Lors d'une telle attaque, un pirate informatique potentiel peut utiliser des techniques d'injection de défauts pour tenter de générer des erreurs dans un périphérique intégré. Cependant, il existe plusieurs moyens de détecter de tels défauts et de s'en protéger :
- Répliquez les opérations les plus critiques afin de pouvoir comparer différentes sorties, à tout moment, afin de détecter l'injection d'un défaut.
- Échec par défaut : lorsque vous gérez plusieurs conditions (dans une condition If ou 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 calendrier n'est jamais prévisible. C'est un élément essentiel de la détection des intrusions, car il est très difficile pour les pirates de déterminer les modes de fonctionnement et d'effectuer des attaques temporelles.
- Écrans de protection : les fabricants doivent utiliser des écrans pour recouvrir les composants les plus cruciaux, afin de les protéger des manipulations externes.
- Détectez les fluctuations anormales : détectez les fluctuations anormales de tension, de courant ou d'autres valeurs et déclenchez les exceptions en conséquence.
Sécurisez votre application... et votre système d'exploitation
Le renforcement de la défense de votre appareil au niveau de l'application implique :
- Choisir des composants logiciels et 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-noyau pour vous assurer qu'un nombre minimal d'opérations sont exécutées dans l'espace du noyau.
- Surveillez et protégez-vous contre les attaques logicielles, notamment les virus, les chevaux de Troie et les malwares.
- Supprimez tous les services inutiles. Votre firmware ne doit contenir que ce dont vous avez absolument besoin. Par exemple, il se peut que vous n'ayez pas besoin de transférer des fichiers ou de capturer des paquets. Vous pouvez donc désactiver les protocoles de transfert de fichiers et les packages 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 vous aider à sécuriser les systèmes embarqués :
- Blaster de bus: plateforme de débogage à haut débit qui peut interagir avec les ports de débogage matériels.
- Salade: Décodez divers protocoles tels que Serial, SPI et I2C, etc. Vous pouvez utiliser des analyseurs de protocoles créés par la communauté ou créer les vôtres.
- Hydrabus: matériel multi-outils open source qui peut être utilisé pour le débogage, le piratage et/ou les tests d'intrusion du matériel embarqué.
- Exploiter: Un cadre de test et d'exploitation de la sécurité de l'Internet des objets (IoT) open source.
- FACT (L'outil d'analyse et de comparaison des micrologiciels): Framework utilisé pour automatiser l'analyse de la sécurité du microprogramme.
- Routeurs Sploit: Un framework d'exploitation open source pour les appareils embarqués.
- Firmadyne: Système open source pour l'émulation et l'analyse dynamique de microprogrammes intégrés basés sur Linux.
Quelles sont les lacunes des solutions de sécurité intégrées modernes ?
Bien qu'il existe différentes solutions disponibles pour le débogage, l'exploitation et le test de solutions intégrées, elles ne sont pas facilement utilisées. L'accent reste mis sur la sécurisation physique de l'appareil, mais les efforts déployés pour se protéger contre les attaques liées aux logiciels sont insuffisants. Même les risques et vulnérabilités de sécurité des applications les plus simples et facilement évitables sont encore courants sur les appareils embarqués modernes.
Cela s'explique en grande partie par 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 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 ce mépris des meilleures pratiques rendent les applications exécutées sur des appareils intégrés susceptibles d'être compromises.
L'avenir de la sécurité embarquée
Beaucoup de travail est en cours sur le marché de la sécurité intégrée. Les experts estiment que le taux de croissance annuel composé (CAGR) du marché peut atteindre chiffre de 5,5 % au cours de la période 2021-2026. Avec le lancement de plus en plus 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 augmenter 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 satisfaire à certaines listes de sécurité, et nous espérons que cela incitera les fournisseurs 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 appareils 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 chiffrement des données, l'ajout de pare-feux, la mise en œuvre du contrôle d'accès et la randomisation des opérations ne peuvent pas vous mener loin. Pour créer des appareils réellement sécurisés, les développeurs doivent être formés à l'écriture de code sécurisé. L'identification des risques de sécurité potentiels et leur atténuation lors de la phase de conception des applications contribuent grandement à la création de systèmes intrinsèquement sécurisé.
Comment Secure Code Warrior peut vous aider
Le produit phare de Secure Code Warrior, la plateforme d'apprentissage, propose de nombreux défis, cours et évaluations interactifs qui peuvent aider à former les développeurs à écrire du code C/C++ sécurisé. Le contenu de la plateforme est spécifique au framework et très engageant. Nos défis de codage C/C++:Embed se sont inspirés de MISRA C, AUTOSAR C++ (MISRA C++) et IEC.
Les développeurs peuvent se lancer dans des parcours d'apprentissage personnalisés, au cours desquels ils identifient les vulnérabilités spécifiques au C/C++ et, surtout, apprennent à corriger ces bogues. Au cours de ce processus, les développeurs peuvent suivre leurs progrès pour identifier leurs faiblesses et même participer à des compétitions de codage amicales avec leurs pairs. En savoir plus sur comment nous aidons les industries de l'automobile et des transports grâce à nos solutions.
Vous voulez découvrir dans quelle mesure nos défis sont interactifs et intégrés ? Essayez quelques défis liés à C/C++:Embed sur la plateforme d'apprentissage dès aujourd'hui !
Inhaltsverzeichnis
Secure Code Warrior fait du codage sécurisé une expérience positive et engageante pour les développeurs à mesure qu'ils améliorent leurs compétences. Nous guidons chaque codeur le long de son parcours d'apprentissage préféré, afin que les développeurs doués pour la sécurité deviennent les super-héros du quotidien de notre monde connecté.

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen, die Ihnen den Einstieg erleichtern
Themen und Inhalte der Schulung zum sicheren Code
Unsere hochmodernen Inhalte werden ständig weiterentwickelt, um mit den ständigen Veränderungen in der Softwareentwicklungslandschaft Schritt zu halten und gleichzeitig Ihre Rolle zu berücksichtigen. Die Themen reichen von KI bis hin zu XQuery-Injection und sind für eine Vielzahl von Positionen konzipiert, von Architekten über Ingenieure bis hin zu Produktmanagern und Qualitätssicherungsmitarbeitern. Verschaffen Sie sich einen Überblick über die Inhalte unseres Katalogs, sortiert nach Themen und Rollen.
Die Kamer van Koophandel setzt Maßstäbe für entwicklergesteuerte Sicherheit in großem Maßstab
Die Kamer van Koophandel berichtet, wie sie sicheres Codieren durch rollenbasierte Zertifizierungen, Trust Score-Benchmarking und eine Kultur der gemeinsamen Verantwortung für Sicherheit in die tägliche Entwicklungsarbeit integriert hat.
Bedrohungsmodellierung mit KI: So wird jeder Entwickler zum Bedrohungsmodellierer
Sie werden besser gerüstet sein, um Entwicklern dabei zu helfen, Ideen und Techniken zur Bedrohungsmodellierung mit den KI-Tools zu kombinieren, die sie bereits verwenden, um die Sicherheit zu erhöhen, die Zusammenarbeit zu verbessern und von Anfang an widerstandsfähigere Software zu entwickeln.
Ressourcen, die Ihnen den Einstieg erleichtern
Cybermon ist zurück: Die missions „Beat the Boss“ sind jetzt auf Abruf verfügbar.
Cybermon 2025 Beat the Boss ist jetzt das ganze Jahr über in SCW verfügbar. Setzen Sie fortschrittliche Sicherheitsherausforderungen im Zusammenhang mit KI und LLM ein, um die sichere Entwicklung von KI in großem Maßstab zu stärken.
Erläuterung des Gesetzes zur Cyberresilienz: Was bedeutet das für die Entwicklung sicherer Software bereits ab der Konzeption?
Entdecken Sie, was das europäische Gesetz zur Cyberresilienz (CRA) verlangt, für wen es gilt und wie sich Ingenieurteams durch Sicherheitsmaßnahmen bereits in der Entwurfsphase, durch die Vermeidung von Schwachstellen und durch die Stärkung der Fähigkeiten der Entwickler darauf vorbereiten können.
Moderator 1: Definierte und messbare Erfolgskriterien
Enabler 1 gibt den Startschuss für unsere 10-teilige Serie mit dem Titel „Enablers of Success“ und zeigt, wie sichere Codierung mit geschäftlichen Ergebnissen wie Risikominderung und Schnelligkeit kombiniert werden kann, um die langfristige Reife von Programmen sicherzustellen.




%20(1).avif)
.avif)
