Publicado el Jueves 15 de Marzo del 2007 @ 7:34 por Armonth.
No si estamos que no paramos… ha salido a la palestra un nuevo ticket, el 3973 anunciando vulnerabilidades XSRF y XSS en todas las ramas de WordPress…
La solución es aplicar el parche que ofrece pero dado que la mayoría no saber usar parches diff (o le dan problemas, o directamente ni saben de qué le hablo) la solución pasa por sustituir estos cuatro ficheros:
Por sus equivalentes parcheados, para ello vamos a la dirección que corresponda (según la rama utilizada) de las dos de aquí abajo:
Elegis cada fichero, por ejemplo branches/2.0/wp-comments-post.php y os saldrá el código en web, abajo del todo pulsáis en “Download in other formats: Original Format” y ya os baja el fichero parcheado y listo para sustituir, repetimos con los otros tres que faltan y ya está parcheado…
PD: También han salido las RC1 de WordPress 2.0.10 y 2.1.3 que corrigen ambos fallos y — en el caso de WordPress 2.1.3 — un problema de incompatibilidad con PHP 4 (resumiendo: han escrito una línea de código con una sintaxis que sólo entiende PHP 5 y hace que PHP 4 reviente).
Me parece que las RC1 que mencionas, todavía traen la versión vulnerable a XSS de akismet.
Por otro lado, existe otro bug (XSS) más que hace uso de $_SERVER[’PHP_SELF’], el cuál es bastante peligroso por las cosas que se pueden hacer con este.
Nunca he logrado entender que sentido tiene mantener dos líneas de desarrollo paralelas…
Es decir, seguir con la 2.0.x estando ya con la 2.1.x…
Se supone que si es el mismo proyecto, usar una versión inferior (2.0.x) es una mala idea, pero se sigue desarrollando… ¿?
No le veo sentido (es como lo de seguir con Firefox 1.5.x después de sacar la 2.x…).
Armonth, me temo que todavía no hay un ticket, hoy recién acabo de enviar a security@worpress.org el exploit que aprovecha esa vulnerabilidad :) -al parecer el primer reporte hecho por otra persona, no le daba la importancia debida.
Pero como comento en mi blog, una solución temporal es poner la siguiente línea luego de la última referencia a PHP_SELF que encuentres en wp-settings.php (línea 49 en 2.1.2).
$PHP_SELF = $_SERVER[’PHP_SELF’] = htmlspecialchars(strip_tags($_SERVER[’PHP_SELF’]), ENT_QUOTES);
Bueno pues de momento actualizare a la 2.1.3 y menos mal que me puse PHP5 ;)
PD: Dejo huella de que he leído.
Aquí está la lista de cambios:
http://trac.wordpress.org/changeset/5044 (el más importante)
http://trac.wordpress.org/changeset/5046 (2.1)
http://trac.wordpress.org/changeset/5047 (2.0)
Personalmente creo que estas correcciones no cortan el problema de raíz, sólo resuelven problemas particulares que reporté.