ESAPI : Enterprise Security Application Programming Interface

Documents pareils
Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

Revue de code Sécuritéou Test d Intrusion Applicatif. Quel est le plus efficace pour évaluer un niveau de sécurité applicatif?

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

DenyAll Detect. Documentation technique 27/07/2015

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux


Failles XSS : Principes, Catégories Démonstrations, Contre mesures

PySQLi. Framework d'injection de code SQL

Formation en Logiciels Libres. Fiche d inscription

OZSSI NORD 4 JUIN LILLE. Conférence thématique: Sécurité des applications

Par KENFACK Patrick MIF30 19 Mai 2009

Sage CRM. 7.2 Guide de Portail Client

Application web de gestion de comptes en banques

Programmation Web. Introduction

Banque de données d offres & carte web interactive d offres

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

les techniques d'extraction, les formulaires et intégration dans un site WEB

Sécurité des Web Services (SOAP vs REST)

Hébergement de sites Web

A. À propos des annuaires

Sécurité des applications web. Daniel Boteanu

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

SÉCURITÉ DES APPLICATIONS WEB LA SOLUTION D ANALYSE IDÉALE POUR LES APPLICATIONS WEB

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

DESCRIPTION DU COMPOSANT

PROJET DE PORTAIL INTRANET YNNA

Information sur l accés sécurisé aux services Baer Online Monaco

Système de Gestion de Ressources

4. SERVICES WEB REST 46

et Groupe Eyrolles, 2006, ISBN :

Découvrir les vulnérabilités au sein des applications Web

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

Cours: Administration d'une Base de Données

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

API SMS HTTP REST. Intégrer facilement le service Envoyer SMS Pro avec votre application métier. Version : Révision : 03/09/2014 Page 1/31

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Web Application Firewalls (WAF)

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

Vulnérabilités et sécurisation des applications Web

Compte Rendu d intégration d application

SQL Parser XML Xquery : Approche de détection des injections SQL

Cloud Computing : Utiliser Stratos comme PaaS privé sur un cloud Eucalyptus

ORACLE DIAGNOSTIC PACK 11G

La Sécurité des Données en Environnement DataCenter

API ONE-TIME PASSWORD

Programmation Web. Madalina Croitoru IUT Montpellier

DEMARREZ RAPIDEMENT VOTRE EVALUATION

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Petite définition : Présentation :

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Devenez un véritable développeur web en 3 mois!

Nouvelles Plateformes Technologiques

Mise en œuvre des serveurs d application

Formation Webmaster : Création de site Web Initiation + Approfondissement

CAS, un SSO web open source. 14h35-15h25 - La Seine A

Joomla! Création et administration d'un site web - Version numérique

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Architectures en couches pour applications web Rappel : Architecture en couches

Les risques HERVE SCHAUER HSC

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Single Sign-On open source avec CAS (Central Authentication Service)

et Groupe Eyrolles, 2006, ISBN :

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

JOSY. Paris - 4 février 2010

Tom Pertsekos. Sécurité applicative Web : gare aux fraudes et aux pirates!

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Fiche Technique. Cisco Security Agent

Bases de données et interfaces Génie logiciel

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

La mémorisation des mots de passe dans les navigateurs web modernes

LES ACCES ODBC AVEC LE SYSTEME SAS

CQP ADMINISTRATEUR DE BASES DE DONNÉES (ABD)

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

ZABBIX est distribué sous licence GNU General Public License Version 2 (GPL v.2).

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

IBM System i. DB2 Web Query for System i : le successeur de Query/400? Oui, mais bien plus!!!

Responsable du cours : Héla Hachicha. Année Universitaire :

Single Sign On. Nicolas Dewaele. Single Sign On. Page 1. et Web SSO

DenyAll Protect. Sécurité & accélération. Parefeux pour applications et services Web. de vos applications.

Oauth : un protocole d'autorisation qui authentifie?

WebSSO, synchronisation et contrôle des accès via LDAP

Manuel d intégration API FTP SMS ALLMYSMS.COM

Rapport de certification ANSSI-CSPN-2010/05. ModSecurity v2.5.12

Module BD et sites WEB

Transcription:

nierie des Protocoles et Logiciels Sécurisés ESAPI : Enterprise Security Application Programming Interface Version 2 YACINE CHALLAL 23/22/2014

Table des matières I - Enterprise Security Application Programming Interface 5 A. Introduction...5 B. Comprendre le cheminement d'une attaque...6 C. Enterprise Security API...6 D. Encodage et échappement des Outputs...7 E. Validation des inputs...8 F. Authentification...8 G. Contrôle d'accès...8 H. Accès indirect aux objets...9 I. Gestion de sessions...9 J. Top 10 des attaques OWASP et leur contremesures ESAPI...9 II - D'lala Online 11 A. Développement d'une application Sécurisée avec ESAPI...11 B. Application de vente en ligne sécurisée : D'lala Online...12 3

