Actualización: si bien la solución abajo indicada arregla el
problema, Ryan ha hecho un Changeset más
completo para la rama en
desarrollo con múltiples attribute_escape() e int(). No
recomiendo aplicar los cambios tal cual están ahí ya que son para la
rama de desarrollo y hay que saber qué tocar (aparte de que son 35
cambios y tiene tela).
Buenas y malas noticias: las buenas es que sólo afecta como administrador: a los que tengan "manía Unix" y usen un usuario no-administrador (como es mi caso que el usuario Armonth es +/- el equivalente a un editor) están a salvo.
Las malas es que la
vulnerabilidad
afecta a todas las versiones. Los ficheros afectados son
wp-admin/post-new.php, wp-admin/page-new.php y
wp-admin/user-edit.php.
En Buayacorp han puesto un DIFF pero si no queremos complicarnos
leyendo código la solución se puede resumir, en los ficheros
wp-admin/edit-form-advanced.php y wp-admin/edit-page-form.php
buscad la línea que pone:
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $post->post_title; ?>" id="title" /></div>
Y cambiadla por:
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo attribute_escape($post->post_title); ?>" id="title" /></div>
En realidad sólo cambia el contenido de value="" envolviendo
$post->post_title con attribute_escape().
Luego, en el fichero wp-admin/user-edit.php, buscad la línea:
<input type="hidden" name="wp_http_referer" value="<?php echo wp_specialchars($wp_http_referer); ?>" />
Y cambiadla por:
<input type="hidden" name="wp_http_referer" value="<?php echo clean_url($wp_http_referer); ?>" />
Aquí como veis lo que cambia es wp_specialchars por
clean_url.
Nota importante: en la rama 2.0.x no aparece la función
wp_http_referer en wp-admin/user-edit.php por lo que, en
principio, sólo hay que editar los dos primeros ficheros.


Comentarios