Les applications sont maintenant ouvertes au monde et les vecteurs d'attaques ont été démultipliés. L'exploitation de ces intrusions est même devenue un paramètre économique important. Intégrer quelques "bonnes pratiques" n'améliore que marginalement la sécurité d'un produit. Il est indispensable de construire une solution autour d'une équipe qui a été sensibilisée à la question de la sécurisation des développements. Nos consultants formateurs, tous fortement impliqués dans les aspects liés à la sécurité du développement des applications, sont obligés de suivre activement les nouveautés en la matière. Ainsi, les mises à jour de nos programmes de cours sont faites pratiquement en temps réel.
Objectifs de la formation
Cette formation Bonnes pratiques de codage au service de la sécurité va vous permettre d’obtenir un code propre, lisible, simple et compréhensible. Les conséquences immédiates sont des tests unitaires sont simplifiés, des risques d’erreur de codage minimisés, et un apprentissage facilité du code métier.
Tout ceci concourt à augmenter le niveau de fiabilité, de stabilité et de sécurité du code de l’application, en diminuant le risque d’ouvrir des failles applicatives.
Les concepts présentés sont assez génériques pour être appliqués quel que soit le langage objet utilisé.
À l’issue de cette formation, vous aurez acquis les connaissances nécessaires pour:
- Savoir mettre en oeuvre les bonnes pratiques SOLID et objets calisthenics.
- Comprendre les risques liés au codage d’une application (rigidité, fragilité, immobilisme, …)
- Connaître les règles de base utilisées en secure coding
Comprendre et mettre en oeuvre les bonnes pratiques SOLID et object calisthenics
À qui s’adresse cette formation ?
Public :
Cette formation s’adresse aux développeurs et chefs de projets.
Prérequis :
Pour participer à cette formation il est conseillé d’avoir des connaissances d’un langage de programmation objet.
Contenu du cours
Cycle de vie d’une application
Création, maintenance, évolutivité, testabilité, …
Reprise du legacy code
Causes de régression et de bugs
Complexité cyclomatiqueCERT
Présentation des CERT
Règles de bases génériques
Syntaxe, utilisation des numériques, initialisations, visibilités, …
Sérialisation des objets
Utilisation des logsUtilisation des frameworks
SQL vs ORM
Frameworks de sécuritéLes principes SOLID
Comment créer les principes une application maintenable, extensible, réutilisable et testable avec les principes IMPORTANTS de la programmation objet
Single Responsability Principle – responsabilité unique
Open/Close Principle – ouverture aux extensions et fermeture aux modifications
Liskov Substitution Principle – substitution de Liskov
Interface Segregation Principle – ségrégation des interface
Dependency Inversion Principle – inversion des dépendancesObject Calisthenics
Comment penser son code autrement
Comment améliorer la qualité de son code (lisibilité, maintenabilité, réutilisabilité, testabilité, encapsulation)Les 9 règles de base
Un niveau d’indentation
Pas d’utilisation de ELSE
Créer des classes enveloppes (wrappers) pour les types primitifs et String
Encapsuler les collections dans des classes
Un concept par ligne d’instruction
Ne pas utiliser d’abréviation
Garder un code “petit”
Pas de classes avec plus de deux variables d’instance
Pas de getters et settersQuelques outils d’analyse statique de code
propriétaires vs libres
CodeSonar, RATS, CppLint, VCG,
Objectifs de la formation
Le langage Java contient intrinsèquement de nombreux mécanismes permettant l’élaboration de programmes sûrs. Ces mécanismes couvrent différentes facettes de la sécurité comme l’intégrité, la confidentialité, l’identification sûre ou la protection contre les malveillances.
Cette formation Sécurité des applications Java permet de passer en revue ces différents sujets et propose à chaque fois des ateliers pédagogiques permettant de comprendre en profondeur les mécanismes d’exécution de la JVM. Le dernier chapitre se concentre sur les spécificités des applications web Java EE en détaillant SSL, le modèle de sécurité des différents tiers ainsi que les spécificités des architectures SOA.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir sécuriser des applications Java.
- Connaitre les concepts liés à la sécurité
- Savoir charger et vérifier des classes
- Connaitre le cross-site scripting et la sécurité liée
- Maitriser le gestionnaire de sécurité et permissions
- Maitriser SSL et Java
À qui s’adresse cette formation ?
Public :
Cette formation Sécurité Java s’adresse à des Développeurs ou Chefs de projet.
Prérequis :
Il est demandé aux participants de connaître les notions de base du langage Java.
Contenu du cours
Introduction aux concepts liés à la sécurité
Identification et méthodes d’authentification.
Autorisations et permissions.
Confidentialité, non-répudiation, cryptage, clés publiques/privées, autorités de certification.
Pare-feu et DMZ, rupture de protocole.
Les types d’attaques.
Le modèle de sécurité de la JVMChargement et vérification des classes
Un des premiers mécanismes implémentés par la JVM est de s’assurer que le code chargé en mémoire ne peut contourner les mécanismes de protection du langage.
Rôle du compilateur Java
Rôle des classloader
Les différentes zones mémoires de la JVM et leur gestion par le garbage collector
Hiérarchie des différents classloader
Vérification du byte-code
Chargement dynamique ce classe
Implémenter un class loaderAtelier
Modification d’un fichier .class et exécution avec l’option -noverify, Implémentation d’un classloader chargeant des classes cryptées.
Cross-site scripting et sécurité
Le principe du XSS (injection de contenu)
Liens avec les programmes Java
Déclinaisons (Stored XSS, Reflected XSS, DOM-based XSS)
Nouvelles “possibilités” avec le HTML 5Atelier
Exemples d’hameçonngae et de récupération de cookies.
Gestionnaire de sécurité et permissions
Les permissions et le gestionnaire de sécurité permettent de contrôler finement les autorisations d’un programme et ses interactions avec son environnement.
Opérations contrôlables
Activation du gestionnaire de sécurité
Domaine de protection, provenance du code et permissions
Parcours de l’API
Fichier .policy
Les classes Permission
Implémentation d’une classe PermissionAtelier
Mise au point d’un fichier .policy, implémentation d’une classe Permission.
JAAS, Authentification et Autorisations
JAAS offre les services d’authentification et d’autorisations des utilisateurs ou systèmes externes interagissant avec l’application tout en restant du indépendant de la technologie d’authentification.
Présentation de JAAS
LoginContext / LoginModule, Configuration et empilement des login modules
LoginModule communément disponibles
Implémentation d’un login module spécifique, les CallbackHandler
Autorisations, Objet Subject et Principals, Configuration des permissionsAtelier
Implémentation d’un LoginModule, Configuration des autorisations à partir de rôles utilisateurs.
Signatures numériques et chiffrement
Les techniques de cryptographie permettent de garantir la provenance d’un code et sa non altération.
Empreinte de messsage, SHA1 et MD5
Signature numérique, clé publiques et clés privées
L’outil keytool et les keystore
L’outil jarsigner
Les autorités de certification
Déploiement de code signé dans un intranet ou sur internet
Permissions basées sur des keystore
Chiffrement de données, les algorithmes AES et RSA
AtelierVérification d’une empreinte, Déploiement d’un applet dans un intranet, Chiffrement symétrique et asymétrique.SSL et Java
Fonctions de Java Secure Socket Extension (JSSE). Comparaison avec Java GSS-API
Authentification via certificats X.509. TLS et SSL.
Encryption à base de clés publiques, Java Cryptography Extension (JCE).
Utilisation de SSL avec HTTP.
Atelier – Configurer SSL et mise en oeuvre de sockets SSL. Utiliser des outils du JDK (Keystore).
La sécurité d’une application JEE
Authentification au niveau des conteneurs Web et EJB.
Rôles applicatifs, permissions et descripteurs de déploiement XML.
Contrôles dynamiques via les API Servlets et EJB.
La sécurité dans les API : JDBC/JPA, JNDI, JTA, JMS, JCA.Atelier
Sécurité d’une application déployée dans Tomcat.
La sécurité des services web SOAP
Sécurité au niveau HTTP.
Sécurité au niveau SOAP & WSDL avec WS-Security (WSS4J, XWSS…) & WS-Policy.
Les handlers SOAP WS-Security exploitant JAAS.Atelier
Mise en pratique avec une implémentation de WS-Security (XWSS).
La sécurité des services web REST
Utilisation de SSL avec JAX-RS.
Les apports de oAuth (authentification sur Internet).
oAuth 1.0 et 2.0.Atelier
Mise en pratique avec une implémentation Apache CXF de JAX-RS.
Objectifs de la formation
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir concevoir des architectures Active Directory sécurisées
- Concevoir des architectures AD sécurisées
- Tester la sécurité de vos infrastructures AD
- Utiliser PowerShell pour la sécurisation AD
À qui s’adresse cette formation ?
Public :
Ce cours Sécurité Active Directory s’adresse aux responsables de la sécurité SI, administrateurs Windows et Active Directory (AD), gestionnaires de projet axés sur la sécurité, architectes d’infrastructure et de système, intégrateurs système et responsable des superviseurs informatiques et de la protection des données.
Prérequis :
Pour suivre cette formation Sécurité Active Directory, il est nécessaire d’avoir des connaissances de base des environnements Active Directory et des systèmes Windows.
Contenu du cours
Mesures de sécurisation de l’Active Directory
Authentification par certificat et chiffrement TLS pour PowerShell
Certificats pour :
– L’authentification par carte à puce de PowerShell Remoting
– Le chiffrement TLS de la communication à distance PowerShell
– Signer des scripts PowerShell pour AppLocker
– Le chiffrement TLS des requêtes WMI avec PowerShell
– Crypter les mots de passe administrateur (au lieu de LAPS)
– Les serveurs Web, les contrôleurs de domaine et tout le reste
Installer un serveur de certificats Windows avec PowerShellSécurité AD avancée
Script d’installation PowerShell pour l’infrastructure à clé publique (PKI)
Gérer les certificats numériques avec PowerShell
Modèles de certificats personnalisés dans Active Directory
Contrôle de l’inscription automatique des certificats
Configuration d’une batterie de serveurs Web de répondeur OCSP (Online Certificate Status Protocol)
Configuration de la publication de la liste de révocation des certificats
Déploiement de cartes à puce, de jetons intelligents et de cartes à puce virtuelles TPM
La référence en matière d’authentification multifacteur est une carte à puce / un jeton
Jetons intelligents YubiKey pour la connexion, la communication à distance PowerShell et bien plus
Cartes à puce virtuelles Trusted Platform Module (TPM)
Enregistrer en toute sécurité des jetons et des cartes au nom d’autres utilisateurs
Comment révoquer les certificats compromis
Script PowerShell pour :
– Auditer les autorités de certification racines de confiance
– Supprimer les certificats de pirate1.
Automatisation du renforcement des serveurs pour DevOps
Remplacement du gestionnaire de serveur par PowerShell
Ajout et suppression de rôles et de fonctionnalités
Collecte à distance d’un inventaire des rôles et des fonctionnalités
Pourquoi utiliser Server Nano ou Server Core ?
Exécution automatique de PowerShell après une panne de service
Identités, mots de passe et risques des comptes de service
Outils pour réinitialiser les mots de passe des comptes de service en toute sécuritéScript du pare-feu Windows
Gestion PowerShell des règles du pare-feu Windows
Bloquer les connexions sortantes des logiciels malveillants
Contrôle d’accès basé sur les rôles pour les ports d’écoute
Intégration IPsec approfondie pour l’authentification des utilisateurs
Journalisation du pare-feu dans les journaux d’événements, pas dans les journaux texte2.
Partager les autorisations pour les ports d’écoute TCP / UDP avec IPsec
Gestion PowerShell des règles IPsec
IPsec pour bloquer les mouvements latéraux post-exploitation
Limitation de l’accès aux ports en fonction de l’appartenance à un groupe global
VLAN chiffrés basés sur IPsec
IPsec n’est pas seulement pour les VPN !Protocoles et services exploitables
Billets Kerberos
Attaques RDP (Remote Desktop Protocol)
Chiffrement natif SMBv3 vs Wireshark
NTLM, NTLMv2 et Kerberos
Gouffres DNS pour la détection des logiciels malveillants et des menaces
Attaques DNS DoS et limitation du taux de réponse
Objectifs de la formation
De par sa nature même, le service dynamique de pages web ouvre de nombreuses portes sur le monde extérieur. Pour le développeur, il est primordial de prendre conscience des types d’attaques auxquelles son code sera potentiellement exposé. Cette formation PHP Sécurité se concentre sur le point de vue du développeur, les aspects “sécurisation serveur” étant abordés dans les cours d’administration. Une approche pratique basée sur des sessions de hacking éthique.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir sécuriser PHP avec de bons réglages.
- Connaitre les principes de “cookies” et de “Sessions” en PHP
- Savoir sécuriser PHP .ini avec les bons réglages
- Maitriser PHP Object et PHP7
- Protéger ses formulaires
- Connaitre l’accès au réseau par PHP
- Personnaliser la sécurité dans les Frameworks et briques logicielles
- Savoir Sécuriser l’emploi des extensions en PHP
À qui s’adresse cette formation ?
Public :
Cette formation s’adresse aux développeurs PHP ayant déjà une bonne pratique du langage et désirant développer des applications sécurisées.
Prérequis :
Les participants doivent bien connaître la programmation sous PHP / Sql et avoir de bonnes notions de programmation Client (JavaScript).
Contenu du cours
Comprendre pour réduire les risques des applications PHP
Les Risques
Destruction de données
Détournement de site
Publication de données confidentielles
Abus de ressources
Vol d’identitéPlan Sécurité
Conception, Développement et Maintenance
Sécurité et Pages Web
XSS
Principe et méthodes de protection
Moteur de rechercheAtelier
Mise en oeuvre et contrage d’une injection sur le site BDPhilia
CSRF
Principe et contre-mesures
Virus en base de donnéesAtelier
Mise en oeuvre d’une propagation sur le forum BDPhilia
Formulaires PHP : la grande porte
Les failles
Validation et limitations de l’approche JavaScript HTML5
Cookies de contrôle
Chaînage, attaques HTTP et Ajax
Contre-mesures
TokenValidation des entrées
Tests et principe des listes
Expressions régulières, standards et filtresUpload de fichier
Api File
Contrôle des fichiers chargés
Failles et contre-mesuresAtelier
Exécution maligne d’un fichier téléchargé via le backoffice de BDPhilia
Sécurité PHP : Cookies et Sessions
Cookies
Principes et risques
Manipulation JavaScript
Tableaux de cookiesSessions
Mode Cookie vs. Header
Principe du vol de sessionSécuriser PHP : les bons réglages
PHP.ini
Directives sensibles, sessions et erreurs
Protéger les scripts
Protection physique
Exécution de scripts distants ou à la voléeAtelier
Réglage des options sensibles. Discussion sur les conséquences au niveau développement.
Sécurité PHP : Bases de Données
Failles potentielles
Risques : données et administration
StockageInjections SQL
Principe et contre-mesure
Requête préparée
Procédures stockées et requêtes paramétrées
LimitesFichiers d’accès
Organisation et valeurs par défaut
Accès anonymes et protocolesAtelier
Réécrire ses requêtes sql en les protégeant
Sécurité PHP : PHP Object et PHP7
Ecriture Heredoc
Scope des variables et constantes
Heritage
MVCTravailler avec des Méthodes et Class protégées
Sécuriser l’emploi des extensions en PHP
Se protéger contre le SPAM
Lire et écrire des fichiers XML
Lire et écrire des fichiers JSON
Les Webservices
Les Webservices securisées
Deserialisation dans des classSpam via un formulaire de contact : Injections et contre-mesuresAtelier
Utiliser un formulaire de contact pour envoyer un mail à 3 adresses différentes
Accès réseau par PHP
Appels séquentiels et récursifs
Attaque furtiveAtelier
Soumettre une url détournée PHP_SELF
DoS
Quotas et gestion des charges
Atelier
Test DDOS
Mots de passe
Renforcement et stockage
Création et rappelAtelier
Projet de Recap
Chiffrement et Signature
Cryptage / décryptage : Implémentation PHP et MySql
Atelier
Cryptage des données client
Ruses de Sioux (Protection)
Pot de Miel, Obfuscation et Turing inversé
Atelier
Créer un pot de miel pour l’admin du BO, obfusquer les formulaires de recherche en MD5 et appliquer un test de Turing inversé sur le formulaire de contact
Frameworks et briques logicielles
Gestion de la sécurité dans les développements composites
Sur des frameworks PHP (Symphony Laravel…)Audit de Sécurité
Méthodologie de base, Cross-test et Rapport d’Audit
Atelier
Rédiger un rapport d’audit sur la version de base de BDPhilia et sur les mesures prises pour améliorer la situation.
Objectifs de la formation
La sécurité informatique est devenue un enjeu technique et économique primordial.
Cette formation Développement Sécurisé en C++ a pour objectif de sensibiliser les développeurs et les chefs de projets à la sécurité du code.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir maîtriser la sécurité du code.
- Connaître le fonctionnement de la pile
- Repérer les erreurs dans le code
- Connaître le rôle des acteurs et la classification des risques : CERT, CWE, OWASP
- Appliquer les bonnes pratiques.
La sécurité informatique est devenue un enjeu technique et économique primordial.
Cette formation Développement Sécurisé en C++ a pour objectif de sensibiliser les développeurs et les chefs de projets à la sécurité du code.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir maîtriser la sécurité du code.
- Connaître le fonctionnement de la pile
- Repérer les erreurs dans le code
- Connaître le rôle des acteurs et la classification des risques : CERT, CWE, OWASP
- Appliquer les bonnes pratiques.
À qui s’adresse cette formation ?
Public :
Ce cours s’adresse aus Développeurs et Chefs de projets.
Prérequis :
Pour suivre cette formation, il est nécessaire de pratiquer les langages C et C++.
Contenu du cours
1.
Découvrir le Secure Coding
Connaître les risques liés au développement
Repérer les traces laissées par les développeurs : mémoire, journaux…
Identifier les attaques
Connaître les différents acteurs : CERT, PCI, CWE, OWASP…
Apprendre le codage sécurisé d’une applicationClassification des risques CERT
Les domaines : integer, string, floating point, array…
Analyser la sévérité, priorité, etc.
Les guidelinesLe langage C++
Modèle mémoire
Compilation
Comprendre les appels de fonction : structure de la pile
Legacy code en langage CCoder de manière à sécuriser le code
Exemples de code
Les chaînes de caractères
Les pointeurs
Gestion de la mémoire
Les entiers
Les sorties formatées
Les fichiersAteliers
buffer overflow
SQL Injection
OS Command Injection
Integer Overflow
Exécution d’un code arbitraireLes bonnes pratiques
Apprendre les bonnes pratiques de codage :
macro et inline
gestion de la mémoire : new, free, gestion des erreurs
structure des classes
passer à C++14 et C++17 : généralités (nullptr, enum, deleted fonctions) , utilisation des smart pointers, nouveaux mots clés
Connaître les standards de sécurité
Vérifier son codeAteliers
Améliorer un legacy code
Gestion de la mémoire avec les smart-pointers
Améliorer la lisibilité et la sécurité du code : spécificateurs default, delete,…
Utiliser les lambdasConclusion
Objectifs de la formation
Le Framework .NET intègre des fonctionnalités de sécurité très évoluées, qui s’appliquent aussi bien aux applications distribuées, qu’aux applications Web ASP.NET ou aux applications de bureau Windows. L’écriture d’un code sécurisé, l’utilisation d’un certificat, le chiffrement de données sont autant de challenges que le bon développeur .Net doit relever.
Cette formation Sécurité des applications .NET vous permet de comprendre les différentes problématiques de sécurité des applications Web, de connaître les meilleures pratiques pour écrire un code de qualité. Vous connaîtrez également les principales attaques Web afin de pouvoir les anticiper.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Savoir maîtriser la sécurité des applications web.
- Comprendre les problématiques de sécurité des applications Web
- Connaître les meilleures pratiques pour écrire un code de qualité intégrant de façon native les fondamentaux de la sécurité
- Connaître les principales attaques Web pour comprendre comment s’en prémunir
Savoir appliquer les mécanismes techniques de prévention des risques tel que l’authentification forte le cryptage de données ou encore l’utilisation de certificats
À qui s’adresse cette formation ?
Public :
Cette formation Sécurité .NET s’adresse aux chefs de projet informatique et aux développeurs .NET avec une bonne expérience.
Prérequis :
Connaissance du développement Web /.NET et maîtriser un langage de programmation (C#, Java ou C++).
Contenu du cours
Sécurité dans le Framework et du code
Concepts fondamentaux
Sécurité d’accès du code et des ressources
Sécurité basée sur les rôles
Le principe du W^X
Services de chiffrement
Validation et contrôle des entrées / sorties
Gestion et masquage d’erreurs
Gestion sécurisée de la mémoire
Contrôle d’authenticité et d’intégrité d’une application/d’un code
Offuscation du code
Reverse engineering sur : bundle C#, application Java, binaire Windows
Contrôle des droits avant exécution du code
Sécuriser les données sensibles présentes dans un binaire
Stack/Buffer/Heap overflowLes bases de la cryptographie
Cryptographie – Les définitions
Types de chiffrement : chiffrement à clés partagées, chiffrement à clé publique
Symétrique vs. asymétrique, combinaisons symétrique / asymétrique
Fonctions de hachage
Utilisation des sels
Signatures numériques, processus de signature, processus de vérificationChiffrement, hash et signature des données
Cryptographie Service Providers (CSP)
Système, sécurité, cryptographie
Choix des algorithmes de chiffrement
Chiffrement symétrique : algorithme (DES, 3DES, RC2, AES), chiffrement de flux, mode de chiffrement (CBC, ECB, CFB)
Algorithmes asymétriques
Algorithme : RSA, DSA, GPG
Algorithme de hachage : MD5, SHA1 / SHA2 / SH3Vue d’ensemble d’une infrastructure à clé publique (PKI)
Certificat numérique : certificat X.509
PKI – Les définitions
Les fonctions PKI
PKI – Les composants
PKI – Le fonctionnement
Applications de PKI : SSL, VPN, IPSec
IPSec et SSL en entreprise
Smart Cards (cartes intelligentes)
Autorité de certificationSSL et certificat de serveur
Certificat de serveur SSL : présentation, autorité de certification d’entreprise, autorité de certification autonome
Utilisation de SSL et des certificats clients
Certificats clients
Fonctionnement de SSL : phase I, II, III et IV
Vérification de la couverture d’utilisation d’un certificat (lors du handshake)
Vérification des dates d’utilisation d’un certificatSécurité des services Web
Objectifs de la sécurisation des services Web : authentification, autorisation, confidentialité et intégrité
Limitations liées à SSL
Sécurité des services Web : WSE 2.0, sécurisation des messages SOAP / RESTJetons de sécurité
Jetons de sécurité : User-Name Token, Binary Token, XML Token, JWT (JSON Web Tokens), Session-based Token
Intégrité d’un jeton (MAC / HMAC)
Cycle de vie d’un jeton, expiration automatique (ou pas), contexte d’utilisation d’un jeton
Habilitations suivant le contexte du jeton
Certificats X.509
Signature des messages SOAP / REST : création d’un jeton de sécurité, vérification des messages (MAC / HMAC), chiffrement des messages, déchiffrement du messageSécurité et développement Web
Classification des attaques : STRIDE, OWASP
Les erreurs classiques
Authentification par jeton et gestion des habilitations
Les handlers et méthodes HTTP
Séparation des handlers par contexte de sécurité
Attaque par injection
Injection HTML
Injection CSS
Injection JS
Injection SQLXSS (Injection croisée de code) : XSS réfléchi, XSS stocké
XSS Cookie Stealer
CSRF : Cross-Site Request ForgeryOutils de sécurité et d’audit
Outils du SDK liés à la sécurité
Outils pour mener les tests de sécurité
Objectifs de la formation
Cette formation se propose d’initier les différents membres d’une équipe de développement sur la sécurisation du code et sur les processus de développements sécurisés.
Le cours vous apprend comment construire un produit sécurisé sur un environnement Microsoft Windows, de la mise en place des processus de gestion de projet, en passant par la modélisation jusqu’à la mise en production.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Apprendre à décomposer votre application en composants
- Modéliser les menaces et apporter des solutions techniques génériques d’atténuation.
- Exploiter les failles de type “Buffer Overrun” afin de vous sensibiliser sur les risques liés à ce type d’erreurs de robustesse de code
- Comprendre les parades mises en place par Microsoft et vous-même.
- Maitriser les techniques de programmation sécurisée sur les différents thèmes abordés lors de la modélisation des menaces
À qui s’adresse cette formation ?
Public :
Ce stage s’adresse aux Chef de projet (avec passé de développeur), aux Responsables technique ainsi qu’aux Développeurs.
Prérequis :
Savoir développer dans un environnement Microsoft. Connaître Windows et ses APIs
Contenu du cours
Qu’est-ce que la sécurisation du code ?
Contexte
Intégrer la sécurisation dans les processus de développement
Principes générauxModélisation des menaces
Décomposer une application
Déterminer les menaces d’une application
Noter et classer les menaces
Répondre aux menacesExploitation de « Buffer overrun »
Initiation à l’exploitationPrincipe général
Écrasement de l’adresse de retour
Exploitation des exceptions Win32SécurisationOptions de compilation (Stack cookies, DEP, ALSR, etc.)
Différences entre Windows 32 bits et Windows 64 bitsTechniques de programmation sécurisée :
Ne pas faire confiances aux données d’entrée
S’exécuter avec les droits minimum
Les pièges du chiffrement
Déterminer les bons ACLs
Protéger les données sensibles
Se protéger des attaques par déni de service
Éviter d’utiliser des APIs non sécurisées
Bonnes pratiques la synthèse
Objectifs de la formation
Cette formation dresse un panorama concret des menaces du Web. Elle détaille aussi bien les types d’attaques que peut subir une application web que les failles les plus courantes des configurations serveurs ou des applications déployées. Le cours se concentre également sur les technologies et méthodologies permettant de se protéger, ainsi que sur les outils permettant de contrôler la sécurité des applications.
La formation s’attache également à vous communiquer les « bonnes pratiques » liées au développement sécurisé d’applications.
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Maitriser les conceps fondamentaux de la sécurite des applications
- Comprendre l’environnement réseau des applications
- Savoir identifier les vulnérabilités les plus courantes d’une application web
- Connaître les bonnes pratiques pour un développement sécurisé
- Savoir mettre en place une authentification sécurisée des utilisateurs
- Savoir mettre en place la sécurisation des flux avec SSL/TLS
- Connaître les principes d’utilisation d’un reverse proxy pour la mise en œuvre SSL/TLS, l’authentification, etc.
Savoir tester si une application a été sécurisée au bon niveau d’exigence
À qui s’adresse cette formation ?
Public :
Cette formation s’adresse à toute personne désireuse de protéger ses applications web d’attaques potentielles. Elle concerne plus particulièrement les personnes directement impliquées dans le développement, la maintenance ou l’audit d’applications Web, tels que les développeurs d’applications web, le personnel chargé de l’Assurance Qualité sur les logiciels, les testeurs et les auditeurs de la sécurité des applications web, ainsi que les administrateurs de la sécurité.
Prérequis :
Connaître un langage de programmation (Java, C# ou C++) et disposer d’une culture Web (HTML, formulaire, serveur web, base de données).
Contenu du cours
Présentation des menaces, vulnérabilités des applications Web
Présentation des différents efforts de standardisation de la terminologie liée à la sécurité
Typologie des menaces selon le WASC, le top 10 des menaces selon OWASP
Failles applicatives : injection, protection d’URL, faille de référence, stockage non sécurisé
Attaques côté client : Cross Site Scripting (XSS), gestion de session et authentification, attaque CSRF, Phishing…
Failles de configuration : attaques sur les configurations standard
Attaques de type DDOS
Les dangers spécifiques du Web 2.0Technologies liées à la sécurité
Firewalls, panorama des outils, techniques de base réseaux
Filtres des requêtes HTTP
Empreinte de message, les algorithmes SHA-x et MD5
Signature numérique, Clé publique/ clé privée, Coffre à clé et coffre de confiance, Autorités de certification
Chiffrement de données, les algorithmes AES et RSA
Protocoles SSL v2/v3 et TLS, PKI, certificats X509,
Techniques d’authentification HTTP, authentification par certificatSécuriser les applications Web
Protections basiques : Re-post des données, Time-out et déconnexion, Masquer les URL, Validation des données
Usurpation d’identité : Cookies et certificats numériques, Session ID et jeton de transaction, Détournement
Se protéger des attaques client : XSS ou Cross Site Scripting, Utilisation des références directes, CSRF ou Cross Site Request Forgery, Sécurité d’accès au SGBD, SQL Injection, Utilisation du JavaScript, Échappement des tags HTML
Protections contre les attaques de force brute, Liste de contrôle d’accèsContrôler la sécurité des applications Web
Test d’intrusion, audit de sécurité, scanners de vulnérabilités
Organiser une veille technologique efficace
Déclaration des incidents de sécuritéDémonstration
Mise en œuvre d’un serveur Web avec certificat X509 EV : analyse des échanges protocolaires
Exploitation d’une faille de sécurité critique sur le frontal HTTP
Attaque de type HTTPS StrippingGestion de la sécurité mobile
Composants d’un système d’exploitation mobile
Risques auxquels sont exposés les appareils mobiles
Les principales menaces pesant sur les appareils mobiles
Étudier les outils de piratage des appareils mobiles
Méthode pour sécuriser les environnements mobiles.