Failles de Sécurité

Menaces et risques applicatifsMain en arriere fleche dessinee 318 51824

1. Types d'attaques

Le WASC établit dans son rapport « WASC Threat Classification » une liste exhaustive des menaces qui pèsent sur la sécurité des applications Web. Elles sont regroupées en six catégories définies dans la version 2004 de ce rapport.

La catégorie « authentification » regroupe les attaques de sites Web dont la cible est le système de validation de l'identité d'un utilisateur, d'un service ou d'une application.

La catégorie « autorisation » couvre l'ensemble des attaques de sites Web dont la cible est le système de vérification des droits d'un utilisateur, d'un service ou d'une application pour effectuer une action dans l'application.

La catégorie « attaques côté client » rassemble les attaques visant l'utilisateur pendant qu'il utilise l'application.

La catégorie « exécution de commandes » englobe toutes les attaques qui permettent d'exécuter des commandes sur un des composants de l'architecture du site Web.

La catégorie « révélation d'informations » définit l'ensemble des attaques permettant de découvrir des informations ou des fonctionnalités cachées.

La catégorie « attaques logiques » caractérise les attaques qui utilisent les processus applicatifs (système de changement de mot de passe, système de création de compte…) à des fins hostiles.

2. Risques de sécurité

Contrairement au WASC qui décrit toutes les attaques possibles sur une application Web, l'OWASP ne traite que les dix plus grands risques de sécurité. Le rapport « OWASP Top 10 » permet ainsi à l'équipe projet de se focaliser sur la protection de l'application Web face aux menaces les plus importantes, ce qui est moins coûteux et plus facilement réalisable que d'essayer de se protéger de tous les dangers. L'OWASP établit le classement 2010 ci-dessous, dont chacune des failles est développée dans les chapitres suivants.

Une faille d'injection se produit quand une donnée non fiable est envoyée à un interpréteur en tant qu'élément d'une commande ou d'une requête. Les données hostiles de l'attaquant peuvent duper l'interpréteur afin de l'amener à exécuter des commandes inhabituelles ou à accéder à des données non autorisées.

Les failles de Cross-Site Scripting (XSS) se produisent chaque fois qu'une application prend des données non fiables et les envoie à un navigateur Web sans validation. XSS permet à des attaquants d'exécuter du script dans le navigateur de la victime afin de détourner des sessions utilisateur, défigurer des sites Web, ou rediriger l'utilisateur vers des sites malveillants.

Les failles de violation de gestion d'authentification et de session se produisent quand les fonctions correspondantes ne sont pas mises en œuvre correctement, permettant aux attaquants de compromettre les mots de passe, clés, jetons de session, ou d'exploiter d'autres failles d'implémentation pour s'approprier les identités d'autres utilisateurs.

Une faille de référence directe à un objet se produit quand un développeur expose une référence à une variable interne, tels un nom de fichier, de dossier, un enregistrement de base de données ou une clé de base de données. Sans un contrôle d'accès ou autre protection, les attaquants peuvent manipuler ces références pour accéder à des données non autorisées.

Une attaque par falsification de requête intersites (CSRF) force le navigateur d'une victime authentifiée à envoyer une requête HTTP, comprenant le cookie de session de la victime ainsi que toute autre information automatiquement incluse, à une application Web vulnérable. Ceci permet à l'attaquant de forcer le navigateur de la victime à générer des requêtes, l'application vulnérable considérant alors qu'elles émanent légitimement de la victime.

Une faille due à une mauvaise configuration de sécurité se produit quand les serveurs d'application, serveurs Web, serveur de base de données, et la plate-forme n'ont pas de configuration sécurisée correctement établie et déployée. Tous ces paramètres doivent être définis, mis en œuvre, et maintenus. Ceci implique de maintenir tous les logiciels à jour, notamment toutes les bibliothèques de code employées par l'application.

Une faille de stockage de données non sécurisées se produit quand une application Web ne protège pas correctement les données sensibles, telles que les numéros de cartes de crédit, de sécurité sociale, les informations d'authentification, avec un algorithme de chiffrement ou de hash approprié. Les pirates peuvent voler ou modifier ces données faiblement protégées pour perpétrer un vol d'identité et d'autres crimes, tels que la fraude à la carte de crédit.

La défaillance dans la restriction des accès à une URL se produit quand une application Web ne protège pas l'accès aux URL. Les applications doivent effectuer des contrôles d'accès similaires chaque fois que ces pages sont accédées, sinon les attaquants seront en mesure de forger des URL pour accéder à ces pages cachées.

La faille de protection de la couche transport se produit quand les applications ne peuvent pas chiffrer et protéger la confidentialité et l'intégrité du trafic réseau sensible. De plus, quand elles le font, elles supportent parfois des algorithmes faibles, utilisent des certificats expirés ou invalides, ou ne les emploient pas correctement.

Une faille de redirection et renvoi non validés se produit quand une application Web réoriente les utilisateurs vers d'autres pages et sites Web, et utilise des données non fiables pour déterminer les pages de destination. Sans validation appropriée, les attaquants peuvent rediriger les victimes vers des sites de phishing ou de logiciel malveillant, ou utiliser les renvois pour accéder à des pages non autorisées.

3. Correspondances entre les définitions de l'OWASP et du WASC

Le tableau ci-dessous fait le lien entre les catégories et les attaques définies par le WASC dans le rapport de 2010 et les menaces identifiées par l'OWASP dans le classement de 2010.

Figure 5 - Tableau de correspondance entre les définitions de l'OWASP et du WASC
Risques identifiés par l'OWASP en 2010 Attaques identifiées par le WASC en 2010 Catégories
Injection SQL Injection (WASC-19)
XML Injection (WASC-23)
Null Byte Injection (WASC-28)
LDAP Injection (WASC-29)
Mail Command Injection (WASC-30)
OS Commanding (WASC-31)
XPath Injection (WASC-39)
XQuery Injection (WASC-46)
Exécution de commandes
Cross-Site Scripting Cross-Site Scripting (WASC-08) Attaques côté client
Violation de Gestion d'Authentification et de Session Insufficient Authentication (WASC-01)
Brute Force (WASC-11)
Credential/Session Prediction (WASC-18)
Session Fixation (WASC-37)
Insufficient Session Expiration (WASC-47)
Autorisation, authentification
Référence directe à un objet non sécurisée Insufficient Authentication (WASC-01)
Insufficient Authorization (WASC-02)
Path Traversal (WASC-33)
Predictable Location (WASC-34)
Autorisation, authentification, révélation d'informations
Falsification de requêtes intersites Cross-Site Request Forgery (WASC-09) Attaques logiques
Gestion de configuration non sécurisée Server Misconfiguration (WASC-14)
Application Misconfiguration (WASC-15)
Révélation d'informations
Stockage de données non sécurisé Insufficient Data Protection (WASC-50) Révélation d'informations
Défaillance de restriction d'accès à une URL Insufficient Authorization (WASC-02)
Denial of Service (WASC-10)
Brute Force (WASC-11)
Insufficient Anti-automation (WASC-21)
Predictable Location (WASC-34)
Autorisation, authentification, révélation d'informations
Communications non sécurisées Insufficient Transport Layer Protection (WASC-04) Révélation d'informations
Redirection et renvoi non validés URL Redirector Abuse (WASC-38) Attaques logiques