Grave vulnerabilidad en Wordpress

Mariano recien posteaba que anda dando vueltas una muy grave vulnerabilidad en WP y aconsejaba a todos los bloggers a hacer backup.

Efectivamente, es así, según Secunia:

Input passed to the “cache_lastpostdate” parameter via cookies is not properly sanitised before being used. This can be exploited to inject arbitrary PHP script code.

En español indio: “Las entradas pasadas al parametro “cache_lastpostdate” mediante cookies, no son seguras. Esto permite inyectar cualquier codigo PHP”. Esta vulnerabilidad fue descubierta ayer 10 de Agosto y afectaría a las versiones 1.5.1.3 de Wordpress, pero no se descarta que también a versiones anteriores.

Para que esta vulnerabilidad sea explotada, la directiva de PHP register_globals tiene que estar activada (o sea, tiene que estar en on). Cómo saber si tu servidor tiene esa directiva activada? Ejecutando la función php_info(). Copiá y pegá el siguiente código en un archivo con extensión .php y subilo a tu servidor, ejecutalo y luego buscá la directiva register_globals, si tiene el valor on, es probable que seas susceptible a este tipo de ataque:

< ?
phpinfo();
?>

Así que hagan backup de su Wordpress ahora, o bajen una nightly build, que al parecer en una de esas versiones ya estaría arreglado el problema.

Actualización: Al parecer reemplazando una linea en el archivo /wp-includes/functions.php, el problema estaría solucionado. Buscá la línea:

$lastpostdate = $cache_lastpostdate[$timezone];

Y reemplazala por:

$lastpostdate = preg_replace('/[^0-9 :\-]/','',$cache_lastpostdate[$timezone]);

Todo esto es no-oficial, así que estás advertido ;)

Actualización (y vamos): Había un error en las comillas de línea anterior. ¡Gracias Fede por el chiflido!