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