Getty Images
Les pirates exploitent activement une vulnérabilité critique dans un plugin WordPress largement utilisé qui leur donne la possibilité de prendre le contrôle complet de millions de sites, ont déclaré des chercheurs.
La vulnérabilité, qui porte un indice de gravité de 8,8 sur 10 possibles, est présente dans Elementor Pro, un plugin premium fonctionnant sur plus de 12 millions de sites alimentés par le système de gestion de contenu WordPress. Elementor Pro permet aux utilisateurs de créer des sites Web de haute qualité à l’aide d’une large gamme d’outils, dont WooCommerce, un plugin WordPress distinct. Lorsque ces conditions sont remplies, toute personne disposant d’un compte sur le site, par exemple un abonné ou un client, peut créer de nouveaux comptes dotés de privilèges d’administrateur complets.
La vulnérabilité a été découverte par Jérôme Bruandet, un chercheur de la société de sécurité NinTechNet. La semaine dernière, Elementor, le développeur du plugin Elementor Pro, a publié la version 3.11.7, qui a corrigé la faille. Dans un billet publié mardi, Bruandet a écrit :
Un attaquant authentifié peut tirer parti de la vulnérabilité pour créer un compte administrateur en activant l’enregistrement (users_can_register) et en définissant le rôle par défaut (default_role) sur « administrateur », modifier l’adresse e-mail de l’administrateur (admin_email) ou, comme indiqué ci-dessous, rediriger tout le trafic vers un site Web malveillant externe en changeant siteurl parmi de nombreuses autres possibilités :
MariaDB [example]> SELECT * FROM `wp_options` WHERE `option_name`=’siteurl’ ; +———–+————-+————-+—- ——+ | option_id | nom_option | valeur_option | chargement automatique | +———–+————-+————-+—- ——+ | 1 | siteurl | https://evil.com | oui | +———–+————-+————-+—- ——+ 1 rangée dans l’ensemble (0,001 sec)
Maintenant, des chercheurs d’une société de sécurité distincte, PatchStack, signalent que la vulnérabilité est exploitée activement. Les attaques proviennent de diverses adresses IP, notamment :
Publicité
- 193.169.194.63
- 193.169.195.64
- 194.135.30.6
Les fichiers téléchargés sur des sites compromis portent souvent les noms suivants :
- wp-resortpack.zip
- wp-rate.php
- lll.zip
Les URL des sites compromis sont souvent remplacées par :
- loin[dot]trackersline[dot]com
La vulnérabilité de contrôle d’accès cassé provient de l’utilisation par Elementor Pro du composant “elementor-pro/modules/woocommerce/module.php”. Lorsque WooCommerce est en cours d’exécution, ce script enregistre les actions AJAX suivantes :
/** * Enregistrer les actions Ajax. * * Enregistre l’action ajax utilisée par l’éditeur js. * * @depuis la version 3.5.0 * * @param Ajax $ajax */ public function register_ajax_actions( Ajax $ajax ) { // `woocommerce_update_page_option` est appelé dans l’éditeur save-show-modal.js. $ajax->register_ajax_action( ‘pro_woocommerce_update_page_option’, [ $this, ‘update_page_option’ ] ); $ajax->register_ajax_action( ‘pro_woocommerce_mock_notices’, [ $this, ‘woocommerce_mock_notices’ ] ); }
et
/** * Option de mise à jour de la page. * * L’action Ajax peut être utilisée pour mettre à jour n’importe quelle option WooCommerce. * * @depuis la version 3.5.0 * * @param array $data */ public function update_page_option( $data ) { update_option( $data[‘option_name’]$données[‘editor_post_id’] ); }
La fonction update_option “est censée permettre à l’administrateur ou au responsable de la boutique de mettre à jour certaines options WooCommerce spécifiques, mais les entrées de l’utilisateur ne sont pas validées et la fonction n’a pas de vérification de capacité pour restreindre son accès à un utilisateur hautement privilégié uniquement”, a expliqué Bruandet. Il a continué:
Elementor utilise son propre gestionnaire AJAX pour gérer la plupart de ses actions AJAX, y compris pro_woocommerce_update_page_option, avec l’action globale elementor_ajax. Il se trouve dans le script « elementor/core/common/modules/ajax/module.php » de la version gratuite (nécessaire pour exécuter Elementor Pro) :
/** * Gérer la requête ajax. * * Vérifiez ajax nonce et exécutez toutes les actions enregistrées pour cette requête. * * Déclenché par l’action `wp_ajax_elementor_ajax`. * * @depuis 2.0.0 * @access public */ public function handle_ajax_request() { if ( ! $this->verify_request_nonce() ) { $this->add_response_data( false, esc_html__( ‘Token Expired.’, ‘elementor’ ) ) ->send_error( Exceptions::UNAUTHORIZED ); } …
Toute personne utilisant Elementor Pro doit s’assurer qu’elle exécute la version 3.11.7 ou une version ultérieure, car toutes les versions précédentes sont vulnérables. C’est également une bonne idée pour ces utilisateurs de vérifier sur leurs sites les signes d’infection répertoriés dans le message PatchStack.