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