Grave vulnerabilidad corregida en el Currency Switcher de WooCommerce

Durante una auditoría interna del plugin woocommerce-currency-switcher, descubrimos una vulnerabilidad muy grave de inclusión de archivos locales.

Esta vulnerabilidad de seguridad podría permitir a los atacantes filtrar información confidencial, como credenciales de bases de datos y claves criptográficas, y en algunos casos podría permitir la ejecución de código arbitrario.

La semana pasada informamos por correo electrónico de las vulnerabilidades al equipo de WOOCS, que publicó la versión 1.3.7 para solucionar este problema. Si utilizas una versión anterior de este plugin, te recomendamos actualizarlo de inmediato.

Detalles

Nombre del plugin: WOOCS – Selector de divisas de WooCommerce
URL del plugin: https://wordpress.org/plugins/woocommerce-currency-switcher/
Autor: PluginUs.net

La vulnerabilidad

Debido a la gravedad de esta vulnerabilidad y al número de sitios afectados, retrasaremos la publicación de la prueba de concepto para dar tiempo a los usuarios a actualizarse.

Inclusión autenticada de archivos locales

Versiones afectadas: < 1.3.7
ID de CVE: CVE-2021-24566
CVSSv3.1: 9.9
CWE: CWE-98
CWSS: 96.5

public function render_html($pagepath, $data = array()) {
    @extract($data);
    ob_start();
    include($pagepath);
    return ob_get_clean();
}

El método render_html, que el [woocs] shortcode utiliza para mostrar el selector de divisas en una página, no gestiona correctamente los argumentos enviados a la función extract de PHP. 

//[woocs]
    public function woocs_shortcode($args) {
        if (empty($args)) {
            $args = array();
        }
 
        $args['shortcode_params'] = $args;
 
        if (isset($args['sd']) AND intval($args['sd']) > 0) {
            wp_enqueue_style('woocs-sd-selectron23', WOOCS_LINK . 'css/sd/selectron23.css', [], WOOCS_VERSION);
            wp_enqueue_script('woocs-sd-selectron23', WOOCS_LINK . 'js/sd/selectron23.js', [], WOOCS_VERSION);
            wp_enqueue_script('woocs-sd-front', WOOCS_LINK . 'js/sd/front.js', ['woocs-sd-selectron23'], WOOCS_VERSION);
 
            if ($this->shop_is_cached) {
                wp_enqueue_script('woocs-sd-front-cache', WOOCS_LINK . 'js/sd/front-cache.js', ['woocs-sd-front'], WOOCS_VERSION);
            }
 
            global $WOOCS_SD;
            $args['sd_id'] = intval($args['sd']);
            $args['sd_settings'] = $WOOCS_SD->get(intval($args['sd']));
        }
 
        return $this->render_html(WOOCS_PATH . 'views/shortcodes/woocs.php', $args);
    }

Como $data contiene todos los atributos del shortcode, $pagepath puede sobrescribirse con rutas de archivo arbitrarias, que luego se incluirán en el contexto de ejecución del sitio.

Como WordPress permite que cualquier usuario que haya iniciado sesión ejecute shortcodes, independientemente de que tenga permisos para editar entradas o no, se trata de un error bastante grave.

Prueba de concepto

Se publicará próximamente.

Cronología

2021-07-09 – Contacto inicial con PluginUs.net
2021-07-14 – Les enviamos información sobre esta vulnerabilidad
2021-07-15 – PluginUs.net nos envió un parche provisional y programó su publicación para el día 19
2021-07-19 – Se publicó la versión 1.3.7 del WooCommerce Currency Switcher

Conclusión

¡Te recomendamos comprobar qué versión del plugin WooCommerce Currency Switcher utilizas en tu sitio y, si es anterior a la 1.3.7, actualízalo lo antes posible! 

En Jetpack nos esforzamos por asegurarnos de que tus sitios web estén protegidos frente a este tipo de vulnerabilidades. Para ir un paso por delante de cualquier amenaza nueva, echa un vistazo a Jetpack Scan, que incluye el análisis de seguridad y la eliminación automática de malware.

Créditos

Investigador original: Marc Montpas

Gracias al resto del equipo de Jetpack Scan por sus comentarios, ayuda y correcciones. También agradecemos a PluginUs.net que haya solucionado rápidamente este problema y publicado la versión actualizada.

Explora las ventajas de Jetpack

Descubre cómo Jetpack puede ayudarte a proteger, acelerar y hacer crecer tu sitio de WordPress.

Explorar planes

¿Tienes alguna pregunta?

La sección de comentarios está cerrada para este artículo, pero seguimos aquí para ayudarte. ¡Visita el foro de soporte y estaremos encantados de responder a tus preguntas!

Ver foro de soporte