Banner Shishii
Pagina aggiornata il:  3/01/2007 05:01

Pagina Stampabile     Pagina Stampabile

Bug in awstats versioni <= 6.4

Oggi 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

www.frsirt.com/bulletins/1732

e su

www.idefense.com/application/poi/display

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