El 5 de noviembre de 2021 el equipo de Wordfence Threat Intelligence inició el proceso de divulgación responsable de una vulnerabilidad que descubrimos en «Login/Signup Popup«, un plugin de WordPress que está instalado en más de 20.000 sitios. Pocos días después descubrimos la misma vulnerabilidad presente en dos plugins adicionales desarrollados por el mismo autor: «Side Cart Woocommerce (Ajax)«, instalado en más de 60.000 sitios, y «Waitlist Woocommerce ( Back in stock notifier )«, instalado en más de 4.000 sitios. Este fallo permitía a un atacante actualizar opciones arbitrarias del sitio en un sitio vulnerable, siempre que pudiera engañar al administrador del sitio para que realizara una acción, como hacer clic en un enlace.
Los investigadores han revelado un fallo de seguridad que afecta a tres plugins diferentes de WordPress y que afecta a más de 84.000 sitios web y que podría ser aprovechado por un actor malicioso para hacerse con el control de sitios vulnerables.
«Este fallo hacía posible que un atacante actualizara opciones arbitrarias del sitio en un sitio vulnerable, siempre que pudiera engañar al administrador del sitio para que realizara una acción, como hacer clic en un enlace», señaló la empresa de seguridad de WordPress Wordfence en un informe publicado la semana pasada.
Rastreado como CVE-2022-0215, el fallo de falsificación de petición de sitio cruzado (CSRF) tiene una calificación de 8,8 en la escala CVSS y afecta a tres plugins mantenidos por Xootix –
Description: Cross-Site Request Forgery to Arbitrary Options Update
Affected Plugins: Login/Signup Popup | Waitlist Woocommerce ( Back in stock notifier ) | Side Cart Woocommerce (Ajax)
Plugin Slugs: easy-login-woocommerce | waitlist-woocommerce | side-cart-woocommerce
Plugin Developer: XootiX
Affected Versions: <= 2.2 | <= 2.5.1 | <= 2.0
CVE ID: CVE-2022-0215
CVSS Score: 8.8 (High)
CVSS Vector:CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Researcher/s: Chloe Chamberland
Fully Patched Versions: 2.3 | 2.5.2 | 2.1
Los tres plugins afectados de XootiX están diseñados para proporcionar características mejoradas a los sitios de WooCommerce. El plugin Login/Signup Popup fue diseñado para añadir ventanas emergentes de inicio de sesión y registro tanto a los sitios estándar como a los sitios potenciados por WooCommerce, mientras que el plugin Waitlist WooCommerce fue diseñado para añadir una lista de espera de productos y un notificador para los artículos agotados y Side Cart Woocommerce fue diseñado para hacer que los carros de la compra estén disponibles desde cualquier parte de un sitio todo ello potenciado a través de AJAX.
La vulnerabilidad es simple. Los tres plugins registran la función save_settings que se inicia a través de una acción wp_ajax. A esta función le faltaba una comprobación de nonce, lo que significaba que no había validación de la integridad de quien realizaba la petición.
public function save_settings(){ if( !current_user_can( $this->capability ) ) return; $formData = array(); $parseFormData = parse_str( $_POST['form'], $formData ); foreach ( $formData as $option_key => $option_data ) { $option_data = array_map( 'sanitize_text_field', stripslashes_deep( $option_data ) ); update_option( $option_key, $option_data ); } wp_send_json(array( 'error' => 0, 'notice' => 'Settings Saved', )); }
Esto hacía posible que un atacante elaborara una petición que activara la acción AJAX y ejecutara la función. Si el atacante podía engañar con éxito al administrador de un sitio para que realizara una acción como hacer clic en un enlace o navegar a un determinado sitio web, mientras el administrador estaba autenticado en el sitio de destino, entonces la solicitud se enviaría con éxito y desencadenaría la acción que permitiría al atacante actualizar opciones arbitrarias en ese sitio web.
Las vulnerabilidades de actualización de opciones arbitrarias permiten a los atacantes actualizar cualquier opción en el sitio web de WordPress. Los atacantes suelen abusar de ellas para establecer la opción user_can_register en true y la opción default_role en administrator, de forma que pueden registrarse en el sitio vulnerable como administrador y hacerse con él por completo.
Aunque esta vulnerabilidad de falsificación de solicitud de sitio cruzado (CSRF) es menos probable de ser explotada debido al hecho de que requiere la interacción del administrador, puede tener un impacto significativo en un sitio explotado con éxito y, como tal, sirve como un recordatorio increíblemente importante para permanecer consciente al hacer clic en los enlaces o archivos adjuntos y para asegurarse de que está manteniendo regularmente sus plugins y temas actualizados.
Conclusión
En el post de hoy, detallamos un fallo presente en tres plugins desarrollados por el mismo desarrollador que haría posible que los atacantes obtuvieran acceso administrativo a los sitios cuando fueran explotados con éxito. Este fallo ha sido completamente parcheado en los tres plugins.
Recomendamos a los usuarios de WordPress que verifiquen inmediatamente que su sitio ha sido actualizado a la última versión parcheada disponible para cada uno de estos plugins, que es la versión 2.3 para «Login/Signup Popup», la versión 2.5.2 para «Waitlist Woocommerce ( Back in stock notifier )», y la versión 2.1 para «Side Cart Woocommerce (Ajax)» en el momento de esta publicación.