Le 3 août 2021, l’équipe Wordfence Threat Intelligence a lancé le processus de divulgation de deux vulnérabilités que nous avons découvertes dans le Bibliothèque de modèles Gutenberg et cadre Redux plugin, qui est installé sur plus d’un million de sites WordPress. Une vulnérabilité permettait aux utilisateurs disposant d’autorisations inférieures, tels que les contributeurs, d’installer et d’activer des plugins arbitraires et de supprimer toute publication ou page via l’API REST. Une deuxième vulnérabilité permettait à des attaquants non authentifiés d’accéder à des informations potentiellement sensibles sur la configuration d’un site.

L’éditeur du plugin, Redux.io, a répondu presque immédiatement à notre premier contact et nous avons fourni une divulgation complète le même jour, le 3 août 2021. Une version corrigée du plugin, 4.2.13, a été publiée le 11 août 2021.

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre la vulnérabilité ciblant l’API REST le 3 août 2021. Les sites exécutant toujours la version gratuite de Wordfence recevront la même protection après 30 jours, le 2 septembre 2021.

La description: Autorisation incorrecte menant à l’installation et à la post-suppression arbitraires du plug-in
Plugin concerné : Bibliothèque de modèles Gutenberg et cadre Redux
Plugin Slug : redux-framework
Versions concernées : <= 4.2.11
Identifiant CVE : CVE-2021-38312
Note CVSS : 7.1 (Élevé)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
Des chercheurs: Ramuel Gall
Version entièrement corrigée : 4.2.13

Le plugin Gutenberg Template Library & Redux Framework permet aux propriétaires de sites d’ajouter des blocs et des modèles de blocs pour étendre les fonctionnalités d’un site en les choisissant dans une bibliothèque. Pour ce faire, il utilise l’API WordPress REST pour traiter les demandes de liste et d’installation des blocs disponibles, gérer les blocs existants, etc.

Alors que les points de terminaison de l’API REST enregistrés sous le redux/v1/templates/ L’itinéraire REST a utilisé un permission_callback pour vérifier les autorisations d’un utilisateur, ce rappel vérifiait uniquement si l’utilisateur qui a envoyé la demande avait le edit_posts aptitude. Les utilisateurs avec des autorisations inférieures qui ne devraient pas être entièrement fiables pour la fonctionnalité implémentée, tels que les contributeurs et les auteurs, ont cette capacité.

Cela a permis à un contributeur d’installer non seulement des modèles de blocs mais n’importe quel plugin dans le référentiel WordPress via le redux/v1/templates/plugin-install point de terminaison, bien que seuls les plugins où le fichier principal correspond à certains critères soient activés avec succès. Bien que cela ne puisse pas être utilisé directement pour prendre le contrôle d’un site, un attaquant pourrait utiliser cette fonctionnalité pour installer et activer un plugin vulnérable ou une combinaison de plugins et l’utiliser pour obtenir un accès supplémentaire.

Il était également possible pour un utilisateur de niveau contributeur de supprimer n’importe quel article ou page en utilisant le redux/v1/templates/delete_saved_block point final. Des points de terminaison supplémentaires enregistrés sous cette route REST ont également permis la gestion des licences pour le plug-in Redux, auquel les utilisateurs moins privilégiés ne devraient pas pouvoir accéder.

La description: Divulgation d’informations sensibles non authentifiées
Plugin concerné : Bibliothèque de modèles Gutenberg et cadre Redux
Plugin Slug : redux-framework
Versions concernées : <= 4.2.11
Identifiant CVE : CVE-2021-38314
Note CVSS : 5.3 (Moyen)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Des chercheurs: Ramuel Gall
Version entièrement corrigée : 4.2.13

Le plugin Gutenberg Template Library & Redux Framework a enregistré plusieurs actions AJAX disponibles pour les utilisateurs non authentifiés dans le includes fonction dans redux-core/class-redux-core.php qui étaient uniques à un site donné mais déterministes et prévisibles.

