Les premières attaques réseau exploitaient des vulnérabilités liées
à l'implémentation des protocoles de la suite TCP/IP. Avec la correction progressive
de ces vulnérabilités les attaques se sont décalées vers les couches
applicatives et en particulier le web, dans la mesure où la plupart des entreprises
ouvrent leur système pare-feu pour le traffic destiné au web.
Le protocole HTTP (ou HTTPS) est le standard permettant de véhiculer
les pages web par un mécanisme de requêtes et de réponses. Utilisé essentiellement
pour transporter des pages web informationnelles (pages web statiques), le web est rapidement
devenu un support interactif permettant de fournir des services en ligne. Le terme
d'« application web » désigne ainsi toute application dont l'interface
est accessible à travers le web à l'aide d'un simple navigateur. Devenu
le support d'un certain nombre de technologies (SOAP, Javascript, XML RPC, etc.), le protocole
HTTP possède désormais un rôle stratégique certain dans la
sécurité des systèmes d'information.
Dans la mesure où les serveurs web sont de plus en plus sécurisés,
les attaques se sont progressivement décalées vers l'exploitation des failles
des applications web.
Ainsi, la sécurité des services web doit être un
élément pris en compte dès leur conception et leur développement.
Les vulnérabilités des applications web peuvent être
catégorisées de la manière suivante :
- Vulnérabilités du serveur web. Ce type de cas est de plus en plus rare
car au fur et à mesure des années les principaux développeurs de serveurs
web ont renforcé leur sécurisation ;
- Manipulation des URL, consistant à modifier manuellement les paramètres
des URL afin de modifier le comportement attendu du serveur web ;
- Exploitation des faiblesses des identifiants de session et des mécanismes d'authentification ;
- Injection de code HTML et Cross-Site Scripting ;
- Injection de commandes SQL.
Le protocole HTTP est par nature prévu pour gérer
des requêtes, c'est-à-dire recevoir des données en entrée et envoyer
des données en retour. Les données peuvent être envoyées de diverses
façons :
- Via l'URL de la page web
- Dans les en-têtes HTTP
- Dans le corps de la requête (requête POST)
- Via un cookie
Le principe de base à retenir d'une manière générale lors
de tout développement informatique est qu'il ne faut pas faire confiance aux données
envoyées par le client.
Ainsi, la quasi-totalité des vulnérabilités des services web
est liée aux négligences des concepteurs, ne faisant pas de vérifications sur
le format des données saisies par les utilisateurs.
Les attaques à l'encontre des applications web sont toujours nuisibles car
elles donnent une mauvaise image de l'entreprise. Les conséquences d'une
attaque réussie peuvent notamment être une des suivantes :
- Défacement de site web ;
- Vol d'informations ;
- Modification de données, notamment modification de données personnelles
d'utilisateurs ;
- Intrusion sur le serveur web.
|