trou de sécurité (was: =?UTF-8?Q?[CLI Wiki] ...)

Vincent Lefevre vincent at vinc17.org
Sat Jan 27 16:49:37 CET 2007


On 2007-01-27 16:12:53 +0100, noreply at asyd.net wrote:
> + <code bash>
> + #!/bin/sh
> + # (c) 2005 Smeï & Loïs
> + #
> + # Purge les mails de MAILER-DAEMON en deferred, avec un score SpamAssassin
> + #
> + TMPFILE=/tmp/clean.queue.$$
> + DEFERDIR=/var/spool/postfix/deferred
> + 
> + test -e /usr/sbin/postqueue && {
> +   echo "====================================="
> +   echo "Début Purge deferred"
> +   echo
> +   echo "Mail dans la queue avant : "
> +   postqueue -p | tail -1
> + 
> + # collect the filenames
> +   mailq | grep MAILER-DAEMON | cut -f1 -d ' ' | grep -v *$  > $TMPFILE

Le *$ n'a, me semble-t-il, aucun sens, ou alors c'est un bashisme
qu'il faut éviter.

D'autre part, ce script contient un énorme trou de sécurité: le
fichier $TMPFILE peut exister déjà et être protégé contre l'écriture
(e.g. création d'un certain nombre de fichiers par un utilisateur mal
intentionné), si bien que la redirection échoue, mais comme le script
continue, un utilisateur lambda peut peut-être en prendre le contrôle
avec des caractères spéciaux dans le fichier $TMPFILE.

> + #  mailq | grep bounces at listes | cut -f1 -d ' ' | grep -v *$  > $TMPFILE
> + 
> +   for DEFERFILE in `cat $TMPFILE`
> +   do
> +     FILEPATH=`find $DEFERDIR -name $DEFERFILE`
[...]

Ici l'utilisateur mal intentionné contrôle ce que contient $DEFERFILE.
Vu que la commande find peut exécuter des commandes (option -exec), je
pense que ce trou de sécurité est bien exploitable.

-- 
Vincent Lefèvre <vincent at vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


More information about the Shell mailing list