Prenez contact avec nous

Plan du cours

Jour 1

Sécurité informatique et programmation sécurisée

  • Nature de la sécurité
  • Termes liés à la sécurité informatique
  • Définition du risque
  • Différents aspects de la sécurité informatique
  • Exigences des différentes domaines d'application
  • Sécurité informatique vs. programmation sécurisée
  • Des vulnérabilités aux bots et à la cybercriminalité
    • Nature des défauts de sécurité
    • Raisons de la complexité
    • D'un ordinateur infecté aux attaques ciblées
  • Classification des défauts de sécurité
    • Taxonomie de Landwehr
    • Les Sept Royaumes Pérnicieux (The Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • Comparaison OWASP Top Ten 2003 – 2013

Introduction à la SDL de Microsoft®

  • Ordre du jour
  • Applications sous attaque...
    • Évolution de la cybercriminalité
    • Les attaques ciblent les applications
    • La plupart des vulnérabilités se trouvent dans les petites applications ISV
  • Origines de la SDL de Microsoft...
    • Chronologie de la sécurité chez Microsoft...
    • Quelles applications doivent suivre la SDL?
  • SDL de Microsoft (Security Development Lifecycle)
    • SDL de Microsoft (Security Development Lifecycle)
    • Exigences préalables à la SDL : Formation à la sécurité
    • Phase 1 : Exigences
    • Phase 2 : Conception
    • Phase 3 : Implémentation
    • Phase 4 : Vérification
    • Phase 5 : Libération – Plan de réponse
    • Phase 5 : Libération – Examen de sécurité final
    • Phase 5 : Libération – Archivage
    • Exigence post-SDL : Réponse
    • Directives du processus SDL pour les applications LOB
    • Directives SDL pour les méthodologies Agile
    • Le développement de logiciels sécurisés nécessite l'amélioration des processus

Principes de conception sécurisée

  • Surface d'attaque
    • Réduction de la surface d'attaque
    • Surface d'attaque – un exemple
    • Analyse de la surface d'attaque
    • Réduction de la surface d'attaque – exemples
  • Confidentialité des données
    • Confidentialité des données
    • Compréhension des comportements et des préoccupations des applications
  • Défense en profondeur
    • Principe fondamental de la SDL : Défense en profondeur
    • Défense en profondeur – exemple
  • Principe du moindre privilège
    • Moindre privilège – exemple
  • Valeurs par défaut sécurisées
    • Valeurs par défaut sécurisées – exemples

Principes d'implémentation sécurisée

  • Ordre du jour
  • SDL de Microsoft (Security Development Lifecycle)
  • Bases des dépassements de tampon (buffer overflow)
    • Processeurs Intel 80x86 – registres principaux
    • Disposition des adresses mémoire
    • Mécanisme d'appel de fonctions en C/C++ sur x86
    • Variables locales et trame de pile (stack frame)
    • Débordement de pile (stack overflow)
      • Buffer overflow sur la pile
      • Exercices – introduction
      • Exercice BOFIntro
      • Exercice BOFIntro – déterminer la disposition de la pile
      • Exercice BOFIntro – une exploitation simple
  • Validation des entrées
    • Concepts de validation des entrées
    • Problèmes liés aux entiers
      • Représentation des entiers négatifs
      • Débordement d'entier (integer overflow)
      • Débordement arithmétique – devinez la sortie!
      • Exercice IntOverflow
      • Quelle est la valeur de Math.Abs(int.MinValue)?
    • Atténuation des problèmes liés aux entiers
      • Atténuation des problèmes liés aux entiers
      • Éviter le débordement arithmétique – addition
      • Éviter le débordement arithmétique – multiplication
      • Détection des débordements avec le mot-clé checked en C#
      • Exercice – Utilisation du mot-clé checked en C#
      • Exceptions déclenchées par les débordements en C#
    • Étude de cas – Débordement d'entier dans .NET
      • Une vulnérabilité de débordement d'entier réelle
      • Exploitation de la vulnérabilité de débordement d'entier
    • Vulnérabilité de parcours de chemin (path traversal)
      • Atténuation du parcours de chemin

Jour 2

Principes d'implémentation sécurisée

  • Injection
    • Méthodes d'attaque typiques de l'injection SQL
    • Injection SQL aveugle et basée sur le temps
    • Méthodes de protection contre l'injection SQL
    • Injection de commandes
  • Authentification défaillante - gestion des mots de passe
    • Exercice – Faiblesse des mots de passe hachés
    • Gestion et stockage des mots de passe
    • Algorithmes de hachage à usage spécial pour le stockage des mots de passe
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Injection CSS
    • Exploitation : injection via d'autres balises HTML
    • Prévention du XSS
  • Absence de contrôle d'accès au niveau de la fonction
    • Filtrage des téléchargements de fichiers
  • Cryptographie pratique
    • Fournir la confidentialité avec la cryptographie symétrique
    • Algorithmes de chiffrement symétrique
    • Chiffrement par blocs – modes d'opération
    • Hachage ou message digest
    • Algorithmes de hachage
    • Code d'authentification de message (MAC)
    • Fournir l'intégrité et l'authenticité avec une clé symétrique
    • Fournir la confidentialité avec le chiffrement à clé publique
    • Règle de base – possession de la clé privée
    • Erreurs typiques dans la gestion des mots de passe
    • Exercice – Mots de passe codés en dur
    • Conclusion

Principes de vérification sécurisée

  • Tests fonctionnels vs. tests de sécurité
  • Vulnérabilités de sécurité
  • Hiérarchisation
  • Tests de sécurité dans le SDLC
  • Étapes de la planification des tests (analyse des risques)
  • Périmètre et collecte d'informations
    • Parties prenantes
    • Actifs
    • La surface d'attaque
    • Objectifs de sécurité pour les tests
  • Modélisation des menaces
    • Modélisation des menaces
    • Profils d'attaquants
    • Modélisation des menaces basée sur les arbres d'attaque
    • Modélisation des menaces basée sur les cas d'usage/d'abus
    • Cas d'usage/d'abus – un exemple simple de boutique en ligne
    • Approche STRIDE par élément pour la modélisation des menaces – MS SDL
    • Identification des objectifs de sécurité
    • Schématisation – exemples d'éléments DFD (diagrammes de flux de données)
    • Diagramme de flux de données – exemple
    • Énumération des menaces – STRIDE de la MS SDL et éléments DFD
    • Analyse des risques – classification des menaces
    • Modèle de classement des menaces/risques DREAD
  • Techniques et outils de test de sécurité
    • Approches de test générales
    • Techniques pour les différentes étapes du SDLC
  • Revue de code
    • Revue de code pour la sécurité logicielle
    • Analyse de contamination (taint analysis)
    • Heuristiques
  • Analyse statique de code
    • Analyse statique de code
    • Exercice – Utilisation d'outils d'analyse statique de code
  • Test de l'implémentation
    • Vérification manuelle à l'exécution
    • Tests de sécurité manuels vs. automatisés
    • Tests d'intrusion
    • Tests de charge (stress tests)
  • Fuzzing
    • Tests de sécurité automatisés - fuzzing
    • Défis du fuzzing
  • Scanneurs de vulnérabilités Web
    • Exercice – Utilisation d'un scanner de vulnérabilités
  • Vérification et durcissement de l'environnement
    • Common Vulnerability Scoring System – CVSS
    • Scanneurs de vulnérabilités
    • Bases de données publiques
  • Étude de cas – Contournement de l'authentification de formulaire (Forms Authentication)
    • Vulnérabilité de terminaison par octet NULL
    • La vulnérabilité de contournement de l'authentification de formulaire dans le code
    • Exploitation du contournement de l'authentification de formulaire

Sources de connaissances

  • Sources de programmation sécurisée – kit de démarrage
  • Bases de données de vulnérabilités
  • Directives de programmation sécurisée .NET sur MSDN
  • Feutres de référence pour la programmation sécurisée .NET
  • Livres recommandés – .NET et ASP.NET
 14 Heures

Nombre de participants


Prix par participant

Nos clients témoignent (3)

Cours à venir

Catégories Similaires