Prenez contact avec nous

Plan du cours

Jour 1

Sécurité des TI et codage sécurisé

  • Nature de la sécurité
  • Termes liés à la sécurité des TI
  • Définition du risque
  • Différents aspects de la sécurité des TI
  • Exigences des différents domaines d'application
  • Sécurité des TI vs codage sécurisé
  • Des vulnérabilités aux botnets et à la cybercriminalité
    • Nature des failles de sécurité
    • Raisons des difficultés
    • D'un ordinateur infecté aux attaques ciblées
  • Classification des failles de sécurité
    • Taxonomie de Landwehr
    • Les Sept Royaumes Pernicieux
    • OWASP Top Ten 2013
    • Comparaison OWASP Top Ten 2003 – 2013

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

  • Programme
  • Applications sous attaque...
    • Évolution de la cybercriminalité
    • Les attaques se concentrent sur les applications
    • La majorité des vulnérabilités se trouvent dans les petites applications des éditeurs indépendants de logiciels (ISV)
  • Origines du SDL de Microsoft...
    • Chronologie de la sécurité chez Microsoft...
    • Quelles applications sont tenues de suivre le SDL ?
  • Cycle de développement sécurisé (SDL) de Microsoft
    • Cycle de développement sécurisé (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 : Publication – Plan de réponse
    • Phase cinq : Publication – Examen final de la sécurité
    • Phase cinq : Publication – Archivage
    • Exigence post-SDL : Réponse
    • Conseils de processus SDL pour les applications métier (LOB)
    • Conseils SDL pour les méthodologies agiles
    • 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
  • Vie privée
    • Vie privée
    • Compréhension des comportements et des préoccupations liés aux applications
  • Défense en profondeur
    • Principe fondamental de la SDL : Défense en profondeur
    • Défense en profondeur – exemple
  • Principe du privilège minimum
    • Privilège minimum – exemple
  • Valeurs par défaut sécurisées
    • Valeurs par défaut sécurisées – exemples

Principes de mise en œuvre sécurisée

  • Programme
  • Cycle de développement sécurisé (SDL) de Microsoft
  • Fondamentaux des dépassements de tampon
    • Processeurs Intel 80x86 – registres principaux
    • Disposition de l'adresse mémoire
    • Mécanisme d'appel de fonctions en C/C++ sur x86
    • Variables locales et pile d'appels
    • Dépassement de pile
      • Dépassement de tampon sur la pile
      • Présentation des exercices
      • Exercice BOFIntro
      • Exercice BOFIntro – détermination de la disposition de la pile
      • Exercice BOFIntro – un exploit simple
  • Validation des entrées
    • Concepts de validation des entrées
    • Problèmes liés aux entiers
      • Représentation des entiers négatifs
      • Dépassement d'entier
      • Dépassement 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 les dépassements arithmétiques – addition
      • Éviter les dépassements arithmétiques – multiplication
      • Détection des dépassements avec le mot clé checked en C#
      • Exercice – Utilisation du mot clé checked en C#
      • Exceptions déclenchées par les dépassements en C#
    • Étude de cas – Dépassement d'entier dans .NET
      • Une vulnérabilité réelle de dépassement d'entier
      • Exploitation de la vulnérabilité de dépassement d'entier
    • Vulnérabilité de traversée de chemin
      • Atténuation de la traversée de chemin

Jour 2

Principes de mise en œuvre sécurisée

  • Injection
    • Méthodes d'attaque courantes d'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 spécifiques au stockage des mots de passe
  • Scripting intersite (XSS)
    • Scripting intersite (XSS)
    • Injection CSS
    • Exploitation : injection via d'autres balises HTML
    • Prévention de l'XSS
  • Contrôle d'accès au niveau des fonctions manquant
    • Filtrage des téléchargements de fichiers
  • Cryptographie pratique
    • Assurance de confidentialité avec la cryptographie symétrique
    • Algorithmes de chiffrement symétrique
    • Chiffrement par blocs – modes de fonctionnement
    • Hachage ou résumé de message
    • Algorithmes de hachage
    • Code d'authentification de message (MAC)
    • Assurance de l'intégrité et de l'authenticité avec une clé symétrique
    • Assurance de confidentialité avec le chiffrement à clé publique
    • Règle de base – détention 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 vérification 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 vie du développement logiciel (SDLC)
  • Étapes de la planification des tests (analyse des risques)
  • Définition de la portée 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/abus
    • Cas d'utilisation abusive/abus – exemple simple d'une 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 de DFD (Diagramme de flux de données)
    • 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
    • Le modèle de classement des menaces/risques DREAD
  • Techniques et outils de test de sécurité
    • Approches générales de test
    • Techniques pour les différentes étapes du SDLC
  • Revue de code
    • Revue de code pour la sécurité des logiciels
    • Analyse de l'origine des données (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 en cours d'exécution
    • Tests de sécurité manuels vs automatisés
    • Tests de pénétration
    • Tests de charge (Stress tests)
  • Fuzzing
    • Tests de sécurité automatisés – fuzzing
    • Défis du fuzzing
  • Analyseurs de vulnérabilité Web
    • Exercice – Utilisation d'un analyseur de vulnérabilité
  • Vérification et durcissement de l'environnement
    • Système commun de notation des vulnérabilités – CVSS
    • Analyseurs de vulnérabilité
    • Bases de données publiques
  • Étude de cas – Contournement de l'authentification par formulaires
    • Vulnérabilité de terminaison par octet NULL
    • La 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é – une trousse de démarrage
  • Bases de données de vulnérabilités
  • Lignes directrices de codage sécurisé .NET sur MSDN
  • Fiches de triches pour le 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