Le référentiel de développement sécurisé du NIST

Le SSDF (Secure Development Framework) du NIST propose des bonnes pratiques pour mettre sous contrôle son cycle développement, à l’instar d’autres référentiels comme celui de SAFECode, de BSIMM , de SAMM de l’ISO 27034. Le contenu du référentiel est orienté sur l’organisation, les compétences et les outils à mettre en place, les protections contre les accès non autorisés aux composants, les pratiques de développant pour minimiser les vulnérabilités et les réponses en cas de détection de failles. Le référentiel répond à la section 4 du document fédéral signé par le Président des Etats-Unis sur l’amélioration de la Cybersécurité. Il répond aussi à l’augmentation des risques liés à la sous-traitance : voir à ce sujet l’ISO 27036 et le SCRM.

 

Préparation

  • Définir les exigences de sécurité pour les développement internes, les logiciels et outils acquis.
  • Définir et mettre en œuvre les rôles et responsabilités du cycle de développement et bâtir un plan de montée en compétences.
  • Sélectionner et mettre en œuvre les outils en cherchant à automatiser un maximum de tâches (contrôles d’intégrité, recherche de failles, gestion des alertes des compilateurs, gestion des logs, alimentation de la nomenclature SBOM…).
  • Définir et utiliser des critères de contrôle pour l’ensemble du cycle.
  • Durcir des environnements de développement (build, test, distribution).

Protection

  • Protection des accès non autorisés au code sous toutes ses formes (source, exécutable, configuration as code…).
  • Mécanismes de vérification des versions (release).
  • Archive et protection des versions.

Développement

L’approche retenue dans ISO 31000 est classique mais prend en compte le volet des opportunités d’un risque.

  • Conception minimisant les risques de sécurité en utilisant par exemple une méthode de threat modeling
  • Revue de sécurité pour contrôler la conformité avec les exigences.
  • Réutilisation de librairies existantes validées (par exemple pour les opérations de cryptographie).
  • Mettre en œuvre des standards de développement sécurisé adapté aux langages.
  • Configuration des environnements de build (compilateurs, interpréteurs, outils de développement).
  • Test des exécutables.
  • Définir des configurations de l’application sécurisées par défaut.

Réponse

  • Identifier et confirmer les nouvelles vulnérabilités.
  • Analyser, prioriser et corriger les vulnérabilités avérées.
  • Identifier les causes.

 

Pour en savoir plus sur les 20 meilleures formations sur la sécurité des systèmes d’information, téléchargez gratuitement notre livre blanc ci-dessous :

SDLC, NIST, SecureSDLC, SSDF