Les attaques sur le Web : Enjeux & Solutions (1)

 

secur100507.jpgIl
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 :

mondher.gam@Online-netsecurity.com
)

 
 
Â