L’un d’eux, le $hash_arg, était basé sur un hachage md5 de l’URL du site avec un « sel » connu de « -redux ». Par exemple, un site dont l’URL est “http://examplesite[.]com/’ aurait un $hash_arg de « 901804a230b5e6399d82dcd782395849 », et donc une action AJAX de wp_ajax_nopriv_901804a230b5e6399d82dcd782395849 serait enregistré sur ce site.

			$support_hash = md5( md5( Redux_Functions_Ex::hash_key() . '-redux' ) . '-support' );
			add_action( 'wp_ajax_nopriv_' . $support_hash, array( 'Redux_Helpers', 'support_args' ) );
			add_action( 'wp_ajax_' . $support_hash, array( 'Redux_Helpers', 'support_args' ) );
			$hash_arg = md5( trailingslashit( network_site_url() ) . '-redux' );
			add_action( 'wp_ajax_nopriv_' . $hash_arg, array( 'Redux_Helpers', 'hash_arg' ) );
			add_action( 'wp_ajax_' . $hash_arg, array( 'Redux_Helpers', 'hash_arg' ) );
			add_action( 'wp_ajax_redux_support_hash', array( 'Redux_Functions', 'support_hash' ) );

L’envoi d’une requête AJAX avec cette action a entraîné une réponse contenant un deuxième hachage.

		public static function hash_arg() {
			echo esc_html( md5( Redux_Functions_Ex::hash_key() . '-redux' ) );
			die();
		}

Sur cette base, il a été possible de déterminer ce que $support_hash pour un site serait de prendre le hachage renvoyé dans la réponse du $hash_arg Action AJAX, ajoutant “-support” comme “sel” et prenant le hachage md5 de cette valeur.

Cette $support_hash L’action AJAX, qui était également disponible pour les utilisateurs non authentifiés, appelée le support_args fonction dans redux-core/inc/classes/class-redux-helpers.php, qui renvoyait des informations potentiellement sensibles telles que la version PHP, les plugins actifs sur le site et leurs versions, et un hachage md5 non salé du site AUTH_KEY et SECURE_AUTH_KEY.

Cela serait très utile dans les cas où un plugin séparé avec une vulnérabilité supplémentaire a été installé, car un attaquant pourrait utiliser les informations pour gagner du temps et planifier une intrusion.

Chronologie

3 août 2021 – Wordfence Threat Intelligence termine l’analyse du plugin Gutenberg Template Library & Redux Framework. Nous publions une règle de pare-feu pour les utilisateurs de Wordfence Premium et entamons le processus de divulgation. Le développeur du plugin répond et nous fournissons une divulgation complète.
11 août 2021 – Une version corrigée du plugin, 4.2.13, devient disponible.
2 septembre 2021 – La règle de pare-feu devient disponible pour les utilisateurs gratuits de Wordfence.

Conclusion

Dans l’article d’aujourd’hui, nous avons couvert une vulnérabilité de haute gravité dans Gutenberg Template Library & Redux Framework qui permettait aux utilisateurs de niveau contributeur d’installer et d’activer des plugins et de supprimer des publications et des pages d’un site, ainsi qu’une vulnérabilité de moindre gravité qui révélait des informations potentiellement sensibles. informations. Bien qu’aucun de ces éléments ne puisse être utilisé directement pour prendre le contrôle d’un site, les deux vulnérabilités pourraient être des outils utiles entre les mains d’un attaquant qualifié.

Wordfence Premium les utilisateurs sont protégés contre la vulnérabilité de l’API REST depuis le 3 août 2021. Les sites exécutant toujours la version gratuite de Wordfence recevront la même protection demain, le 2 septembre 2021.

Nous recommandons fortement à tous les utilisateurs de mettre à jour la dernière version du plugin, 4.2.14 au moment de la rédaction de cet article, dès que possible. Si vous connaissez des amis ou des collègues qui utilisent ce plugin, nous vous encourageons à partager cet article avec eux.


Source link