Le 22 avril 2020, notre équipe Threat Intelligence a découvert une vulnérabilité dans Recherche et remplacement en temps réel, un plugin WordPress installé sur plus de 100 000 sites. Cette faille pourrait permettre à n’importe quel utilisateur d’injecter du Javascript malveillant n’importe où sur un site s’il pouvait inciter l’administrateur d’un site à effectuer une action, comme cliquer sur un lien dans un commentaire ou un e-mail.

Nous avons contacté le développeur du plugin le 22 avril 2020 et ils ont publié un correctif quelques heures seulement après que nous leur ayons révélé la vulnérabilité. Ceci est considéré comme un problème de sécurité très grave, par conséquent, nous recommandons fortement une mise à jour immédiate vers la dernière version disponible, qui au moment de la rédaction est la version 4.0.2.

Les utilisateurs de Wordfence Premium et de Wordfence gratuit sont protégés contre les tentatives XSS contre cette vulnérabilité par la protection XSS intégrée du pare-feu Wordfence.

La fonction de recherche et de remplacement en temps réel fournit des fonctionnalités permettant de remplacer dynamiquement tout contenu HTML sur les sites WordPress par un nouveau contenu sans modifier définitivement le contenu source. Les données de remplacement se chargent immédiatement avant d’être transmises au navigateur de l’utilisateur. Le plugin est très facile à utiliser en raison de ses fonctionnalités limitées.

Pour fournir cette fonctionnalité, le plugin enregistre une page de sous-menu liée à la fonction far_options_page avec une exigence de capacité à «activate_plugins. “

 function far_add_pages() {
	$page = add_submenu_page( 'tools.php', 'Real-Time Find and Replace', 'Real-Time Find and Replace', 'activate_plugins', 'real-time-find-and-replace', 'far_options_page' );
	add_action( "admin_print_scripts-$page", "far_admin_scripts" );

le far_options_page contient le noyau de la fonctionnalité du plugin pour ajouter de nouvelles règles de recherche et de remplacement. Malheureusement, cette fonction n’a pas pu utiliser la vérification nonce, donc l’intégrité de la source d’une demande n’a pas été vérifiée lors de la mise à jour des règles, ce qui a entraîné une vulnérabilité de falsification de demande intersite.

function far_options_page() {    
	if ( isset( $_POST['setup-update'] ) ) {
		$_POST = stripslashes_deep( $_POST );
		
		// If atleast one find has been submitted
		if ( isset ( $_POST['farfind'] ) && is_array( $_POST['farfind'] ) ) { 
			foreach ( $_POST['farfind'] as $key => $find ){

Tout attaquant capable d’inciter un propriétaire de site à exécuter une action indésirable pourrait remplacer tout contenu ou HTML sur un site vulnérable par du nouveau contenu ou du code malveillant. Ce code ou contenu de remplacement s’exécutait alors chaque fois qu’un utilisateur accédait à une page contenant le contenu d’origine.

Un attaquant pourrait utiliser cette vulnérabilité pour remplacer une balise HTML comme avec Javascript malveillant. Cela entraînerait l’exécution du code malveillant sur presque toutes les pages du site affecté, car presque toutes les pages commencent par un Balise HTML pour l’en-tête de page, créant un impact significatif si elle est exploitée avec succès. Le code malveillant pourrait être utilisé pour injecter un nouveau compte d’utilisateur administratif, voler des cookies de session ou rediriger les utilisateurs vers un site malveillant, permettant aux attaquants d’obtenir un accès administratif ou d’infecter des visiteurs innocents parcourant un site compromis.

Exemple de Balise HTML remplacée par Javascript.

Dans la version la plus récente, un nonce a été ajouté avec un check_admin_referer fonction de vérification nonce pour garantir la légitimité de la source de la demande.

function far_options_page() {    
	if ( isset( $_POST['setup-update'] ) ) {
        check_admin_referer( 'far_rules_form' );
		$_POST = stripslashes_deep( $_POST );
		
		// If atleast one find has been submitted
		if ( isset ( $_POST['farfind'] ) && is_array( $_POST['farfind'] ) ) { 
			foreach ( $_POST['farfind'] as $key => $find ){

22 avril 2020 – Découverte initiale et analyse de vulnérabilité. Nous vérifions que la règle de pare-feu XSS intégrée à Wordfence est suffisante. Ouverture initiale au développeur du plugin.
22 avril 2020 08:51 UTC – Le développeur répond en confirmant la boîte de réception appropriée.
22 avril 2020 09:34 UTC – Nous fournissons la divulgation complète.
22 avril 2020 13h30 UTC – Nous recevons une notification de publication du correctif.

Dans l’article d’aujourd’hui, nous avons détaillé une faille de falsification de demande intersite dans le plug-in de recherche et de remplacement en temps réel. Cette faille a été entièrement corrigée dans la version 4.0.2. Nous recommandons aux utilisateurs de mettre à jour vers la dernière version, qui est disponible immédiatement. Sites en cours d’exécution Wordfence Premium, ainsi que les sites utilisant la version gratuite de Wordfence, sont protégés contre les attaques Cross-Site Scripting contre cette vulnérabilité en raison de la protection intégrée du pare-feu Wordfence. Si vous connaissez un ami ou un collègue utilisant ce plugin, nous vous recommandons de leur transmettre cet avis de sécurité dès que possible pour aider à sécuriser leur site.


Source link