Prenez contact avec nous

Plan du cours

Jour 1

Sécurité informatique et code sécurisé

  • 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érents domaines d'application
  • Sécurité informatique vs. codage sécurisé
  • Des vulnérabilités aux botnets et à la cybercriminalité
    • Nature des failles de sécurité
    • Raisons de la difficulté
    • D'un ordinateur infecté aux attaques ciblées
  • Classification des failles de sécurité
    • Taxonomie de Landwehr
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • Comparaison OWASP Top Ten 2003 – 2013

Introduction au cycle de vie sécurisé de développement (SDL) de Microsoft®

  • Programme
  • Applications sous attaque...
    • Évolution de la cybercriminalité
    • Les attaques se concentrent sur les applications
    • La plupart des vulnérabilités se trouvent dans les applications ISV plus petites
  • Origines du SDL de Microsoft...
    • Chronologie de la sécurité chez Microsoft...
    • Quelles applications sont tenues de suivre le SDL ?
  • Cycle de vie sécurisé de développement (SDL) de Microsoft
    • Cycle de vie sécurisé de développement (SDL) de Microsoft
    • Exigences pré-SDL : Formation à la sécurité
    • Phase Un : Exigences
    • Phase Deux : Conception
    • Phase Trois : Implémentation
    • Phase Quatre : Vérification
    • Phase Cinq : Sortie – Plan de réponse
    • Phase Cinq : Sortie – Revue de sécurité finale
    • Phase Cinq : Sortie – Archivage
    • Exigence post-SDL : Réponse
    • Orientations du processus SDL pour les applications LOB
    • Orientations du SDL pour les méthodologies Agile
    • Le développement logiciel sécurisé nécessite une 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é
    • Confidentialité
    • Comprendre les comportements et les préoccupations des applications
  • Défense en profondeur
    • Principe fondamental du SDL : Défense en profondeur
    • Défense en profondeur – exemple
  • Principe du moindre privilège
    • Moindre privilège – exemple
  • Paramètres sécurisés par défaut
    • Paramètres sécurisés par défaut – exemples

Principes d'implémentation sécurisée

  • Programme
  • Cycle de vie sécurisé de développement (SDL) de Microsoft
  • 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 cadre de pile
    • Débordement de pile
      • Débordement de tampon 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 d'entiers
      • Représentation des entiers négatifs
      • Débordement d'entier
      • Débordement arithmétique – devinez la sortie !
      • Exercice IntOverflow
      • Quelle est la valeur de Math.Abs(int.MinValue) ?
    • Atténuation des problèmes d'entiers
      • Atténuation des problèmes d'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 des débordements en C#
    • Étude de cas – Débordement d'entier dans .NET
      • Une vulnérabilité réelle de débordement d'entier
      • Exploitation de la vulnérabilité de débordement d'entier
    • Vulnérabilité de parcours de chemin
      • Atténuation de la vulnérabilité de parcours de chemin

Jour 2

Principes d'implémentation sécurisée

  • Injection
    • Méthodes d'attaque SQL Injection typiques
    • Injection SQL aveugle et basée sur le temps
    • Méthodes de protection contre l'Injection SQL
    • Injection de commandes
  • Authentification cassée - gestion des mots de passe
    • Exercice – Faiblesse des mots de passe hachés
    • Gestion et stockage des mots de passe
    • Algorithmes de hachage spécialisés 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
    • Fourniture de confidentialité par cryptographie symétrique
    • Algorithmes de chiffrement symétrique
    • Chiffrement par blocs – modes de fonctionnement
    • Hachage ou digest de message
    • Algorithmes de hachage
    • Code d'Authentification de Message (MAC)
    • Fourniture d'intégrité et d'authenticité avec une clé symétrique
    • Fourniture de confidentialité par 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

  • Test fonctionnel vs. test de sécurité
  • Vulnérabilités de sécurité
  • Priorisation
  • Test de sécurité dans le SDLC
  • Étapes de planification des tests (analyse des risques)
  • Périmètre et collecte d'informations
    • Parties prenantes
    • Actifs
    • 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'abus/méfait
    • Cas d'abus/méfait – 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
    • Diagramme de flux de données – exemple
    • Énumération des menaces – STRIDE de MS SDL et éléments DFD
    • Analyse des risques – classification des menaces
    • Modèle de notation des menaces/risques DREAD
  • Techniques et outils de test de sécurité
    • Approches générales de test
    • Techniques pour différentes étapes du SDLC
  • Revue de code
    • Revue de code pour la sécurité logicielle
    • Analyse des contaminations
    • 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 en temps d'exécution
    • Test de sécurité manuel vs. automatisé
    • Test d'intrusion
    • Tests de charge
  • Fuzzing
    • Test de sécurité automatisé – fuzzing
    • Défis du fuzzing
  • Scanners 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
    • Scanners de vulnérabilités
    • Bases de données publiques
  • Étude de cas – Contournement de l'authentification par formulaires
    • Vulnérabilité de terminaison par octet NULL
    • Vulnérabilité de contournement de l'authentification par formulaires dans le code
    • Exploitation du contournement de l'authentification par formulaires

Sources de connaissances

  • Sources de codage sécurisé – trousse de démarrage
  • Bases de données de vulnérabilités
  • Lignes directrices de codage sécurisé .NET sur MSDN
  • Fiches mémo de codage sécurisé .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