Enterprise Security I - Application Programming Interface Introduction 5 Comprendre le cheminement d'une attaque 6 Enterprise Security API 6 Encodage et échappement des Outputs 7 Validation des inputs 8 Authentification 8 Contrôle d'accès 8 Accès indirect aux objets 9 Gestion de sessions 9 Top 10 des attaques OWASP et leur contremesures ESAPI 9 I A. Introduction Problématique Il existe plusieurs librairies qui offrent des fonctionnalités de sécurité comme l'authentification, la vérification des inputs et des outputs, etc. (Voir figure suivante) Librairies pour logiciel sécurisé Néanmoins, ces librairies ne sont pas intégrées, intuitives et parfois ne sont pas correctes. De ce fait il est souvent complexe aux développeurs d'exploiter ces librairies, notamment dans des projets d'envergure avec des environnements logiciels éthérogènes. 5

Enterprise Security Application Programming Interface B. Comprendre le cheminement d'une attaque Le risque Un risque est un chemin d'un agent de menace à un actif métier comme illustré sur la figure suivante : Chemin d'un risque Dans ce cheminement on retrouve les éléments suivants : Vecteur une attaque utilisée par un attaquant ou la possibilité qu'offre un agent de menace non malicieux qui cause une vulnérabilité exploitable. Vulnérabilité une faiblesse dans un système informatique - généralement un contrôle oublié ou compromis Impact technique le résultat technique direct suite à une attaque réussie Impact métier l'effet résultat sur le métier de la cible. Une analyse de risque revient à retrouver ces chemins à travers ce modèle où l'impact est tellement important qu'il serait nécessaire d'apporter de nouveaux contrôles efficaces ou de corriger les contrôles existants. C. Enterprise Security API Éléments de Motivation Il est difficile de mettre en oeuvre des contrôles de sécurité corrects - Nécessité d'une attention particulière au détail. Une erreur introduit des vulnérabilités Souvent ça nécessite de fortes compétences en développement et en sécurité. Absence d'une approche unifiée unique - Au sein d'un même langage - A travers différents langages. Objectifs de ESAPI Construction d'un ensemble de contrôles de sécurité commun aux langages les plus utilisés aujourd'hui - Avoir des interfaces communes à travers différents langages tant que possible. - Fournir au moins une implémentation de référence simple pour chaque contrôle de sécurité pour servir d'exemple ou être utilisé - Facilement extensible Développement d'une API de sécurité Open Source qui est: - Scalable à l'échelle d'une entreprise - Assez large dans la couverture des contrôles de sécurité - License libre (BSD, Creative Commons) 6

Enterprise Security Application Programming Interface Remarque : Qualités attendues pour une Enterprise Security API Un développeur a besoin de contrôles de sécurité qui soient: Standards Centralisés Organisés Intégrés De Haute qualité Intuitifs Testés Résout le problème de contrôles oubliés et/ou compromis Aperçue générale La figure suivante illustre l'ensemble des interfaces qui compoent ESAPI Interfaces d'esapi D. Encodage et échappement des Outputs L'encodage est le processus de transformation de données d'un format à un autre. L'interface ESAPI Encoder contient un nombre de méthodes pour décoder des inputs et encoder des output pour les rendre fiables pour les interpreteurs (SQL, HTML, etc.). C'est un mécanisme puissant contre les attaques de type injection et XSS. L'encodage concerne la traduction de certains caractères spéciaux en des caractères équivalents qui ne sont plus significatifs pour l'interpreteur. Exemple Par exemple, utiliser un encodage HTML avant l'envoie d'input untrusted à un navigateur protège contre XSS. ESAPI.encoder().encodeForHTML(input) E. Validation des inputs Validation des Input est le processus qui assure qu'un programme opère sur des données propres, correctes et utiles Par exemple, si on arrive à utiliser une entité qui encode du HTML avant l'envoie au navigateur, ceci permettrait de prévenir la majorité des attaques XSS. 7

Enterprise Security Application Programming Interface Fondamental L'interface ESAPI Validator définit un ensemble de méthodes pour canoniser et valider untrusted input. ESAPI.validator().getValidInput(String context,string input,string type,int maxlength,boolean allownull) F. Authentification L'authentification est le processus qui permet de déterminer si une entité est bien celle prétendue. L'interface ESAPI Authenticator définit un ensemble de méthodes pour générer et gérer des comptes et identifiants de sessions. L'objectif de cette interface est d'encourager les développeurs à protéger les crédentiels au mieux. ESAPI.authenticator().createUser(username, password, password) ESAPI.authenticator().getUser(username).enable(); ESAPI.authenticator().getUser(username).unlock(); User user = ESAPI.authenticator().login(HTTPServletRequest, HTTPServletResponse); //Définir les valeurs des variables UsernameParameterName et PasswordParameterName dans ESAPI.properties car la méthode login se base sur ces variables pour récupérer leur valeurs de la requête HTTP User user = ESAPI.authenticator().logout; G. Contrôle d'accès Le contrôle d'accès est le processus qui définit les privilèges de chaque utilisateur dans le système. L'interface ESAPI AccessController définit un ensemble de méthodes qui peuvent être utilisées dans un large éventail d'applications pour renforcer le contrôle d'accès. Dans la majorité des applications, le contrôle d'accès doit être effectué dans de multiples et différents endroits à travers les diverses couches applicatives. Cette interface fournit un contrôle d'accès au niveau des URL, fonctions métier, données, services et fichiers. L'implémentation de cette interface nécessite l'accès à l'objet current User (Authenticator.getCurrentUser()) pour déterminer les rôles et permissions. L'implémentation aura aussi besoin d'information sur les ressources accédées. En utilisant ces deux info, l'implémentation retourne la décision de contrôle d'accès. Exemple Exemple de contrôle d'accès H. Accès indirect aux objets L'interface AccessReferenceMap permet d'associer des références indirectes aux 8

