L'atténuation des risques liés à la sécurité de la chaîne d'approvisionnement logicielle implique souvent la mise en œuvre de plusieurs niveaux de sécurité et de différentes stratégies. Mais l’une des approches les plus efficaces pour assurer la sécurité de votre logiciel consiste à remédier aux éventuelles vulnérabilités de sécurité pendant la phase de développement de votre application logicielle. Cela constitue souvent un défi puisque seuls quelques modèles de cycle de vie du développement logiciel abordent explicitement les questions de sécurité logicielle. Pour assurer la sécurité de votre logiciel, vous devrez adopter des pratiques de développement logiciel sécurisées quel que soit le modèle de cycle de vie de développement logiciel que vous choisissez d'utiliser.
Le Secure Software Development Framework (SSDF) décrit certaines des pratiques fondamentales que vous devez suivre pour garantir la sécurité des logiciels que vous créez. Le SSDF est basé sur les pratiques standard de sécurité du développement de logiciels établies par le National Institute of Standards and Technology (NIST) et aborde explicitement les problèmes de sécurité dans le développement de logiciels. La version SSDF 1.1 est définie dans NISTSP 800-218 publication. Le cadre a été initialement publié en septembre 2021 en tant que avant-projet version. Le 22 mars 2021, le NIST a publié la version finale du SSDF 1.1. Toutes les pratiques et tâches de haut niveau sont restées les mêmes, avec de nombreuses différences centrées sur les différents exemples fournis. En décidant des pratiques à mettre en œuvre, le NIST recommande d'équilibrer le risque par rapport au coût, à la faisabilité et à l'applicabilité. L’automatisation d’autant de contrôles et de processus favorisant la sécurité des logiciels que possible est une fonctionnalité clé à prendre en compte.
En tant qu'organisation travaillant avec un modèle de cycle de vie de développement logiciel, vous devez mettre en œuvre les directives du SSDF dans le cadre des efforts globaux visant à sécuriser vos logiciels contre les vulnérabilités de la chaîne d'approvisionnement logicielle. Le respect de ce cadre facilitera la détection des vulnérabilités non corrigées avant la publication du logiciel. Cela réduit le risque et les impacts d’éventuelles exploitations de sécurité dues à ces vulnérabilités non détectées. Cet article est un guide complet qui détaille ce qu'est le cadre SSDF et comment il contribue à la sécurité de la chaîne d'approvisionnement logicielle.
Les 4 pratiques du cadre de développement logiciel sécurisé
Les pratiques SSDF sont regroupées en quatre catégories. Dans le cadre SSDF, chaque pratique est identifiée par un identifiant unique et une brève explication de ce qu'elle est, pourquoi elle est bénéfique et les tâches qui doivent être effectuées pour la mettre en œuvre. Le cadre comprend également des exemples d'outils, de processus et de méthodes pour mettre en œuvre les pratiques avec des références aux documents de pratiques de développement sécurisé établis. Voici les quatre pratiques fondamentales du Secure Software Development Framework (SSDF) version 1.1 :
Préparer l'organisation (PO)
Le développement de logiciels sécurisés dépend fortement des personnes. Par conséquent, la première étape lors de la mise en œuvre du SSDF consiste à s’assurer que tous les membres de votre organisation sont suffisamment préparés aux changements qu’exigera le cadre. Pour commencer, vous devez identifier les exigences de sécurité spécifiques du logiciel que vous développez en fonction des outils qu'ils utiliseront pour le développement de logiciels. De cette façon, vous pouvez commencer à préparer les personnes, les processus et la technologie qu’ils utilisent, tant au niveau organisationnel qu’individuel.
La préparation de l’organisation consiste généralement à obtenir l’adhésion de la haute direction et à mettre en œuvre la formation nécessaire pour les employés. Une partie de vos efforts de préparation peut également inclure la mise en œuvre d'outils qui aident à automatiser les processus et à créer un environnement sécurisé pour le développement.
Protéger le logiciel (PS)
Le cadre de développement logiciel sécurisé décrit les pratiques permettant de protéger tous les composants de votre logiciel contre tout accès non autorisé et toute falsification. Il s'agit d'une étape importante pour empêcher les modifications non autorisées du code, qu'elles soient involontaires ou intentionnelles, et pour protéger le code source et la configuration de votre logiciel. La protection de votre logiciel peut impliquer différentes approches selon la situation spécifique. Lorsque le code n'est pas destiné à être accessible au public, cela peut empêcher le vol du logiciel et rendre plus difficile ou plus longue la recherche des vulnérabilités par les attaquants.
En suivant les pratiques décrites dans cette section du SSDF, les consommateurs de logiciels s'assurent que le logiciel qu'ils acquièrent est légitime et n'a pas été falsifié. De plus, il permet d'identifier, d'analyser et d'éliminer les vulnérabilités des logiciels après leur publication en préservant les versions logicielles.
Produire des logiciels bien sécurisés (PW)
Pour produire un logiciel bien sécurisé avec un minimum de vulnérabilités de sécurité, il existe des étapes de base à suivre tout au long du cycle de vie du développement logiciel. Ceux-ci inclus:
- Choisir des configurations logicielles sécurisées
- Évaluer tout composant tiers de votre logiciel pour garantir son intégrité
- Garantir que le code source de votre logiciel est conforme aux pratiques de codage sécurisées
- Examiner, analyser et tester les vulnérabilités de votre code et résoudre tout problème identifié avant la publication du code.
- Prévenir les vulnérabilités à l'aide des fonctionnalités des outils de construction telles que les compilateurs et les interprètes
Répondre aux vulnérabilités (RV)
Même après la sortie de votre logiciel, il est toujours possible que vous y découvriez des vulnérabilités. Les testeurs au sein de votre organisation, les chercheurs externes en sécurité ou même les clients peuvent découvrir ces vulnérabilités. Un élément important de la sécurisation de votre logiciel consiste à réagir rapidement à ces vulnérabilités dès qu'elles sont découvertes. Plus vous dissimulez longtemps une faille de sécurité, plus les dégâts qu’elle peut causer sont importants. Chaque organisation a besoin d'un programme de divulgation des vulnérabilités, ainsi que d'autres politiques, pour analyser les nouvelles vulnérabilités et décider comment y remédier.
Quels sont les principaux points à considérer ?
L'objectif principal du SSDF est d'aider les organisations à aligner et à prioriser la sécurité dans leurs activités de développement de logiciels. Le SSDF prend en compte les exigences commerciales, les tolérances aux risques et les ressources lors de la mise en œuvre de la sécurité dans le cycle de vie du développement logiciel. Certaines des considérations clés de ce cadre comprennent :
-
Intégrer la sécurité dans le SDLC
La première étape de la création d'un logiciel sécurisé consiste à intégrer la sécurité dans les différentes étapes et étapes du cycle de vie de votre développement logiciel. Essentiellement, votre équipe de développement doit avoir une culture axée sur la sécurité et cela doit commencer dès la première phase du processus de développement.
Dans la plupart des cas, de nombreuses pratiques de codage standard introduisent de nombreuses vulnérabilités qui peuvent être exploitées par des parties malveillantes ultérieurement, lors de la sortie du logiciel. C'est pourquoi les développeurs doivent penser à la sécurité dès le départ et être bien informés sur les stratégies permettant de réduire ces voies d'attaque potentielles.
En plus de réfléchir aux aspects humains de la sécurisation de votre logiciel, vous devez également envisager d'automatiser le processus de test et de surveillance de votre logiciel pour détecter les vulnérabilités potentielles dès le début.
-
Politique de développement de logiciels sécurisés
Une politique de développement de logiciels sécurisés est un ensemble formel de lignes directrices qui détaillent les pratiques et procédures que votre organisation suit pour le développement de logiciels sécurisés. Ce document de politique contient des instructions détaillées pour les personnes, la technologie et les processus que vous suivez pour chaque phase du cycle de vie de développement.
Une politique de développement logiciel sécurisé est plus qu’une simple recommandation pour accroître l’intégrité de votre logiciel. C’est même obligatoire dans certains cas. Par exemple, si votre logiciel doit répondre à des normes de sécurité telles que les normes ISO 27001 ou SOC Type 2, vous aurez alors besoin d'une documentation sur la politique de développement sécurisée. Heureusement, il existe des modèles de guides que vous pouvez adopter à cette fin. Votre équipe de sécurité logicielle peut également créer la documentation relative aux politiques à partir de zéro et l’adapter à vos besoins spécifiques.
-
Fournisseurs tiers
Il ne suffit pas d'écrire du code sécurisé et de respecter les exigences de sécurité en interne. La plupart des logiciels utilisent toujours des composants provenant de fournisseurs tiers qui peuvent ne pas suivre les mêmes normes de sécurité que vous. Ces composants de code tiers sont des voies courantes par lesquelles attaques de la chaîne d'approvisionnement logicielle sont effectués.
Dans le cadre des efforts visant à garantir la conformité en matière de sécurité tout au long du cycle de vie de votre développement logiciel, vous devez surveiller tous les composants tiers que vous utilisez et vous assurer que les fournisseurs sont pleinement conscients de vos exigences en matière de sécurité et se conforment pleinement aux mêmes normes de sécurité que vous.
-
Protection de l'intégrité du code
Votre code logiciel et tous ses composants sont des points d’attaque potentiels que des acteurs malveillants peuvent exploiter pour injecter des vulnérabilités dans votre logiciel. Pour éviter cela, tous les codes doivent être conservés dans des référentiels sécurisés lorsqu'ils sont à l'abri de toute forme de falsification.
Une partie des efforts visant à maintenir l'intégrité du code consiste à garantir que seuls les développeurs autorisés ont accès au code source. Le référentiel de code que vous choisissez doit comporter des fonctionnalités pour garantir cela, ainsi que des fonctionnalités supplémentaires pour sécuriser le processus de connexion et surveiller toute modification pouvant être apportée à votre code. Vous pouvez améliorer encore l'intégrité du code en utilisant l'automatisation pour surveiller les données d'accès et effectuer une analyse périodique du code.
-
Malwares préinstallés
Une voie courante pour les attaques de la chaîne d'approvisionnement logicielle consiste à masquer les vulnérabilités de sécurité dans les logiciels malveillants préinstallés. Il peut s'agir d'un virus, d'un ransomware, d'un cheval de Troie ou d'un logiciel espion susceptible de faire des ravages sur votre logiciel. Le logiciel malveillant peut être préinstallé sur les appareils ou les logiciels fiables que vous utilisez dans votre processus de création de logiciels ou même sur le système d'un fournisseur tiers. Ce malware peut rester caché pendant une longue période jusqu'à ce qu'un processus légitime signé numériquement lui permette de se propager dans votre système. Sécuriser le développement de vos logiciels implique de surveiller ces logiciels malveillants préinstallés et de mettre en place des mesures pour les identifier et les supprimer.
-
Tests de code, révision et listes de contrôle
L'approche traditionnelle du développement logiciel laisse généralement les tests de code à la fin du cycle de vie du développement logiciel. Cependant, cette approche réactive pour détecter les vulnérabilités logicielles n’est pas très efficace. Une approche plus efficace consiste à mettre en place des tests automatisés pour détecter en permanence les failles du code au fur et à mesure de la construction. Les développeurs doivent également examiner et vérifier leur code manuellement pour éviter toute frustration lorsque des failles sont découvertes ultérieurement.
Puisqu’il existe de nombreuses pièces et composants à suivre, il est logique d’établir des listes de contrôle au fur et à mesure que vous construisez. Cela aide votre équipe de développement et de surveillance de logiciels à garantir que toutes les actions définies dans les politiques SSDF sont dûment respectées.
-
Atténuation des vulnérabilités
Malgré le respect du SSDF et d’autres normes de sécurité, les vulnérabilités sont pratiquement inévitables dans le développement de logiciels. Le plus important est d’être prêt à atténuer ces vulnérabilités lorsqu’elles se produisent. Cela signifierait disposer d’une équipe dotée de plans et de stratégies clairement définis pour répondre aux incidents de sécurité dès qu’ils surviennent.
La rapidité avec laquelle votre organisation peut réagir aux vulnérabilités de sécurité fera toute la différence dans la réduction des impacts négatifs de telles attaques. Lorsque les failles logicielles sont détectées et corrigées rapidement, les acteurs malveillants disposent d’une fenêtre plus courte pour les exploiter. Ainsi, l’atténuation des vulnérabilités est un aspect important du développement de logiciels sécurisés auquel chaque organisation doit prêter attention.
-
Paramètres par défaut sécurisés
Votre nouveau logiciel doit avoir des paramètres de sécurité par défaut qui aident à protéger les utilisateurs contre les vulnérabilités logicielles, même sans connaissances avancées. Vous pouvez également mettre en œuvre des mesures pour informer les utilisateurs sur ces paramètres par défaut afin de les protéger même dans les premières étapes de l'adoption de votre logiciel.
Pour aller plus loin
Le Secure Software Development Framework (SSDF) est un ensemble de pratiques avancées qui doivent être intégrées dans le cycle de vie de développement logiciel de chaque organisation. En suivant les pratiques énoncées dans ce cadre dès le début du processus de développement, vous pouvez réduire les failles de sécurité dans la version de votre logiciel que vous publierez éventuellement. Le SSDF vous aide également à détecter les risques de sécurité et réduit l'impact potentiel des vulnérabilités non détectées qui figurent dans la version finale. Ce cadre est essentiel pour éviter que de tels problèmes de sécurité ne se reproduisent à l’avenir.