Un rapport de l'OWASP (Open
Web Application Security Project) sur les applications
Web met en avant dix failles de sécurité
évidentes et faciles à exploiter. Des failles
que l'on croyait ne plus devoir rencontrer mais qui rappellent,
s'il en était besoin, que la qualité du
code constitue le meilleur rempart contre toute intrusion.
Selon le rapport, les failles constatées sont d'une
déconcertante banalité et exploitables par
n'importe quel novice utilisant des outils très
facilement accessibles.
Un
peu de bon sens suffit à s'en prémunir
La première
d'entre elles concerne les paramètres non validés
lors des requêtes "HTTP". Les applications
web utilisent en effet certaines informations provenant
des requêtes HTTP (via les URL, les cookies, les
champs cachés de formulaires, les en-têtes...)
pour fonctionner. Des procédés tels que
l'insertion de commande, l'injection SQL, l'empoisonnement
de cookies ou la manipulation de champs peuvent permettre
de s'y infiltrer si les paramètres ne sont pas
vérifiés (décodés) avant leur
exploitation.
Vient ensuite le contrôle des accès. Même
si l'authentification des utilisateurs semble aisée
à mettre en place, le rapport indique que les failles
sont très fréquentes, en raison notamment
de la vie même d'un site web. Ses évolutions,
ses différentes versions multiplient les règles
d'accès et finissent, inmanquablement, par engendrer
des trous de sécurité dans le code. Sans
évoquer, bien entendu, les login et mots de passe
aisément devinables ou les fichiers de configuration
stockés sur le web et accessibles à tout
internaute... Un bon sens affuté est simplement
requis pour se débarasser de ce genre de failles.
Un
passage en revue du code nécessaire
La troisième
faille est relative aux sessions et comptes utilisateurs,
comptes vulnérables par les fonctionnalités
d'envoi de mot de passe oublié et d'actualisation
de profil qu'ils impliquent, en raison de la simplicité
de l'authentification par login et mot de passe. L'utilisation
de sessions s'avère impérative pour garantir
la "traçabilité' des requêtes
de l'utilisateur mais le protocole HTTP ne le permet pas.
Les applications web doivent donc fournir leurs propres
sessions, ce qui incite les développeurs à
créer eux mêmes des sessions le plus souvent
non protégées.
Le rapport met ensuite
en exergue les méthodes suivantes : envoi de code
malicieux - comme le Javascript - via l'application vers
un utilisateur final pour qu'il soit exécuté
dans son navigateur, "buffer overflows" qui
consistent à corrompre certains composants (CGI,
librairies, drivers...) pour prendre le contrôle
de l'application, injections de commandes cachées
lors de l'accès à des systèmes externes
ou à l'OS, génération d'erreurs non
prises en compte par l'application pour obtenir des informations
sur le système et le faire "tomber",
accès non autorisé aux modules d'administration
et, pour finir, 'exploitation de la mauvaise configuration
du serveur d'application.
Le passage en revue du code
et l'établissement d'une politique de sécurité
rigoureuse suffisent à se débarasser de
ces trous de sécurité. Le code est et reste
donc le meilleur allié des développeurs
et utilisateurs pour éviter de laisser la porte
grande ouverte aux personnes malintentionnées.
|