Prenez contact avec nous

Plan du cours

Jour 1

Sécurité informatique et codage sécurisé

  • Nature de la sécurité
  • Terminologie liée à 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 au cybercrime
    • Nature des failles de sécurité
    • Raisons de la complexité
    • D’un ordinateur infecté aux attaques ciblées
  • Classification des failles de sécurité
    • Taxonomie de Landwehr
    • Les Sept Royaumes Perveres (The Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • Comparaison OWASP Top Ten 2003 – 2013

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

  • Programme
  • Les applications sous attaque…
    • Évolution du cybercrime
    • Les attaques ciblent les applications
    • La plupart des vulnérabilités se trouvent dans les applications ISV de plus petite envergure
  • Origines du SDL Microsoft…
    • Chronologie de la sécurité chez Microsoft…
    • Quelles applications doivent suivre le SDL ?
  • Cycle de vie de développement sécurisé (SDL) de Microsoft
    • Cycle de vie de développement sécurisé (SDL) de Microsoft
    • Exigences préalables au SDL : Formation à la sécurité
    • Phase 1 : Exigences
    • Phase 2 : Conception
    • Phase 3 : Implémentation
    • Phase 4 : Validation
    • Phase 5 : Publication – Plan de réponse
    • Phase 5 : Publication – Révision de sécurité finale
    • Phase 5 : Publication – Archivage
    • Exigence post-SDL : Réponse
    • Lignes directrices du processus SDL pour les applications LOB
    • Lignes directrices SDL pour les méthodologies agiles
    • Le développement sécurisé de logiciels nécessite une amélioration du 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é (Privacy)
    • Confidentialité (Privacy)
    • Compréhension du comportement des applications et des préoccupations
  • Défense en profondeur
    • Principe central du 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

  • Programme
  • Cycle de vie de développement sécurisé (SDL) de Microsoft
  • Bases des dépassements de tampon
    • 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
    • Débordement de pile
      • Dépassement de tampon sur la pile
      • Exercices – introduction
      • Exercice BOFIntro
      • Exercice BOFIntro – déterminer la disposition de la pile
      • Exercice BOFIntro – une simple exploitation
  • 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
      • 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 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 (Path traversal)
      • Atténuation de la vulnérabilité de parcours de chemin

Jour 2

Principes d’implémentation sécurisée

  • Injection
    • Méthodes d’attaque typiques d’injection SQL
    • 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écifiques au 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 des fonctions
    • Filtrage des téléversements de fichiers
  • Cryptographie pratique
    • Fournir la confidentialité avec la cryptographie symétrique
    • Algorithmes de chiffrement symétrique
    • Chiffrements par blocs – modes d’opération
    • Hash ou résumé de message
    • 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 pratique – possession de la clé privée
    • Erreurs courantes dans la gestion des mots de passe
    • Exercice – Mots de passe codés en dur
    • Conclusion

Principes de validation sécurisée

  • Tests fonctionnels vs. tests de sécurité
  • Vulnérabilités de sécurité
  • Priorisation
  • Tests de sécurité dans le cycle de développement logicielle (SDLC)
  • Étapes de la planification des tests (analyse des risques)
  • Délimitation du 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’utilisation abusive (misuse/abuse cases)
    • Cas d’utilisation abusive – un exemple simple de boutique en ligne
    • Approche STRIDE par élément pour la modélisation des menaces – SDL MS
    • Identification des objectifs de sécurité
    • Schématisation – exemples d’éléments de DFD
    • Diagramme de flux de données – exemple
    • Énumération des menaces – STRIDE et éléments DFD de la SDL MS
    • Analyse des risques – classification des menaces
    • Le modèle d’évaluation 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 cycle de développement logicielle (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
    • Validation à l’exécution manuelle
    • Tests de sécurité manuels vs. automatisés
    • Tests d’intrusion
    • Tests de charge
  • Fuzzing
    • Tests de sécurité automatisés – 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
    • Système d’évaluation des vulnérabilités communes – 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é – kit 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