Plan du cours
Jour 1
- Sécurité IT et codage sécurisé
- Nature de la sécurité
- Termes liés à la sécurité IT
- Définition du risque
- Différents aspects de la sécurité IT
- Exigences des différents domaines d'application
- Sécurité IT vs. codage sécurisé
- Des vulnérabilités aux botnets et cybercriminalité
- Nature des failles de sécurité
- Raisons de la difficulté
- D'une machine infectée aux attaques ciblées
- Classification des failles de sécurité
- Taxonomie de Landwehr
- Les Sept Royaumes Pernicieux
- OWASP Top Ten 2013
- OWASP Comparaison du Top Ten 2003 – 2013
- Introduction au Microsoft® Security Development Lifecycle (SDL)
- Agenda
- Applications sous attaque...
- Évolution de la cybercriminalité
- Les attaques se concentrent sur les applications
- La plupart des vulnérabilités sont dans les petits logiciels ISV
- Origines du Microsoft SDL...
- Cadre chronologique de sécurité à Microsoft...
- Quelles applications sont obligées de suivre le SDL?
- Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Exigences pré-SDL : formation en sécurité
- Phase Un : exigences
- Phase Deux : conception
- Phase Trois : mise en œuvre
- Phase Quatre : vérification
- Phase Cinq : sortie – plan de réponse
- Phase Cinq : sortie – révision finale de sécurité
- Phase Cinq : sortie – archivage
- Exigence post-SDL : réponse
- Orientations du processus SDL pour les applications LOB
- Orientations SDL pour Agile méthodologies
- 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 – exemple
- Analyse de la surface d'attaque
- Réduction de la surface d'attaque – exemples
- Intimité
- Intimité
- Définir les comportements et préoccupations des applications
- Défense en profondeur
- Principe central du SDL : Défense en Profondeur
- Défense en profondeur – exemple
- Principe de privilèges minimums
- Privilèges minimums – exemple
- Valeurs par défaut sécurisées
- Valeurs par défaut sécurisées – exemples
- Surface d'attaque
- Principes d'implémentation sécurisée
- Agenda
- Microsoft Security Development Lifecycle (SDL)
- Bases des débordements de tampon
- Intel 80x86 Processors – principaux registres
- Disposition de l'adresse mémoire
- Mécanisme d'appel de fonction 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 le cadre de la pile
- Exercice BOFIntro – un simple exploit
- Vérification des entrées
- Concepts de vérification des entrées
- Problèmes entiers
- Représentation des entiers négatifs
- Débordement d'entier
- Dépassement arithmétique – devine la sortie!
- Exercice IntOverflow
- Quelle est la valeur de Math.Abs(int.MinValue)?
- Mitigation des problèmes entiers
- Mitigation des problèmes entiers
- Éviter le dépassement arithmétique – addition
- Éviter le dépassement arithmétique – multiplication
- Détecter l'overflow avec le mot-clé checked en C#
- Exercice – Utilisation du mot-clé checked en C#
- Exceptions déclenchées par les dépassements dans C#
- Cas pratique – Débordement d'entier en .NET
- Vulnérabilité de débordement d'entier en situation réelle
- Exploitation de la vulnérabilité de débordement d'entier
- Vulnérabilité de navigation de chemin
- Mitigation des navigations de chemin
Jour 2
- Principes d'implémentation sécurisée
- Injections
- Méthodes typiques SQL de l'injection
- Injection aveugle et basée sur le temps SQL
- Méthodes de protection contre l'injection SQL
- Injection de commande
- Authentification compromise – 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 pour le stockage des mots de passe
- Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Injection CSS
- Mise en œuvre : injection par l'intermédiaire d'autres balises HTML
- Prévention XSS
- Contrôle de niveau de fonctionnalité manquant
- Filtrage des téléchargements de fichiers
- Cryptographie pratique
- Fournir la confidentialité avec la cryptographie symétrique
- Algorithmes de chiffrement symétriques
- Cryptogrammes par blocs – modes d'opération
- Hachage ou résumé du message
- Algorithmes de hachage
- Mot de passe authentification (MAC)
- Fournir l'intégrité et l'authenticité avec une clé symétrique
- Fournir la confidentialité par le chiffrement à clé publique
- Règle empirique – possession de la clé privée
- Erreurs typiques en gestion des mots de passe
- Exercice – Mots de passe codés en dur
- Conclusion
- Injections
- 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 SDLC
- Étapes du plan de test (analyse des risques)
- Définition et collecte d'informations
- Bénéficiaires
- Actifs
- La surface d'attaque
- Objectifs de sécurité pour les tests
- Mise en modèle des menaces
- Mise en modèle des menaces
- Profil du pirate informatique
- Mise en modèle des menaces basée sur les arbres d'attaques
- Mise en modèle des menaces basée sur les mauvais usages/abuses de cas
- Cas d'utilisation incorrects/cas d'abus – un exemple simple d'une boutique Web
- Approche STRIDE par élément pour la modélisation des menaces – SDL MS
- Identification des objectifs de sécurité
- Diagrammes – exemples d'éléments DFD
- Diagramme de flux de données – exemple
- Numerotation des menaces – éléments STRIDE et DFD du SDL MS
- Analyse des risques – classification des menaces
- Modèle de notation de menace/risque DREAD
- Techniques et outils de tests de sécurité
- Approches générales de test
- Techniques pour différentes étapes du SDLC
- Vérification de code
- Vérification de code pour la sécurité logicielle
- Analyse des taches
- Héuristiques
- Analyse statique de code
- Analyse statique du code
- Analyse statique du code
- Exercice – Utilisation d'outils d'analyse statique de code
- Vérification de l'implémentation
- Vérification manuelle en cours d'exécution
- Tests de sécurité manuels vs. automatisés
- Test de pénétration
- Tests de stress
- Fuzzing
- Tests automatiques de sécurité - fuzzing
- Défis du fuzzing
- Balayeurs de vulnérabilités Web
- Exercice – Utilisation d'un balayeur de vulnérabilité
- Vérification et durcissement de l'environnement
- Système d'évaluation des vulnérabilités communes – CVSS
- Balayeurs de vulnérabilités
- Base de données publiques
- Cas pratique - Contournement de l'authentification par formulaires
- Vulnérabilité du terminaison NULL
- Vulnérabilité de contournement de l'authentification par formulaire dans le code
- Exploitation du contournement de l'authentification par formulaire
- Sources d'information
- Sources sur le codage sécurisé – un kit de départ
- Bases de vulnérabilités
- Lignes directrices .NET pour le codage sécurisé sur MSDN
- Feuilles de référence .NET pour le codage sécurisé
- Livres recommandés – .NET et ASP.NET
Nos clients témoignent (5)
Plusieurs exemples pour chaque module et grande connaissance du formateur.
Sebastian - BRD
Formation - Secure Developer Java (Inc OWASP)
Traduction automatique
Module3 Attaques et exploits des applications, XSS, SQL injection Module4 Attaques et exploits des serveurs, DOS, BOF
Tshifhiwa - Vodacom
Formation - How to Write Secure Code
Traduction automatique
Informations générales sur les cours
Paulo Gouveia - EID
Formation - C/C++ Secure Coding
Traduction automatique
Les connaissances du formateur étaient excellentes, et la façon dont les séances étaient organisées permettant au public de suivre les démonstrations a vraiment aidé à ancrer cette connaissance, contrairement à simplement écouter passivement.
Jack Allan - RSM UK Management Ltd.
Formation - Secure Developer .NET (Inc OWASP)
Traduction automatique
Rien, c'était parfait.
Zola Madolo - Vodacom
Formation - Android Security
Traduction automatique