Formation Développement Sécurité

  • Home
  • Formation Développement Sécurité

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

  1. Cycle de vie d’une application

    Création, maintenance, évolutivité, testabilité, …
    Reprise du legacy code
    Causes de régression et de bugs
    Complexité cyclomatique

    CERT

    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 logs

    Utilisation 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épendances

    Object 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 setters

    Quelques 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

  1. 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 JVM

    Chargement 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 loader

    Atelier

    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 5

    Atelier

    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 Permission

    Atelier

    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 permissions

    Atelier

    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

  1. 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 PowerShell

    Sé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 pirate

    1.     

    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 texte

    2.     

    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

  1. 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 recherche

    Atelier

    Mise en oeuvre et contrage d’une injection sur le site BDPhilia

    CSRF

    Principe et contre-mesures
    Virus en base de données

    Atelier

    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
    Token

    Validation des entrées

    Tests et principe des listes
    Expressions régulières, standards et filtres

    Upload de fichier

    Api File
    Contrôle des fichiers chargés
    Failles et contre-mesures

    Atelier

    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 cookies

    Sessions

    Mode Cookie vs. Header
    Principe du vol de session

    Sé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ée

    Atelier

    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
    Stockage

    Injections SQL

    Principe et contre-mesure
    Requête préparée
    Procédures stockées et requêtes paramétrées
    Limites

    Fichiers d’accès

    Organisation et valeurs par défaut
    Accès anonymes et protocoles

    Atelier

    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
    MVC

    Travailler 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-mesures

    Atelier

    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 furtive

    Atelier

    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 rappel

    Atelier

    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. 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 application

    Classification des risques CERT

    Les domaines : integer, string, floating point, array…
    Analyser la sévérité, priorité, etc.
    Les guidelines

    Le langage C++

    Modèle mémoire
    Compilation
    Comprendre les appels de fonction : structure de la pile
    Legacy code en langage C

    Coder 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 fichiers

    Ateliers

    buffer overflow
    SQL Injection
    OS Command Injection
    Integer Overflow
    Exécution d’un code arbitraire

    Les 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 code

    Ateliers

    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 lambdas

    Conclusion

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

  1. 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 overflow

    Les 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érification

    Chiffrement, 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 / SH3

    Vue 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 certification

    SSL 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 certificat

    Sé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 / REST

    Jetons 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 message

    Sé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 Forgery

    Outils 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

  1. Qu’est-ce que la sécurisation du code ?

    Contexte
    Intégrer la sécurisation dans les processus de développement
    Principes généraux

    Modélisation des menaces

    Décomposer une application
    Déterminer les menaces d’une application
    Noter et classer les menaces
    Répondre aux menaces

    Exploitation 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 bits

    Techniques 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

  1. 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.0

    Technologies 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 certificat

    Sé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ès

    Contrô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 Stripping

    Gestion 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.