Sécurité et logiciel – Formation (exigences préliminaires SDL)

Formation de base

L’ensemble des membres de l’équipe de développement, y compris le chef de projet, doivent posséder les connaissances nécessaires à la mise en œuvre et à la compréhension des bonnes pratiques préconisées dans ce document. Cette formation de base doit couvrir les thèmes suivants :

Notions fondamentales

  • Les systèmes d’informations
  • Le triangle de la sécurité

Objectifs :

  • Connaître les constituants et la finalité d’un système d’information
  • Comprendre les 3 piliers de la sécurité (confidentialité, intégrité et disponibilité) et ne négliger aucun de ces piliers

Introduction à la cybercriminalité

  • La typologie des attaques
  • Les acteurs de la cybercriminalité

Objectifs :

  • Connaître les vecteurs d’attaques utilisables pour compromettre une application.
  • Connaître les attaquants, leurs moyens et leurs objectifs.

La gestion et l’analyse des risques

Objectifs :

  • Comprendre les notions de base de l’analyse de risque.

La cryptographie

  • Le principe de Kerckhoffs
  • Les algorithmes de chiffrement symétriques
  • Les algorithmes de chiffrement asymétriques
  • Les algorithmes de hachage
  • Le salage
  • La signature électronique

Objectifs :

  • Comprendre le principe de Kerckhoffs (le secret réside dans la clé secrète et non dans l’implémentation de l’algorithme) et savoir en quoi ce principe est pertinent.
  • Comprendre la différence entre le chiffrement symétrique et asymétrique.
  • Connaître les cas d’utilisation de ces deux types de chiffrement.
  • Connaître les noms des algorithmes standards et les longueurs recommandées de leurs clés.
  • Connaître les noms des algorithmes de hachage et savoir lesquels sont recommandés et lesquels sont à éviter.
  • Comprendre l’utilité du salage dans le cadre du chiffrement.
  • Comprendre le fonctionnement de la signature électronique

La conception sécurisée

  • La réduction de la surface d’attaque
  • La défense en profondeur
  • La sécurité par design
  • La ségrégation des fonctions
  • Le principe de moindre privilège

Objectifs :

  • Comprendre les principes de la réduction de la surface d’attaque, de la défense en profondeur, de la sécurité par design, de la ségrégation des fonctions et de moindre privilège.
  • Être en mesure de concevoir une application en respectant ces principes

Écriture de code sécurisé

  • Débordements de mémoire
  • Erreurs arithmétiques
  • Les injections de commandes, SQL, LDAP, XPATH, XSS
  • Cross-Site Request Forgery (CSRF)
  • Revue de code sécurisé

Objectifs :

  • Connaître les failles potentielles d’une application
  • Savoir implémenter une application en minimisant les risques liés à ces failles
  • Être en mesure de participer à une revue de code sécurisé

Formation avancé

En fonction du rôle assigné et selon le type d’application développée, une formation complémentaire est nécessaire pour certains membres de l’équipe. Au minimum, un des membres doit maîtriser le sujet des tests de sécurité.

Tests de la sécurité

  • Tests d’injection de commandes, SQL, LDAP, XPATH, XSS
  • Tests par injection de fautes aléatoires (Fuzzing)
  • Scanners de vulnérabilités
  • Tests de pénétration ou d’intrusion

Objectifs :

  • Connaître les différents types de tests de la sécurité.
  • Être en mesure d’appliquer ces tests à une application.
  • Connaître les mesures de précaution nécessaire à l’utilisation de certains tests.

Les certificats

Objectifs :

  • Comprendre à quoi sert un certificat et être en mesure d’en créer un.
  • Savoir déterminer si un certificat est valide.

La sécurité dans les communications

  • Le chiffrement des réseaux
  • Les outils de sécurisation des réseaux

Objectifs :

  • Connaître les principales options disponibles pour chiffrer les communications réseaux
  • Savoir à quels niveaux ces solutions interviennent.
  • Connaître le principe et le but des principaux dispositifs et techniques permettant de sécuriser un réseau.

La loi sur la protection des données

  • Introduction à la loi sur la protection des données

Objectifs :

  • Connaître la loi sur la protection des données.
  • Savoir tenir compte de la loi sur la protection des données durant le développement d’un logiciel.

Sources d’information

Ci-dessous quelques sources d’information couvrant les sujets abordés dans le plan de formation.

Sources d’information plus spécifiquement liées au thème de la sécurité de l’information dans le cadre du développement logiciel :

  • Le portail de Microsoft consacré à la méthode SDL dispose d’une documentation importante partiellement disponible en français, de supports de cours complets et de vidéos de démonstration [MICROSOFT SDL].
  • La communauté de l’Open Web Application Security Project (OWASP) propose, en plus de son « top 10 » des vulnérabilités, une documentation importante en anglais et de nombreux outils utilisables librement [OWASP].
  • L’organisation Software Assurance Forum for Excellence in Code (SAFECode) propose une documentation importante en anglais à propos de la sécurité de l’information durant le cycle de développement logiciel [SAFECODE].
  • Le site Common Weakness Enumeration (CWE) connu pour son répertoire de vulnérabilités, dispose également d’une documentation importante en anglais à propos de la sécurité de l’information dans le cadre du développement logiciel [CWE].

Sources d’information à propos de la sécurité de l’information en général :

  • L’encyclopédie en ligne Wikipédia dispose d’un portail consacré à la sécurité de l’information [WIKIPEDIA].
  • L’Agence Nationale de la Sécurité des Systèmes d’Information (ANSSI France) fournit de nombreux conseils et une documentation importante en français couvrant les notions de base aux notions plus avancées [ANSSI].
  • Le club de la sécurité de l’information français (CLUSIF) propose une importante documentation en français couvrant les notions de base aux notions plus avancées [CLUSIF].
  • Le National Institute of Standards and Technology (NIST USA) dispose d’un portail consacré aux technologies de l’information. En plus de recommandations officielles US, ce portail propose une documentation importante en anglais couvrant des sujets très variés [NIST].