Pagina aggiornata il: 1/01/2007 08:31
Bug in phpBB2 <= 2.0.10Il diffusissimo software per forum "phpBB2", scritto in PHP, è attaccabile da un worm scritto in Perl che causa il defacciamento del sito e la possibilità di esecuzione di codice arbitrario.
Per prima cosa vorrei segnalare l'assoluta particolarità del fatto che il worm sia scritto in Perl che, come noto, è un linguaggio interpretato, per cui il codice è perfettamente leggibile, ma necessita per funzionare della presenza sul computer dell'omonimo interprete. Ciò indica in maniera significativa sia la diffusione di Perl che la sua potenza.
Ad ogni modo per gli interessati è possibile visionare il codice del worm qui:
Contiene parecchi errori, ritengo voluti, ma è comunque interessante.
Tornando a phpBB2, il problema è dovuto ad un cattivo parsing dell'input nel file viewtopic.php:
//
// Was a highlight request part of the URI?
//
$highlight_match = $highlight = '';
if (isset($HTTP_GET_VARS['highlight']))
{
// Split words and phrases
$words = explode(' ', trim(htmlspecialchars(urldecode($HTTP_GET_VARS['highlight']))));
for($i = 0; $i < sizeof($words); $i++)
{....
che consente, tramite l'uso di caratteri codificati, di eseguire codice arbitrario.
Il Worm effettua le seguenti fasi:
1- quando viene eseguito cerca tramite Google dei siti che abbiano istallato phpBB2 e l'url del file viewtopic.php
2- sfruttando la vulnerabilità suddetta si trasferisce sul computer vittima
3- completato il caricamento si esegue, cioè cerca, tramite google, altri computer da infettare
4- dopo un certo numero di replicazioni esegue il suo payload, cioè defaccia il sito attaccando files con estensione "htm", "html", "php", "asp", "shtm", "shtml", "jsp", "phtm" e sostituisce le pagine con una di avviso che dice:
This site is defaced!!!
NeverEverNoSanity WebWorm generation X
...dove il valore della X aumenta ad ogni infezione
E' importante sottolineare che il worm non danneggia assolutamente i visitatori dei siti attaccati, ma solo i loro webmaster che devono rimettere tutto a posto. Sembrerebbe quasi che il suo creatore sia un programmatore Perl di un certo livello che abbia voluto sottolineare la debolezza intrinseca di PHP e di molto software scritto con esso.
Il bug è rimediabile in due modi:
1- aggiornando phpBB2 alla versione 2.0.11 www.phpbb.com/downloads.php
2- sostituendo il codice suddetto con:
//
// Was a highlight request part of the URI?
//
$highlight_match = $highlight = '';
if (isset($HTTP_GET_VARS['highlight']))
{
// Split words and phrases
$words = explode(' ', trim(htmlspecialchars($HTTP_GET_VARS['highlight'])));
for($i = 0; $i < sizeof($words); $i++)
{....
| Indice del sito |
