Obsérvese que el programa usa el modo taint:
1 #!/usr/bin/perl -w -T 2 use strict; 3 use lib '.'; 4 use Chatbot::Eliza; 5 use IO::Socket; 6 use Daemon; 7 8 use constant PORT => 1002; 9 use constant PIDFILE => '/var/run/eliza_hup.pid'; 10 use constant USER => 'nobody'; 11 use constant GROUP => 'nogroup'; 12 use constant ELIZA_HOME => '/var/www/';
Esto permite el control de variables tainted: son variables tainted aquellas que proceden de fuentes externas al programa. Entre los datos tainted se encuentran:
%ENV
qx
readdir
y readlink
gecos
de las funciones getpw*
, dado que puede
ser escrito por los usuarios
system
y exec
cuando se usan con el formato de un argumento
eval
glob
unlink
umask
kill
path
) a un comando que se haya heredado
de las variables de entorno
$ENV{PATH}
tenga permisos de escritura para todo
el mundo
ENV_BASH
, ENV
, IFS
y CDPATH
son también consideradas tainted. Se deberán eliminar o ponerlas a valores untainted.
$1
, $2
, etc..
Casiano Rodríguez León