Groupe
VP-GL
Cours
en-ligne
Production de documents pour
WWW
Plan du
cours
Problèmes de sécurité ...
Problèmes de sécurité liés aux programmes CGI
- côté serveur
-
il faut toujours garder à l'esprit qu'un programme CGI dispose, par
défaut, des mêmes privilèges d'exécution que le
logiciel serveur HTTP. Entre autre, un programme CGI pourra écrire
sur le disque partout où le serveur HTTP a les privilèges
d'écriture. Un programme CGI pourra aussi exécuter n'importe
quelle commande ou programme que le serveur HTTP aurait le droit
d'exécuter. Le choix de l'utilisateur et du groupe sous lequel le
serveur HTTP s'exécute est donc important.
-
Il faut éviter que soient exécutés comme scripts CGI
des fichiers dont le webmestre n'aura pas pu vérifier l'innocuité.
Il faut donc éviter, entre autres, que le serveur HTTP puisse écrire
dans le(s) répertoire(s) où se trouvent des programmes CGI,
pour éviter que l'on puisse déposer à distance de nouveaux
programmes CGI sur le disque du serveur (voir commentaires sur la méthode
PUT)
-
Il faut absolument éviter de mettre dans un répertoire de
programmes CGI un interprêteur d'utilité générale,
t.q. Perl, Tcl, shells Unix, etc.
-
Il faut toujours s'interroger sur le comportement d'un programme CGI auquel
on passerait des arguments inhabituels préparés par une personne
malveillante. Chaque fois qu'on installe un programme CGI sur un serveur
Web, il faut se poser les questions suivantes:
-
si le programme CGI écrit sur le disque, peut-on l'amener à
écrire dans une zône dangereuse (répertoires CGI,
répertoires système, etc.)?
-
si le programme CGI écrit sur le disque, peut-on l'amener à
bloquer le système en remplissant complètement le disque (disk
full)?
-
certains paramètres passés au programme CGI sont-ils passés
tels quels à des commandes Unix, sans filtrage préalable?
-
peut on faire déborder la mémoire du programme CG en lui passant
un volume de données excessif?
-
Il faut garder à l'esprit le fait que le programme CGI peut être
activé par un programme malveillant qui se connecte directement au
serveur HTTP et non pas par l'usage d'un formulaire dans un document de votre
site.
-
En rêgle générale, les données transmises au script
CGI devraient être filtrées avant d'être utilisées.
Plutôt que de rechercher des caractères non-autorisés
et de les remplacer par un caractère sans danger, il vaut mieux clairement
définir quels sont les caractères autorisés et remplacer
tout autre caractère par un caractère inoffensif.
Bertrand Ibrahim
Denrnière modification: 10.03.01
Site Hosting: Bronco