Enjeux & Solutions (1) Il existe différents types d'attaques Web plus ou moins dangereuses pour une entreprise : * Les attaques directes (Dos, defacing ) * Les attaques indirectes (Google bomb, DNS redirection ). Les attaques directes : sont ciblées car les hackers utilisent des failles de sécurité pour pénétrer à l'intérieur des serveurs WEB, qui hébergent en général des applications métiers, pour obtenir des informations comme : noms des clients numéros de carte bleue, Ces attaques peuvent être évitées en tenant à jour les correctifs sur les serveurs ainsi que sur les applications liées au fonctionnement du site WEB (base de données, etc.). Les attaques indirectes : elles ne causent pas de dommages matériels et logiciels à l'entreprise victime. Prenons un exemple : le «google bombing» (dé-référencement de sites web sur un moteur de recherche), qui engendre une baisse d'activité du site et donne aussi une mauvaise réputation (image de marque) de l'entreprise, et peut lui causer du tord. L'inconvénient majeur avec ce type d'attaque est que l'entreprise ne peut pas s'en protéger, elle peut (et doit) cependant alerter ses clients sur l'inconvénient subi. Les attaques de types «hijacking» (détournement) font croire aux utilisateurs qu'ils sont sur un site officiel et qu'ils peuvent par conséquent taper leurs identifiants et mots de passe ne toute sécurité ce qui n'est bien sûr pas le cas. Il existe par exemple le DNS hijacking qui pointe sur page web du pirate au lieu de pointer sur un lien officiel. Récemment, des banques françaises ont prévenu leurs utilisateurs de ce type de risques. Une contre-mesure élémentaire, pour ne pas se faire piéger, est de n'ouvrir les pages officielles qu'à partir des enregistrements faits dans ses favoris. Une autre méthode plus sûre mais plus technique est de n'utiliser que l'adresse IP du serveur distant ce qui évite de vous faire piéger par les attaques de types DNS hijacking. Tout le monde est susceptible de tomber dans le panneau alors il faut rester vigilant. Lorsque vous remarquez des changements anormaux sur votre page Web favorite sans en avoir été prévenu au préalable, méfiez-vous ! Les dix techniques d'attaque les plus courantes sur les applications Web La presse s'est fait récemment l'écho de sites Web de la contamination par des scripts malicieux de pages d'accueil de sites grandes sociétés. Les utilisateurs se connectant à ces sites téléchargeaient à leur insu ces codes malicieux qui venaient s'exécuter sur leurs ordinateurs personnels et renvoyaient alors vers des sites pirates des informations confidentielles (séquence de saisie de caractères ). Les sites Web avaient été initialement piratés en utilisant des combinaisons de techniques d'attaque : un code malicieux assimilable à un trojan, la technique Buffer Overflow pour déposer ce code sur le site Web et la technique Cross Site Scripting pour que le code malicieux infecte des postes d'utilisateurs qui se connectent au site. Compte tenu de la complexité des applications et des multiples possibilités de manipulation de paramètres au niveau des requêtes, il est impossible de décrire toutes les attaques possibles au niveau applicatif. Pour chaque application, il existe potentiellement au moins autant de requêtes malveillantes que de requêtes « normales ». Afin de donner une idée de l'arsenal d'attaques à la disposition des hackers et de mieux comprendre les risques pesant sur les applications, nous allons donc décrire les dix techniques d'attaques les plus utilisées en 2003 selon le recensement de l'OWASP (Open Web Application Security Project). Entrée de paramètres invalides L'internaute modifie les paramètre utilisés dans les URL, les en-têtes http, les formulaires ou les paramètres cachés et fournit des valeurs non attendues par l'application : par exemple des valeurs négatives, des valeurs très larges, des caractères au lieu de chiffres, des métacaractères L'absence de filtre au niveau de l'application sur les caractères saisis par l'internaute peut conduire à des comportements imprévisibles allant du crash par buffer overflow à l'accès à des données confidentielles ou au système d'exploitation. Injection de commandes En utilisant des métacodes (par exemple des caractères % passés à des scripts en perl), éventuellement encodés en hexadécimal, unicode ou UTF, l'internaute insère dans les paramètres des commandes qui, en l'absence de filtres, seront passés à l'application. Ces commandes peuvent contenir par exemple des appels au système d'exploitation, l'utilisation de programmes externes via des commandes shell, ou des appels vers les bases de données (on parle alors d'injection SQL). Des scripts écrits en perl, python ou autres langages peuvent être injectés et exécutés par des applications mal développées en utilisant un interpréteur. Injection SQL Utilisant le principe des injections de commandes, les injections SQL permettent d'exécuter des commandes directement sur les bases de données, afin d'avoir ou de modifier des données confidentielles. Corss Site Scripting La technique consiste à contaminer un site Web vulnérable avec un code malicieux écrit en un langage interprétable par les navigateurs (Javascript, AciveX, Shockwave, Flash ), qui sera récupéré par les utilisateurs visitant ce site. Le script malicieux s'exécute alors sur le navigateur des utilisateurs et permet au hacker de récupérer leurs droits d'accès (cookie, sessions utilisateurs) ou même leurs mots de passe et autres informations confidentielles. Violations de cookie et de session La plupart des applications Web nécessitent un maintien de session pour suivre le fil des requêtes utilisateurs. HTTP étant intrinsèquement un protocole « non connecté », les applications doivent fournir ce mécanisme. La plupart des mécanismes de maintien de session sont trop rudimentaires, basés sur des jetons de sessions, parfois mêmes seulement sur des cookies sans vérification de leur intégrité côté serveur. Or les cookies sont stockés sur les postes utilisateurs, dans le meilleur des cas en mémoire et le plus souvent sur le disque. En procédant à des « reverse engineering » des cookies et/ou en récupérant des jetons de session active, un hacker peut les modifier afin d'acquérir l'identité et les droits d'accès d'un autre utilisateur.
Violation de contrôle d'accès
Le contrôle 'accès, également appelé habilitation, est la manière dont une application Web donne accès à du contenu et à des ressources à certains utilisateurs mais pas à d'autres. Découvrir des vulnérabilités au niveau des mécanismes de contrôle d'accès se limite souvent à envoyer une requête vers des ressources ou du contenu auquel on n'a pas droit ! Les hackers réussissant à exploiter ces vulnérabilités peuvent alors utiliser d'autres comptes clients et tous les droits qui vont avec. Buffer Overflow Certains composants logiciels d'applications Web, typiquement CGI, librairies, drivers et composants serveurs du marché ne vérifient pas suffisamment que les données entrées tiennent dans les limites des buffers. Les hackers peuvent lancer des attaques sur les applications présentant ces vulnérabilités afin de les crasher et parfois d'en prendre le contrôle. L'exemple le plus connu de ce type d'attaques a été le ver Code Red qui s'est répandu sur plus de 250 000 systèmes dans les quelques heures suivant son lancement et qui a occasionné officiellement 2,6 milliards de dollars de pertes financières. Plus récemment, en juin dernier, l'attaque download.ject est venue exploiter une faille buffer overflow au niveau de la couche SSL Windows, permettant aux hackers de télécharger sur les serveurs présentant cette faille du code malicieux. A noter que la faille a été comblée par Microsoft début août. Traitement inapproprié des erreurs Les applications Web sont sujettes à des dysfonctionnements même dans le cadre normal de leurs opérations : manque de mémoire, exception de pointeur nul, appel système manqué, time-out réseau, base de données non disponible Il n'est pas rare que des messages d'erreur contenant des informations purement internes comme les traces de stack, les dumps de base de données, les codes d'erreur soient envoyés spontanément à l'utilisateur externe. Un utilisateur malveillant va solliciter ces dysfonctionnements applicatifs dans sa phase de reconnaissance pour recueillir des informations sur la structure interne de l'application et sur les vulnérabilités. Directory Traversal/ Forceful Browsing Le hacker va modifier ses requêtes afin qu'elles ne demandent pas à l'application de lui retourner un fichier mais la branche toute entière. Si l'application ne possède pas une page par défaut au niveau de chaque branche et si le serveur Web est mal configuré, le hacker peut ainsi obtenir accès à des informations non prévues, voire à tout le contenu de la branche. Dénis de service applicatifs Les attaques par DoS sont souvent associées avec les attaques au niveau réseau par SYB flood émanant d'une ou plusieurs sources (on parle dans ce cas d'attaques distribuées DDoS). Les attaques Dos au niveau applicatif existent aussi. Elles sont particulièrement difficiles à différencier du trafic normal, car les applications n'utilisent pas les adresses IP et ne peuvent donc pas facilement identifier la provenance d'une requête HTTP. Un seul hacker peut générer suffisamment de trafic pour saturer les ressources d'un serveur Web sur certaines URL particulières, rendant le système indisponible pour les autres utilisateurs. (suite) Mondher GAM Consultant Senior en Sécurité Directeur Général Online-Netsecurity (Email : [email protected])