Enterprise Security Application Programming Interface références directes des objets du système. RandomAccessReferenceMap est une implémentation de cette interface avec des références indirectes aléatoires. I. Gestion de sessions La gestion de sessions est le processus qui permet de garder la trace de l'activité de l'utilisateur à travers les sessions d'interaction avec le système. L'interface ESAPI HTTPUtilities est une collection de méthodes qui fournit une sécurité supplémentaire relative à HTTP requests, responses, sessions, cookies, headers, et logging. Exemple Eviter l'attaque de type session fixation ESAPI.httpUtilities().changeSessionIdentifier(); J. Top 10 des attaques OWASP et leur contremesures ESAPI OWASP Top10 attacks vs. ESAPI interfaces 9

D'lala Online II - II Développement d'une application Sécurisée avec ESAPI 11 Application de vente en ligne sécurisée : D'lala Online 12 A. Développement d'une application Sécurisée avec ESAPI Environnement de développement Vous allez développer une application sécurisée en s'appuyant sur l'application ESAPI Swingset Interactive. Swingset implémente les contrôles de sécurité offerts par ESAPI et vous fournit des tutotiels et exemples expliquant l'utilisation des différentes interfaces définies dans ESAPI pour mettre en oeuvre ces contrôles de sécurité. Question 1 Afin de vous familiariser avec ESAPI, lancez l'exécution de Swingset sur Tomcat à partir d'eclipse puis ouvrez l'application dans un navigateur : https://localhost:8443/swingset/main Question 2 Expliquer comment se font les contrôles suivants en précisant les appels de méthodes nécessaires à leur mise en oeuvre ainsi que la configuration sousjacente : Création d'un utilisateur Login Logout Récupérer l'utilisateur actuel de la session Vérifier si un utilisateur peut accéder à une page web, Fichier, exécuter une méthode Eviter une Injection SQL Vérifier qu'une donnée entrée est conforme à un format spécifique Eviter une attaque de type XSS Eviter une attaque CSRF (Cross Site Request Forgery) Créer et utiliser un "crypto-token" Chiffrer puis déchiffrer une donnée sensible 11

D'lala Online B. Application de vente en ligne sécurisée : D'lala Online Description de l'application D'lala Online L'application D'lala Online permet à un utilisateur authentifié d'effectuer une recherche de produits dans une base de donnée. A l'issue de cette recherche, l'utilisateur commande les produits qu'il souhaite acheter en payant en ligne avec sa carte bancaire CIB. La commande lui sera livrée à l'adresse de livraison fournie lors de la création de son compte utilisateur. Question 1 Elaborez le MCD correspondant à la base de donnée de cette application. Indice : Il n'est pas nécessaire de faire un MCD trop détaillé, car l'objectif du Mini-Projet est de mettre en application les contrôle de sécurité. On se contentera des classes : Produit, Commande, Client Question 2 Après la traduction du MCD en modèle relationnel, créez la base de données sous MySQL en utilisant phpmyadmin déjà installé dans la VM Question 3 Développez une version de D'lala Online (sans contrôles de sécurité) avec JSP permettant de faire une recherche de produits et de passer une commande en payant en ligne avec la carte bancaire. Question 4 Analysez les risques de sécurité et citez les attaques potentielle contre cette application. Entre autres attaques, expliquez comment un attaquant peut mener les attaques suivantes contre votre application et à quels niveaux de l'application : Cross Site Scripting Injection Fixation de Session Usurpation d'identité Cross Site Request Forgery Vol de numéro de carte bancaire etc. Contrôles de Sécurité de D'lala Online Etant donné l'analyse de risques et de vulnérabilité effectuée précédemment, on souhaite développer une nouvelle version de D'lala Online qui soit sécurisée. Question 5 Rajouter à la version précédente tous les contrôle de sécurité avec ESAPI qui permettent : créer un nouveau client authentifier un client gérer la session d'un client et éviter les CSRF, et fixation de session 12

canoniser et valider les Inputs et éviter les XSS encoder les output et éviter les XSS et Injection On souhaite rajouter une option à D'lala Online permettant à un client d'offrir des cadeaux à d'autres clients enregistrés sur D'lala Online Question 6 Développez une telle version en utilisant un CryptToken. D'lala Online 13