Plan du cours
Jour 1
Sécurité informatique et codage sécurisé
- Nature de la sécurité
- Termes liés à la sécurité informatique
- Définition du risque
- Aspects différents de la sécurité informatique
- Exigences des différentes zones 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 difficulté
- 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 Microsoft® Security Development Lifecycle (SDL)
- Programme
-
Les applications sous attaque...
- Évolution du cybercrime
- Les attaques se concentrent sur les applications
- La plupart des vulnérabilités se trouvent dans des applications d'ISV plus petites
-
Origines du Microsoft SDL...
- Chronologie de la sécurité chez Microsoft...
- Quelles applications doivent suivre l'SDL ?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Exigences pré-SLD : Formation à la sécurité
- Phase Un : Exigences
- Phase Deux : Conception
- Phase Trois : Mise en œuvre
- Phase Quatre : Vérification
- Phase Cinq : Publication – Plan de réponse
- Phase Cinq : Publication – Revue finale de sécurité
- Phase Cinq : Publication – Archivage
- Exigence post-SLD : Réponse
- Guide de processus SDL pour les applications LOB
- Guide SDL pour les méthodologies agiles
- Le développement sécurisé des 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é
- Confidentialité
- Compréhension des comportements et préoccupations de l'application
-
Défense en profondeur
- Principe fondamental de SDL : Défense en profondeur
- Défense en profondeur – exemple
-
Principe du privilège minimal
- Privilège minimal – exemple
-
Défauts de sécurité par défaut
- Défauts de sécurité par défaut – exemples
Principes de mise en œuvre sécurisée
- Programme
- Microsoft Security Development Lifecycle (SDL)
-
Bases des débordements de tampon
- Processeurs Intel 80x86 – registres principaux
- La disposition des adresses mémoire
- Le mécanisme d'appel de fonction en C/C++ sur x86
- Les variables locales et le 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 le résultat !
- 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 du débordement 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é réelle de débordement d'entier
- Exploitation de la vulnérabilité de débordement 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 par injection SQL typiques
- Injection SQL aveugle et basée sur le temps
- Méthodes de protection contre l'injection SQL
- Injection de commande
-
Authentification défectueuse - 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 par d'autres balises HTML
- Prévention du XSS
-
Manque de contrôle d'accès au niveau fonctionnel
- Filtrage des téléchargements de fichiers
-
Cryptographie pratique
- Fournir la confidentialité avec la cryptographie symétrique
- Algorithmes de chiffrement symétriques
- Chiffrements 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 générale – 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 vérification sécurisée
- Tests fonctionnels vs. tests de sécurité
- Vulnérabilités de sécurité
- Priorisation
- Tests de sécurité dans l'SDLC
- Étapes de la planification des tests (analyse des risques)
-
Définition et recueil 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 de mauvaise utilisation/abus
- Cas de mauvaise utilisation/abus – un exemple simple d'un magasin Web
- Modélisation des menaces par élément STRIDE – MS SDL
- Identification des objectifs de sécurité
- Diagrammation – exemples d'éléments DFD
- Diagramme de flux de données – exemple
- Énumération des menaces – STRIDE et éléments DFD de l'SDL MS
- Analyse des risques – classification des menaces
- Modèle d'évaluation des menaces/risques DREAD
-
Techniques et outils de test sécurisé
- Approches générales de test
- Techniques pour différentes étapes de l'SDLC
-
Revue du code
- Revue du code pour la sécurité des logiciels
- Analyse de pollution
- Heuristiques
-
Analyse statique du code
- Analyse statique du code
- Exercice – Utilisation d'outils d'analyse statique du code
-
Test de la mise en œuvre
- Vérification manuelle à l'exécution
- Tests manuels vs. tests automatisés de sécurité
- Test d'intrusion
- Tests sous contrainte
-
Brouillage
- Test de sécurité automatisé - brouillage
- Défis du brouillage
-
Outils de détection des vulnérabilités Web
- Exercice – Utilisation d'un outil de détection des vulnérabilités
-
Vérification et sécurisation de l'environnement
- Système d'évaluation des vulnérabilités courantes – CVSS
- Outils de détection des vulnérabilités
- Bases de données publiques
-
Étude de cas – Contournement de l'authentification par formulaire
- Vulnérabilité de fin de chaîne nulle
- La vulnérabilité de contournement de l'authentification par formulaire dans le code
- Exploitation du contournement de l'authentification par formulaire
Sources de connaissances
- Sources de codage sécurisé – un kit de démarrage
- Bases de données des vulnérabilités
- Directives de codage sécurisé .NET sur MSDN
- Feuilles de triche pour le codage sécurisé .NET
- Livres recommandés – .NET et ASP.NET
Nos clients témoignent (5)
Plusieurs exemples pour chaque module et une grande connaissance de la part du formateur.
Sebastian - BRD
Formation - Secure Developer Java (Inc OWASP)
Traduction automatique
Module3 Attaques et exploitations d'applications, XSS, injection SQL Module4 Attaques et exploitations de serveurs, DOS, BOF
Tshifhiwa - Vodacom
Formation - How to Write Secure Code
Traduction automatique
Informations générales sur le cours
Paulo Gouveia - EID
Formation - C/C++ Secure Coding
Traduction automatique
Les connaissances du formateur sur le sujet étaient excellentes, et la façon dont les séances étaient organisées afin que l'audience puisse suivre les démonstrations a vraiment aidé à ancrer ces connaissances, par rapport à simplement s'asseoir et écouter.
Jack Allan - RSM UK Management Ltd.
Formation - Secure Developer .NET (Inc OWASP)
Traduction automatique
Rien n'était parfait.
Zola Madolo - Vodacom
Formation - Android Security
Traduction automatique