Dans l'univers de la cybersécurité, le « Secure by Design » est devenu une philosophie essentielle pour garantir qu'une sécurité robuste soit au cœur de chaque étape du développement des logiciels. La sécurité est intégrée en tant qu'élément fondateur d'un produit et non comme une couche supplémentaire, une fois le produit terminé. Les stratégies et les meilleures pratiques de sécurité sont intégrées et testées à chaque étape pour garantir que les systèmes minimisent les vulnérabilités et résistent aux attaques.
Explication du jargon IT
Qu'est-ce que le Secure by Design ?
Le « Secure by Design », qu'est-ce que cela implique ?
Le « Secure by Design » va bien au-delà des normes précédemment appliquées dans le secteur, avec un objectif clair : protéger les clients et le public en réduisant les failles exploitables avant qu'un produit sorte sur le marché. Les entreprises qui adoptent ces principes se concentrent sur les tests, les mesures de protection de l'authentification et le respect des meilleures pratiques de programmation, afin de créer des solutions logicielles et matérielles robustes et résilientes.
Sous l'impulsion des entreprises ayant signé l'engagement « Secure by Design » de la CISA (Cybersecurity and Infrastructure Security Agency), les dirigeants du secteur s'appuient sur les principes du Secure by Design pour rendre la cybersécurité plus proactive et plus efficace en vue d'offrir une infrastructure et des applications plus sécurisées. Il s'agit non seulement de respecter les réglementations en vigueur, mais aussi de mériter la confiance des utilisateurs, afin de proposer un environnement numérique plus sûr pour tous.
Infos connexes : L'engagement « Secure by Design » : pour un futur numérique plus sûr
Diverses entités du secteur et organismes gouvernementaux ont publié des directives et des pratiques d'excellence qui encouragent les méthodologies de développement de logiciels sécurisés. Les principes qu'elles mettent en avant s'alignent souvent sur les concepts Secure by Design.
Parmi les exemples récents, le plus pertinent est la publication, en avril 2023, par le NIST (National Institute of Standards and Technology) et d'autres instances américaines, d'un guide conjoint intitulé « Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software ». Il met en lumière l'importance croissante des principes du Secure by Design dans le développement de logiciels.
Bien que le Secure by Design s'inscrive dans une démarche volontaire pour la plupart des entreprises américaines, les sous-traitants fédéraux et les entreprises d'autres pays sont souvent obligés de respecter les directives de cybersécurité pour s'assurer que leurs produits respectent les exigences de sécurité des infrastructures critiques. Ces réglementations et ces directives contribuent également à une meilleure coordination des efforts des partenaires internationaux vers un cyberenvironnement mondial plus sûr.
L'engagement Secure by Design
Cette charte est un engagement volontaire initié par la CISA, dont l'objectif est d'encourager les éditeurs de logiciels à se focaliser sur la sécurité tout au long du cycle de développement de leurs produits et services logiciels. Voici ses principaux aspects :
Public cible
Cet engagement cible les entreprises qui créent des logiciels d'entreprise, que ce soit des offres on-premise, des services Cloud ou SaaS. Bien qu'elles ne soient pas directement mentionnées, les entreprises qui élaborent des produits physiques, comme les périphériques IoT, sont également encouragées à prouver leur engagement envers les principes de conception sécurisée.
Se concentrer sur des actions mesurables
La charte encourage ses signataires à s'engager sur des actions spécifiques mesurables alignées sur les principes du Secure by Design, qu'ils doivent implémenter dans l'année suivant la signature.
Principaux objectifs
L'engagement souligne 7 domaines principaux dans lesquels les éditeurs de logiciels peuvent prouver leur implication en matière de Secure by Design :
- Augmenter l'utilisation de l'authentification multifacteur (MFA) dans tous leurs produits.
- Réduire l'utilisation des mots de passe par défaut et encourager les pratiques strictes de gestion des mots de passe.
- Implémenter des stratégies pour atténuer des classes entières de vulnérabilités au sein de leurs logiciels.
- Encourager l'installation rapide des correctifs de sécurité par les clients.
- Élaborer une stratégie claire et complète de divulgation des vulnérabilités.
- Fournir des informations détaillées concernant les vulnérabilités (CVE) identifiées pour faciliter leur remédiation.
- Implémenter des mécanismes pour détecter et corriger les incidents de sécurité potentiels dans leurs logiciels.
Transparence et rapports d'avancement
Les signataires doivent partager publiquement leurs progrès dans la réalisation de ces objectifs, pour améliorer la transparence et la responsabilisation du secteur.
Principes du Secure by Design
Les principes du Secure by Design sont conçus pour guider clairement les éditeurs de logiciels qui souhaitent renforcer la sécurité.
Moindre privilège
Ce principe garantit que les utilisateurs et les systèmes disposent uniquement du niveau d'accès nécessaire à leur travail. Cela limite les dommages liés aux menaces et aux erreurs en réduisant la surface d'attaque et en limitant les risques d'accès non autorisé aux données. Pour implémenter ce principe, il faut un contrôle d'accès strict et des mises à jour régulières sur la base des rôles, pour renforcer la protection contre les cybermenaces.
Séparation des responsabilités
Les responsabilités sont partagées entre plusieurs parties prenantes ou systèmes, ce qui réduit les risques de fraude, d'erreur ou d'abus de privilèges en évitant qu'une seule entité contrôle un processus crucial.
Au cours d'un cycle de développement sécurisé, les fonctions comme le développement, le test et le déploiement sont réparties entre plusieurs équipes, afin qu'un seul individu ne puisse pas altérer le système sans qu'on le détecte. En outre, des protections automatisées sont mises en place pour soutenir ce principe.
Défense en profondeur
Cette approche fait appel à plusieurs niveaux de sécurité pour protéger les actifs, car elle reconnaît qu'aucune mesure de protection n'est totalement infaillible. Elle incorpore différentes protections, comme des pare-feux, des systèmes de détection des intrusions et des audits de sécurité périodiques de tout le matériel, tous les logiciels et toutes les procédures.
En traitant différents types de menaces et en présentant de multiples obstacles aux intrus, cette méthode diminue sensiblement les vulnérabilités et renforce le cadre de sécurité des entreprises.
Avantages de la participation au programme Secure by Design
Les éditeurs de logiciels qui décident de participer au programme Secure by Design y trouveront plusieurs avantages :
- Affirmer son engagement pour la sécurité : en signant cet engagement, l'entreprise montre publiquement qu'elle va appliquer des pratiques de développement de logiciels sécurisés. Cela peut améliorer la réputation de la marque et attirer la confiance des clients potentiels.
- Se concentrer sur une sécurité mesurable : la charte encourage une approche de la sécurité axée sur les résultats, en mettant en place des actions concrètes qui prouvent une amélioration du niveau de sécurité des produits logiciels.
- Favoriser la collaboration et le partage des connaissances : la charte nourrit la collaboration et le partage de connaissances entre les divers acteurs du secteur, afin d'améliorer collectivement les pratiques de développement de logiciels sécurisés.
Les clients et les utilisateurs en tirent également des avantages. Quand un éditeur de logiciels propose des solutions et des plateformes conformes aux principes du Secure by Design, les avantages les plus importants sont ceux dont le client bénéficie :
- Protection renforcée : les logiciels qui intègrent des fonctions de sécurité dès la conception sont plus solides et moins vulnérables, ce qui garantit que le réseau où ils sont utilisés est également sécurisé... et, de ce fait amélioré.
- Meilleure DEX : donner plus d'importance à la sécurité et aux tests pendant le développement permet de créer un produit optimisé, plus stable et moins sujet aux perturbations, ce qui améliore l'expérience numérique des collaborateurs (DEX).
- Meilleur ROI : un produit plus sécurisé limite les périodes d'interruption et la nécessité d'appliquer des correctifs, si bien que les utilisateurs restent productifs.
- Conformité rationalisée : respecter des obligations strictes de confidentialité des données et de sécurité est plus facile avec un logiciel Secure by Design, ce qui réduit le temps et les ressources nécessaires pour exécuter des tests de conformité et éviter les pénalités.
- Meilleure réputation : les entreprises pour lesquelles la sécurité est une priorité sont considérées comme plus fiables, ce qui renforce la confiance et la fidélité des clients.
Implémentation du Secure by Design dans les produits logiciels
Développer des logiciels intégrant la sécurité dès les premières phases de développement représente un grand changement pour les développeurs de logiciels. Traditionnellement, les logiciels étaient conçus avec « une couche de sécurité complémentaire », ajoutée une fois le développement terminé.
Dans ce modèle traditionnel, la sécurité ne fait pas partie intégrante de la solution. Partout où il existe une connexion entre le produit principal et un module complémentaire, cela crée un point vulnérable potentiel qui constitue une cible idéale pour les pirates.
Dans le Secure by Design, les mesures de sécurité sont au coeur de la démarche et constituent la principale priorité tout au long du cycle SDLC (Software Development Lifecycle).
Intégrer les principes du Secure by Design tout au long du processus, au lieu d'attendre que le code soit écrit, garantit que la sécurité est une priorité dès les phases de planification et de conception. Cette approche implique d'identifier très tôt les menaces potentielles et de tisser les mesures de défense directement dans l'architecture du logiciel.
Les pratiques de codage sécurisé sont primordiales pour développer des logiciels qui traitent préventivement les vulnérabilités de sécurité. En appliquant des consignes comme celles du projet OWASP (Open Worldwide Application Security Project), et en effectuant une vérification du code et des analyses statiques, il est possible de repérer très tôt les problèmes de sécurité. Les pratiques clés consistent à valider les entrées, à éviter les secrets codés en dur et à choisir des bibliothèques sécurisées. L'utilisation d'outils de recherche en continu des vulnérabilités et de modélisation des menaces renforce encore la protection des logiciels contre les cybermenaces.
Des tests de sécurité très complets à chaque étape du développement garantissent que les vulnérabilités sont découvertes et éliminées en amont, avant de poser des problèmes à l'utilisateur final. Vous évitez ainsi les coûts et la complexité que génère le traitement de ces problèmes plus tard au cours du cycle SDLC ou, pire encore, après la sortie du produit.
Un éditeur doit exécuter des tests SAS (Static Application Security Testing) et DAS (Dynamic Application Security Testing) dans le code. Il doit aussi effectuer des tests unitaires et d'intégration tout au long du cycle SDLC, au lieu d'attendre la fin du processus pour réaliser cette modélisation et ces tests.
Voici les principales fonctions qu'il faut intégrer à un logiciel pour qu'il soit conforme aux principes du Secure by Design :
- Authentification, et combinaison entre un élément connu (mot de passe), un élément possédé (smartphone) et un élément inhérent (biométrie). L'autorisation par RBAC (Contrôle d'accès basé sur les rôles) et PBAC (Contrôle d'accès basé sur des stratégies) garantit que les utilisateurs disposent uniquement du niveau d'accès nécessaire, ce qui limite les risques.
- Chiffrement et protection des données. Le chiffrement protège les données sensibles, que ce soit au repos ou en transit, à l'aide d'algorithmes comme AES (Advanced Encryption Standard) et RSA (du nom des scientifiques du MIT Rivest, Shamir et Adleman). Un bon chiffrement implique une gestion sécurisée des clés : les clés sont stockées séparément des données et des HSM (Modules de sécurité matériels) sont utilisés. Des mises à jour régulières des protocoles et des audits renforcent la sécurité.
Les défis du Secure by Design
Les entreprises souhaitant appliquer les principes du Secure by Design sont confrontées à de nombreux défis :
- Faire évoluer la culture du développement : passer d'un processus de développement centré sur les fonctions et les opérations à un processus qui intègre la sécurité dès le départ, cela exige un changement culturel significatif de la part des équipes de développement. La sécurité doit être considérée comme un aspect essentiel du produit, pas comme une couche supplémentaire.
- Trouver l'équilibre entre sécurité et facilité d'utilisation : les mesures de sécurité robustes ne doivent pas compromettre la bonne expérience des utilisateurs. Trouver l'équilibre entre sécurité et facilité d'utilisation est primordial pour garantir l'adoption du produit par les utilisateurs et une expérience globale positive du logiciel.
- Infrastructure traditionnelle et base de code : dans de nombreuses entreprises, les logiciels reposent sur d'anciennes bases de code qui n'ont peut-être pas été créées dans un souci de sécurité. L'intégration des principes de conception sécurisée dans ces systèmes traditionnels peut s'avérer complexe et très longue.
- Paysage de menaces en continu : le paysage de la cybersécurité évolue sans cesse et de nouvelles menaces apparaissent tout le temps. Le Secure by Design n'est pas une rustine qu'on applique une fois pour toutes. Il exige un engagement constant, et de rester toujours informé sur les dernières menaces pour adapter les pratiques de sécurité.
- Manque de personnel qualifié : l'implémentation du Secure by Design nécessite une équipe spécialisée d'experts de la sécurité. Cependant, le monde entier connaît une pénurie de professionnels de la cybersécurité, si bien que les entreprises peuvent avoir du mal à trouver le personnel qualifié dont elles ont besoin pour vraiment adopter les principes du Secure by Design.
- Impliquer les utilisateurs : les éditeurs doivent impliquer les utilisateurs finaux dans le processus de conception, en collectant leurs commentaires afin de créer des fonctions de sécurité simples à utiliser. Une formation en continu aux meilleures pratiques de sécurité est également indispensable pour limiter l'erreur humaine sans submerger l'utilisateur.
Terminologie Secure by Design
Voici comment les principes du Secure by Design s'articulent avec les termes de cybersécurité que vous connaissez déjà :
- Accès juste à temps (JIT) : accorder l'accès aux ressources uniquement au moment et pendant la durée où cela est absolument nécessaire. Le Secure by Design vous conseille de minimiser les privilèges et d'utiliser le contrôle d'accès JIT.
- Assurance qualité : processus consistant à vérifier que le logiciel répond aux exigences et aux normes spécifiées, y compris en matière de sécurité. Le Secure by Design intègre la notion de sécurité à chacune des phases du processus d'assurance qualité (QA).
- Authentification multifacteur : niveau supplémentaire de sécurité qui exige un second facteur de vérification, en plus du mot de passe, pour l'accès à un système. Le Secure by Design souligne que le MFA est un contrôle de sécurité essentiel.
- Chiffrement : processus consistant à transformer les données pour les brouiller afin qu'elles ne soient accessibles qu'avec une clé de déchiffrement. Le Secure by Design conseille d'utiliser des algorithmes de chiffrement puissants pour protéger les données sensibles.
- Gestion des correctifs : processus d'identification, de récupération et de déploiement des correctifs de sécurité pour éliminer les vulnérabilités d'un logiciel. Le Secure by Design insiste sur l'approche proactive de la gestion des correctifs.
- Gestion des risques : identifier, évaluer et atténuer les risques de sécurité. Le Secure by Design recommande une approche de la sécurité basée sur les risques, qui se concentre sur les menaces les plus critiques.
- Minimisation des données : pratique consistant à collecter, stocker et traiter uniquement la quantité minimale de données nécessaire à l'objectif visé. Le Secure by Design encourage la minimisation des données pour limiter l'impact potentiel d'une fuite de données.
- Modélisation des menaces : processus consistant à identifier et à analyser les menaces potentielles qui pèsent sur un système. Le Secure by Design conseille de modéliser les menaces très tôt dans le processus de développement, pour traiter proactivement les problèmes de sécurité.
- Moindre privilège : principe consistant à attribuer aux utilisateurs uniquement le niveau minimal de droits d'accès dont ils ont besoin pour travailler. Le Secure by Design promeut le concept de moindres privilèges pour minimiser les dommages potentiels provoqués par les comptes compromis.
- Plan de réponse aux incidents : plan documenté qui précise comment l'entreprise doit réagir en cas d'incident de sécurité. Le Secure by Design encourage une planification proactive en cas de faille de sécurité.
- Pratiques de codage sécurisé : techniques de codage qui minimisent l'introduction de vulnérabilités lors du développement des logiciels. Le Secure by Design insiste sur la nécessité de former les développeurs aux pratiques de codage sécurisé.
- Sécurité des composants : consiste à garantir que chacun des composants d'un logiciel, des bibliothèques au framework, est conçu dans une optique de sécurité. Le Secure by Design insiste sur un choix et une intégration sécurisés des composants tiers.
- Sécurité du firmware : pratique qui consiste à sécuriser le code de bas niveau servant à contrôler les périphériques matériels. Le Secure by Design encourage l'utilisation de pratiques de codage sécurisé et la mise à jour régulière du firmware.
- Sécurité open source : pratique consistant à garantir la sécurité des logiciels intégrés dans des composants open source. Le Secure by Design vous recommande de choisir et de gérer avec prudence les bibliothèques open source, en vous concentrant sur les vulnérabilités connues.
- Surface d'attaque : somme de tous les points d'entrée potentiels qu'un pirate peut exploiter pour accéder à un système ou à des données. Le Secure by Design vise à minimiser la surface d'attaque en limitant les vulnérabilités.
- Test en boîte grise : méthodologie de tests de sécurité où le testeur connaît en partie le fonctionnement interne du système. Le Secure by Design conseille d'utiliser un code qui soit performant aussi bien lors de tests en boîte noire que de tests en boîte grise.
- Test en boîte noire ou black box testing : méthodologie de tests de sécurité où le fonctionnement interne du système reste inconnu du testeur. Le Secure by Design encourage les pratiques de codage sécurisé qui limitent les vulnérabilités pouvant être détectées via des tests de boîte noire.
- Tests d'intrusion : méthodologie de tests de sécurité où des pirates éthiques cherchent à exploiter les vulnérabilités d'un système. Le Secure by Design encourage les tests d'intrusion, afin d'identifier et d'éliminer les faiblesses de sécurité.
- Validation des entrées : processus consistant à vérifier et assainir les entrées utilisateur pour éviter toute attaque par injection de code malveillant. Le Secure by Design insiste sur des pratiques robustes de validation des entrées.
- Vulnérabilités connues : faiblesses connues d'un logiciel, qu'un pirate pourrait exploiter. Le Secure by Design souligne qu'il est important de s'informer en permanence des vulnérabilités connues et d'appliquer immédiatement les correctifs aux systèmes.
Infos connexes : Progrès d'Ivanti concernant les objectifs Secure by Design