Dos vulnerabilidades de día cero en Elementor Pro plugin afectan a 1 millón de sitios de WordPress

Los especialistas del curso de hacking de la firma de ciberseguridad Wordfence reportaron una vulnerabilidad día cero en Elementor Pro, un popular plugin para WordPress instalado en alrededor de 1 millón de sitios web. Acorde al reporte, esta falla estaba siendo explotada activamente en conjunto con otra vulnerabilidad presente en Ultimate Addons for Elementor, plugin empleado en más de 100 mil sitios web. 

Los desarrolladores del plugin lanzaron una actualización después del reporte. Se solicita a los administradores de sitios web vulnerables actualizar a las más recientes versiones de los plugins; para Elementor Pro, esa es la versión 2.9.4 y en Ultimate Addons for Elementor, es la versión 1.24.2.  

A continuación se presenta una reseña de las dos vulnerabilidades encontradas, además de sus respectivos puntajes y claves de identificación en el Common Vulnerability Scoring System (CVSS).

CVE-2020-13125: Esta vulnerabilidad está presente en Ultimate Addons for Elementor, plugin que funciona como extensión de Elementor, agregando múltiples widgets adicionales. Uno de estos widgets agrega un formulario de registro en cualquier sitio de WordPress; la falla permite a los usuarios registrarse incluso si esta función está inhabilitada o si el widget del formulario no es usado de forma activa.

Los desarrolladores registraron acciones AJAX nopriv y regulares vinculadas a la función get_form_data para proporcionar funcionalidad para el widget Formulario de registro de usuario.

Al analizar la función get_form_data, los expertos del curso de hacking notaron que ésta fue diseñada para recuperar la información presentada en el formulario de registro. Estos datos se usaron para crear un nuevo usuario en el sitio usando el enlace wp_insert_user. En ninguna parte de la función se verifica que el registro de usuario esté habilitado en el sitio, tampoco se realizan verificaciones alternativas para verificar que el widget del formulario de registro estaba activo.

La falta de estas verificaciones hace posible que los actores de amenazas esquiven las configuraciones de registro de usuarios en el sitio vulnerable.

El registro Nonce siempre se muestra

Aunque estos registros se usan para mitigar ataques de falsificación de solicitudes entre sitios (CSRF), también pueden actuar como una función de seguridad en casos donde una función contiene una pequeña falla, es decir, si un atacante no puede descubrir el error. La función get_form_data utiliza la verificación nonce que podría haber detenido el registro de usuarios no autorizados. Los expertos del curso de hacking descubrieron que form_nonce siempre estaba visible en el código fuente de una página donde estaba habilitado un UA para el widget Elementor, incluso cuando no había un formulario presente en la página.

Esto significa que un hacker solo requiere raspar el código fuente de las páginas en un sitio que ejecuta el plugin vulnerable para var uaelRegistration. Si ese sitio tuviera al menos un widget en uso en cualquier página, se les otorgaría un nonce utilizable para registrarse en el sitio.

La explotación combinada de las dos fallas permite a cualquier hacker registrarse como suscriptor en un sitio vulnerable, lo que podría ser aprovechado para realizar ataques posteriores que requieran acceso a nivel de suscriptor. La vulnerabilidad recibió un puntaje de 7.2/10 en la escala CVSS, por lo que se le considera un error de alta gravedad.

CVE-2020-13126: Por otra parte, esta vulnerabilidad reside en Elementor, uno de los plugins más populares de WordPress. Elementor Pro, la versión Premium, es usada por cerca de un millón de sitios web y cuenta con casi 50 widgets adicionales.

Cuando un plugin cuenta con la capacidad de cargar archivos, siempre se deben incluir medidas de seguridad adecuadas para evitar que usuarios no autorizados carguen archivos o esquiven cualquier filtro de archivo o de privilegios en el sitio. Por desgracia, la funcionalidad de carga de “Ícono Personalizado” en Elementor Pro no cuenta con las medidas de seguridad apropiadas. Un actor de amenazas podría aprovecharse de esta condición para cargar archivos maliciosos, como shells o backdoors.

Acorde a los expertos del curso de hacking, Elementor Pro registra un endpoint AJAX utilizado para activar la función de carga de iconos. Ni la acción AJAX ni la función de carga cuentan con comprobación de permisos, lo que permitiría a cualquier usuario autenticado la capacidad de activar la función y cargar un archivo .zip.

Carga de archivos sin verificación

La función de carga de íconos personalizados estaba destinada a permitir solo archivos .zip que creados desde los sitios de creación de íconos de Fontello, IcoMoon o Fontastic. No obstante, el plugin en ningún momento verifica si se han incluido archivos adicionales en esos archivos .zip.

Esto permite a los hackers incluir archivos maliciosos en un archivo .zip cargado como un ícono, evitando las restricciones presentes en el plugin.

Una verificación de nonce en la función estaba presente, pero al igual que en Ultimate Addons, el nonce era fácilmente detectable, pues se incluyó en var elementorCommonConfig como “ajax”.

Un actor de amenazas podría encontrar un nonce utilizable raspando la fuente de la página del tablero /wp-admin mientras está autenticado. Esto podría usarse como un elemento legítimo Elementor AJAX para ejecutar la acción vulnerable y cargar archivos .zip especialmente diseñados. La vulnerabilidad recibió un puntaje e 9.9/10 en la escala CVSS, por lo que se le considera una falla crítica.

Para mayores informes sobre vulnerabilidades, exploits, variantes de malware y riesgos de seguridad informática puede ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS), al igual que a las plataformas oficiales de las compañías tecnológicas.