El investigador de seguridad de Legal Hackers Dawid Golunski ha publicado detalles de una vulnerabilidad de restablecimiento de contraseña no autorizada en el núcleo de WordPress. Golunski demostró cómo, en determinadas circunstancias, un atacante podría interceptar el correo electrónico de restablecimiento de contraseña y obtener acceso a la cuenta de un usuario.

La prueba de concepto aprovecha WordPress utilizando la variable SERVER_NAME para obtener el nombre de host del servidor para crear un encabezado Desde / Return-Path Correo electrónico de restablecimiento de contraseña saliente.

Los principales servidores web como Apache establecen la variable SERVER_NAME de forma predeterminada utilizando el nombre de host proporcionado por el cliente (en el encabezado HTTP_HOST):

Https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname

Como SERVER_NAME puede modificarse, un atacante puede configurarlo en un dominio arbitrario de su elección, por ejemplo:

Attackers-mxserver.com

Lo que le daría a WordPress la configuración $ from_email a

[email protected]

Y así provoca un correo electrónico saliente con la ruta de retorno / ruta de retorno en esa dirección maliciosa.

Los resultados de este ataque en particular dependerían del entorno del servidor, la configuración específica del servidor de correo y, en algunos casos, requerirían la interacción del usuario. El informe de Golunski incluye un desglose más específico de los posibles métodos que podrían utilizarse.

Después de informar el problema al equipo de seguridad de WordPress en julio de 2016 y también a través del Sitio web HackerOne, Golunski no vio ningún progreso y decidió publicar los detalles de la vulnerabilidad al público.

Si bien aún no hay un parche oficial, la estrella de seguridad de WordPress, Aaron Campbell, ha dicho que el problema no es tan grave como podría ser.

« Es un problema de menor prioridad, pero lo sabemos y está en nuestra cola.“Dijo Campbell. Explicó el conjunto único de condiciones que se requerirían para que esto fuera una vulnerabilidad grave.

« Para que el problema tenga un impacto en la seguridad, un servidor debe permitir que un encabezado proporcionado por el usuario anule $ _SERVER ['SERVER_NAME']“Dijo Campbell. "Consideramos que la configuración del servidor es insuficiente (como 'display_errors' cuando corresponda en un servidor de producción), lo que desafortunadamente está fuera de nuestro control".

Campbell ha probado sus servidores Apache y nginx personales y ninguno de ellos tiene licencia para ello. Además de tener un servidor mal configurado, Campbell dijo que también debería ocurrir una de las siguientes acciones:

  • Un usuario debe responder a un correo electrónico de restablecimiento de contraseña
  • Una respuesta automática debe responder al correo electrónico e incluir el original.
  • Un servidor de correo electrónico debe estar comprometido o sobrecargado y el mensaje devuelto al remitente con el contenido intacto

« Si su servidor es vulnerable y no tiene la capacidad de corregir la configuración del servidor, aún no tiene que realizar ningún cambio en los archivos de WordPress para solucionar el problema.“Dijo Campbell. "Un poco de PHP como este en un complemento definirá una dirección de correo electrónico estática de su elección:"

add_filter ('wp_mail_from', function ($ from_email) {return '[email protected]'; });

Campbell dijo que cualquier cambio que haga WordPress en el kernel probablemente vendrá a través de un ticket que actualmente rastrea el problema sin perspectiva de seguridad. Dijo que es poco probable que se solucione en el próximo comunicado de seguridad, pero el equipo está trabajando activamente en ello. Si encuentran una buena mitigación para el problema, Campbell dijo que la compartirán una vez que resuelvan las posibles ramificaciones.

Y usted ? ¿Qué opinas de esta vulnerabilidad?