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.



