Archivo

miércoles, 5 de enero de 2011

PHP 666, el numero maligno


     Se suele asociar el numero 666 como un numero diabólico, luego se descubre q el verdadero numero de la bestia es el 616 y se acarrea este error debido a una mala traducción, pero bueno, no estamos tratando este numero precisamente, sino del 2.2250738585072011e-308.

     Resulta que este numero provoca un bucle infinito en algunas versiones de PHP, propiciando asi un entorno para un ataque DoS, y al parecer no solo depende de la versión del interprete sino también de la arquitectura q se este utilizando, siendo también  independiente del S.O. (afecta tanto Windows, Linux, FreeBSD, etc)

     Este es un pequeño PoC q nos deja el amigo Rick Regan, q provoca este bucle ...
   <?php $d = '2.2250738585072011e-308'; echo $d + 0; ?>

     Veamos 2 manera de mitigar esto...

*   Agregar el siguiente código al comienzo del programas
if (strpos(str_replace(‘.’, ”, serialize($GLOBALS)), ’22250738585072011′)!==false) die();

*   Habilitar el flag "--ffloat-store" en CFLAGS

PD:\ Perdon x la imagen ya q el articulo no tiene nada q ver con mod_perl, solo se refiere a php  XD

Para mas información ...
http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
http://news.ycombinator.com/item?id=2066352

No hay comentarios: