Clicky

Un error de DoS no parcheado podría ayudar a cualquiera a cerrar sitios web de WordPress

ataque DDoS WordPress

Sin parche disponible - Guía de mitigación

Se ha descubierto una simple vulnerabilidad de denegación de servicio (DoS) pero grave a nivel de aplicación en la plataforma CMS WordPress que podría permitir a cualquier persona eliminar la mayoría de los sitios web de WordPress incluso con una sola máquina - sin golpear con una gran cantidad de ancho de banda, como se requiere en los ataques DDoS a nivel de red para lograr lo mismo.

Dado que la compañía ha negado solucionar el problema, la vulnerabilidad (CVE-2018-6389) permanece sin parches y afecta a casi todas las versiones de WordPress publicadas en los últimos nueve años, incluida la última versión estable de WordPress (Versión 4.9.2).

Descubierta por el investigador de seguridad israelí Barak Tawily, la vulnerabilidad reside en la forma en que "load-scripts.php", una secuencia de comandos integrada en WordPress CMS, procesa las solicitudes definidas por el usuario.

Para aquellos que no lo saben, el archivo load-scripts.php solo se diseñó para que los usuarios administradores ayuden a un sitio web a mejorar el rendimiento y cargar la página más rápido al combinar (en el extremo del servidor) varios archivos JavaScript en una única solicitud.

Sin embargo, para hacer que "load-scripts.php" funcione en la página de inicio de sesión del administrador (wp-login.php) antes de iniciar sesión, los autores de WordPress no mantuvieron ninguna autenticación en su lugar, lo que eventualmente hizo que la función esté accesible para cualquiera.

load-scripts.php

Dependiendo de los complementos y módulos que se hayan instalado, el archivo load-scripts.php llama selectivamente a los archivos JavaScript necesarios al pasar sus nombres al parámetro "load", separados por una coma, como en la siguiente URL:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Al cargar el sitio web, el 'load-scripts.php' (mencionado en el encabezado de la página) intenta encontrar cada nombre de archivo JavaScript en la URL, anexar su contenido en un solo archivo y luego enviarlo al navegador web del usuario.

Cómo funciona el ataque DoS a WordPress

ataque DoS en WordPress, código

Según el investigador, uno puede simplemente forzar load-scripts.php para llamar todos los archivos JavaScript posibles (es decir, 181 scripts) de una sola vez pasando sus nombres a la URL anterior, haciendo que el sitio web objetivo sea levemente lento al consumir una gran CPU y memoria del servidor.

"Hay una lista bien definida ($ wp_scripts), que los usuarios pueden solicitar como parte del parámetro load[]. Si el valor solicitado existe, el servidor realizará una acción de lectura en I/O para una ruta bien definida asociada con el valor suministrado por el usuario", dice Tawily.

Aunque una sola solicitud no sería suficiente para eliminar todo el sitio web para sus visitantes, Tawily utilizó una secuencia de comandos python de prueba de concepto (PoC), doser.py, que hace un gran número de solicitudes concurrentes a la misma URL en un intento de utilizar la mayor cantidad de recursos de CPU de los servidores de destino y reducirla como sea posible.

The Hacker News ha verificado la autenticidad del exploit DoS que eliminó con éxito uno de sus sitios web de demostración de WordPress que se ejecutan en un servidor VPS de tamaño medio.

"Es hora de mencionar una vez más que load-scripts.php no requiere ninguna autenticación, un usuario anónimo puede hacerlo. Después de ~500 solicitudes, el servidor no respondió en absoluto, o devolvió el estado errores de código 502/503/504", dice Tawily.

Sin embargo, el ataque desde una sola máquina, con una conexión de 40 Mbps, no fue suficiente para derribar otro sitio web de demostración que se ejecuta en un servidor dedicado con alta capacidad de procesamiento y memoria.

error 503

Pero eso no significa que la falla no sea efectiva contra los sitios web de WordPress que se ejecutan en un servidor pesado, ya que el ataque a nivel de aplicación generalmente requiere muchos menos paquetes y ancho de banda para lograr el mismo objetivo: eliminar un sitio.

Por lo tanto, los atacantes con más ancho de banda o algunos bots pueden explotar esta falla para apuntar también a grandes y populares sitios web de WordPress.

Sin parche disponible - Guía de mitigación

Junto con la divulgación completa, Tawily también ha proporcionado una demostración en vídeo para el ataque de denegación de servicio de WordPress. Puedes mirar el vídeo para ver el ataque en acción.

Sabiendo que las vulnerabilidades de DoS están fuera del alcance del programa de recompensas de errores de WordPress, Tawily reportó responsablemente esta vulnerabilidad de DoS al equipo de WordPress a través de la plataforma HackerOne.

Sin embargo, la empresa se negó a reconocer el problema, diciendo que este tipo de error "debería mitigarse realmente al final del servidor o en el nivel de la red en lugar del nivel de la aplicación", que está fuera del control de WordPress.

La vulnerabilidad parece ser grave porque WordPress potencia casi el 29 por ciento de la Web, lo que coloca a millones de sitios web vulnerables a los piratas informáticos y los hace no disponibles para sus usuarios legítimos.

Para los sitios web que no pueden pagar los servicios que ofrecen protección DDoS contra los ataques de la capa de aplicación, el investigador ha proporcionado una versión bifurcada de WordPress, que incluye la mitigación contra esta vulnerabilidad.

Sin embargo, personalmente no recomendaría a los usuarios que instalen un CMS modificado, incluso si proviene de una fuente confiable que no sea el autor original.

Además de esto, el investigador también ha lanzado un sencillo script bash que soluciona el problema, en caso de que ya haya instalado WordPress.

Jesus_Caceres