Ouvrir le menu Fermer le menu

Sécuriser les Objets IoT en 4 Étapes

trait de séparation
L’évolution de l’Internet des Objets connectés (IoT), du Big Data, du Machine-To-Machine (M2M), des communications sans fil, entraine une vraie tempête technologique pour les équipes de développement. Avec un marché futur estimé aux environs de 50 milliards d’objets connectés d’ici 2025, le nombre de connexions, tous marchés confondus, ne cessera de doubler tous les 4 à 5 ans.

Cette évolution technologique exige d’accroitre drastiquement la sécurité des transmissions, d’assurer la confidentialité des données ainsi que l’intégrité des équipements, et augmenter significativement leur résistance aux attaques. Si tous ces enjeux sont de plus en plus reconnus, bon nombre de produits sont encore développés suivant des processus d’assurance qualité ou des technologies qui ne sont plus du tout adaptés à la complexité et aux risques encourus de ces nouveaux types équipements. Pourtant des solutions existent, et ce, notamment en termes de développement logiciel.

Les 4 étapes pour sécuriser les Objets IoT

Suivre un processus de développement logiciel s’appuyant sur les quatre étapes suivantes permet d’améliorer très nettement la sécurité, la fiabilité et la qualité des produits connectés.

1- Conception guidée par la Sécurité (Secure by Design) : pour les objets connectés, la sécurité doit absolument guider toutes les phases de développement.

2- Evaluation des menaces au niveau Système : pour les objets connectés faisant partie d’une infrastructure IoT plus vaste, une évaluation et une analyse des menaces et des vecteurs d’attaques au niveau système global est essentielle. Cette étape permet ainsi d’intégrer les besoins et les réponses pertinentes apportées dans le suivi des exigences du projet.

3- Automatisation des tests et analyses
 : la sécurité ajoute des tâches supplémentaires aux équipes de développement. L’automatisation de celles-ci et l’utilisation de techniques spécifiques comme l’analyse statique avancée de code sont des éléments clés pour atteindre les objectifs, en réduisant la dépendance aux interprétations ou attentions des développeurs. De la même façon, une analyse statique spécifique doit être réalisée en cas d’utilisation de codes open source.

4- Analyse des binaires pour les code tierces-parties 
: le recours à des logiciels tiers et notamment des librairies binaires s’accentue. S’assurer de la qualité et la sécurité de ses briques logicielles, même si on ne dispose pas des sources, est primordial.

Automatiser pour garantir les objectifs de la sécurité

Toutes les menaces et vulnérabilités auxquelles le système devra répondre ne sont pas connues lors de la conception, et donc une caractéristique de la sécurité est sa nécessité d’adaptation constante pour faire face à l’évolution des menaces. Traiter la sécurité est ainsi une tâche itérative et permanente, tout au long du cycle de vie du produit. L’automatisation est de ce fait un prérequis essentiel pour garantir les objectifs de sécurité. Il y a 3 grandes catégories d’outils de développement logiciels sur lesquels il est important de se concentrer.

1- Application Lifecycle Management (ALM) : bien que non spécifique à la sécurité, ces outils couvrent l’analyse des besoins, la conception, le codage, le test et l’intégration du logiciel. Ils amènent entre autres une aide sur l’analyse des exigences de sécurité, leur respect et implémentation.

2- Dynamic Application Security Testing (DAST) : cela correspond aux tests dynamiques de l’application comme par exemple les tests unitaires ou les tests de robustesse. Automatiser ces phases permet de réduire considérablement la charge des développeurs.

3- Static Application Security Testing (SAST) : l’analyse statique permet d’analyser le code source, les bytecode (code java compilé) ou directement les binaires (exécutables). Dans cette approche, le code n’est pas exécuté mais on vient analyser l’ensemble des chemins d’exécution possibles, ce qui permet de les intégrer au plus tôt dans le cycle de développement.

Rôle de l’Analyse Statique dans le « Secure by Design »

Des outils d’analyse statique tels que CodeSonar de GrammaTech sont des solutions essentielles pour assurer une qualité de code en continu. En intervenant au plus tôt dans le cycle de développement, cela permet de réduire considérablement les coûts et les risques de sécurité et de qualité des logiciels.

· Qualité en continu sur les codes source : cela permet de traiter toutes les erreurs (vulnérabilités, bugs, règles de codage, etc.) dès la phase d’implémentation et de réduire les coûts de tests de manière importante.

· Respect des règles de codage de sécurité : bon nombre de règles de codage de sécurité existent telles que le SEI CERT, CWE, Microsoft ‘s Secure Coding Guidelines. L’analyse statique permet une vérification en continu du respect de ces règles dans le code.

· Analyse des « Tainted data » : l’analyse du flux de données (Data flow) dans le code source (i.e les interfaces) jusqu’à leur utilisation dans le programme (sink) est primordial en sécurité. Cela permet de déterminer les données potentiellement dangereuses dont le code doit veiller à vérifier l’intégrité.

· Evaluation des code Tierce-parties : l’évaluation et le contrôle de la qualité et de la sécurité des codes tiers (i.e. SOUP) est une étape nécessaire pour garantir une sécurité de bout en bout.

Analyse Statique Source, Binaire & Hybride

De nos jours, les applications mixent des codes source avec des libraires et des binaires de diverses origines : internes (re-use de code existant) ou tierces parties (COTS, SOUP). L’outils d’analyse statique avancée CodeSonar de Grammatech est l’une des seules solutions sur le marché capable d’analyser tous ces types de configurations :

· Analyse des Codes Source : l’analyse des codes source (C/C++, Java, C#, etc) est la solution la plus efficace.  C’est la capacité de la plupart des outils d’analyse statique existant tels que CodeSonar.

· Analyse des Binaires : l’une des singularités de CodeSonar est sa capacité à analyser les codes binaires (exécutables ou librairies) pour lesquels les sources ne sont pas disponibles, et de détecter des erreur runtime ou des vulnérabilités similaires à l’analyse des sources.

· Analyse Hybride (Source & Binaires) : l’analyse Hybride est aussi une spécificité de CodeSonar. Cette méthode permet d’étendre l’analyse des sources dans les librairies appelées par le code développé en interne. La capacité de CodeSonar à analyser les binaires permet de continuer le chemin d’exécution du code vers les librairies externes et permet ainsi une analyse beaucoup plus précise et plus complète.
L’analyse statique est une approche facile à adopter et très efficace pour améliorer la qualité et la sécurité des logiciels. La solution CodeSonar permet un contrôle total de vos applications, quel que soit leurs architectures, source, binaires ou un mix des deux. Supportant un très grand nombre de langages (C, C++, Java, C#, Objective-C, …) elle est parfaitement adaptée à tous les types d’application que ce soit du monde IT ou industrielles (OT, Embarquées).
7