Se ha descubierto una vulnerabilidad en WordPress que permitiría saltar la confirmación de usuario administrador y mail para hacer el reset de la password del mismo. Por el momento no hay parche oficial y compromete a todas las versiones de WordPress del branch 2.8 (no se ha probado en el branch 2.7).

Esta vulnerabilidad que podría parecer trivial y de poca importancia no es tan así dado que un atacante que tenga la posibilidad de ponerse en medio de la comunicación de envío de mail podría obligar a enviar el reset de la password y hacerse con la misma para luego cambiarla y quitar el acceso al verdadero admin. Así también sería trivial realizar un ataque automatizado a hostings que tienen muchas cuentas de WordPress.

En nuestros laboratorios hemos probado la vulnerabilidad con resultados positivos.wp-access

Simplemente se ingresa a una url del blog WordPress y a partir de un error en el código PHP se puede hacer un bypass de la comprobación de usuario y mail que se realiza para hacer el reset de la pass de administrador.

En la imagen se puede ver como se ha enviado el mail con la nueva clave.

Lo más sorprendente de este bug no es tanto su peligrosidad (que la tiene) si no su facilidad en la explotación.

Según nuestras pruebas, los blog alojados en wordpress.org ya estarían protegidos de este bug.

Al momento de la publicación de este articulo no hemos visto una confirmación oficial al respecto, pero si hemos podido ver la modificación que se tendría que realizar para solucionar momentáneamente el bug y evitar un ataque sistematizado o puntual.

Para esto solo hace falta agregar una comprobación extraen el array is_array( $key ) en el archivo wp-login.php:

Cambiar la linea 190 de:

if ( empty( $key ) )

Para que quede de esta manera:

if ( empty( $key ) || is_array( $key ) )

Con lo cual ya no se podría hacer el reset de la pass sin antes verificar mail o user de administrador.

Esperamos que en el día de hoy o mañana a más tardar exista un parche oficial para solucionar este error. Mientras tanto recomendamos de momento aplicar este cambio en el código antes mecionado.

Actualización: Como se esperaba, el equipo de desarrollo de WordPress ha sacado ya su parche oficial para solucionar este bug. Pueden ver el anuncio oficial en WordPress 2.8.4: Security Release.
Recomendamos la actualización con este Security Release tanto si se hizo el cambio mencionado en el articulo como si no se ha hecho.

Bookmark and Share