Pagina aggiornata il: 3/01/2007 05:01
Bug in awstats versioni <= 6.4Oggi 09/08/2005 è stata pubblicata la notizia di un bug piuttosto grave in awstats versioni inferiori alla 6.4
Awstats è un popolarissimo e apprezzato tool, scritto in Perl, per l'analisi dei log di accesso a server web, ftp, ecc.. Consente ai gestori dei siti di avere un preciso e chiaro quadro degli accessi.
Peter Vreugdenhil su
e su
ha segnalato il problema che deriva dal seguente codice contenuto nella subroutine 'ShowURLInfo' del file awstats.pl:
# Call to plugins' function ShowInfoURL
foreach my $pluginname (keys %{$PluginsLoaded{'ShowInfoURL'}}) {
my $function="ShowInfoURL_$pluginname('$url')";
eval("$function");
}
in pratica viene passata alla funzione 'eval' una stringa costruita tramite parametri che sono alterabili da parte di un attaccante - l'url di referrer.
Ricordiamo che la funzione 'eval' ha vari poteri, tra i quali quello di eseguire il contenuto di una semplice stringa.
Ciò è estremamente pericoloso. Si pensi alla possibilità per un attaccante di passare una stringa di questo genere:
www.xxx.com'); open(PASS, "/etc/passwd");
while(<PASS>){print;} close PASS; print('
Otterrà di vedere il file delle password, in quanto il codice risultante eseguito da 'eval' sarà:
ShowInfoURL_$pluginname('www.xxx.com'); open(PASS, "/etc/passwd");
while(<PASS>){print;} close PASS; print('')
La segnalazione è stata quindi molto utile, ma contiene un errore. La versione immune da questi problemi di awstats *NON* è la 6.4, ma quella di sviluppo 6.5, che ha sostituito il codice come segue:
# Call to plugins' function ShowInfoURL
foreach my $pluginname (keys %{$PluginsLoaded{'ShowInfoURL'}}) {
# my $function="ShowInfoURL_$pluginname('$url')";
# eval("$function");
my $function="ShowInfoURL_$pluginname";
&$function($url);
}
| Indice del sito |
