Le 18 décembre 2023, juste avant la fin de Holiday Bug Extravaganza, nous avons reçu une soumission concernant une vulnérabilité d'inclusion de fichiers locaux dans Bouclier de sécurité, un plugin WordPress avec plus de 50 000 installations actives. Il est important de noter que cette vulnérabilité est limitée à la seule inclusion de fichiers PHP. Cependant, elle pourrait être exploitée par un attaquant ayant la possibilité de télécharger des fichiers PHP mais ne pouvant pas accéder directement à ces fichiers pour les exécuter.

Des accessoires pour hir0ot qui a découvert et signalé de manière responsable cette vulnérabilité via Wordfence Programme de prime aux bogues. Ce chercheur a gagné une prime de 938,00 $ pour cette découverte lors de notre extravagance du programme Bug Bounty.

Tous Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les clients, ainsi que ceux qui utilisent encore la version gratuite de notre plugin, sont protégés contre tout exploit ciblant cette vulnérabilité par la protection intégrée de traversée de répertoire et d'inclusion de fichiers locaux du pare-feu Wordfence.

Nous avons contacté l'équipe de sécurité de Shield le 21 décembre 2023 et avons reçu une réponse le 23 décembre 2023. Après avoir fourni tous les détails, le développeur a publié un correctif le 23 décembre 2023. Nous tenons à féliciter l'équipe de sécurité de Shield pour son réponse rapide et correctif opportun, publié le même jour.

Nous invitons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de Shield Security, à savoir la version 18.5.10, dès que possible.

Résumé des vulnérabilités de Wordfence Intelligence

Le plugin Shield Security – Smart Bot Blocking & Intrusion Prevention Security pour WordPress est vulnérable à l’inclusion de fichiers locaux dans toutes les versions jusqu’à la 18.5.9 incluse via le paramètre render_action_template. Cela permet à un attaquant non authentifié d'inclure et d'exécuter des fichiers PHP sur le serveur, permettant ainsi l'exécution de n'importe quel code PHP dans ces fichiers.

Analyse technique

Shield Security est un plugin de sécurité de site Web WordPress qui offre plusieurs fonctionnalités pour arrêter les attaquants, protéger et surveiller le site Web, notamment un pare-feu, un scanner de logiciels malveillants et également enregistrer les activités.

Le plugin comprend un système de gestion de modèles qui restitue .twig, .php ou .html des dossiers. Malheureusement, l'implémentation non sécurisée du modèle de fichier du plugin, y compris la fonctionnalité de rendu, permet l'inclusion arbitraire de fichiers dans les versions vulnérables. Le chemin du modèle est défini avec le setTemplate() fonction.

public function setTemplate( $templatePath ) {
	$this->template = $templatePath;
	if ( property_exists( $this, 'sTemplate' ) ) {
		$this->sTemplate = $templatePath;
	}
	return $this;
}

Le renderPhp() fonctionner dans le Render la classe utilise le path_join() fonction pour rejoindre le fichier modèle. Il vérifie ensuite que le fichier modèle est un fichier existant et l'inclut.

private function renderPhp() :string {
	if ( \count( $this->getRenderVars() ) > 0 ) {
		\extract( $this->getRenderVars() );
	}

	$template = path_join( $this->getTemplateRoot(), $this->getTemplate() );
	if ( Services::WpFs()->isFile( $template ) ) {
		\ob_start();
		include( $template );
		$contents = \ob_get_clean();
	}
	else {
		$contents = 'Error: Template file not found: '.$template;
	}

	return (string)$contents;
}

L'examen du code révèle qu'il n'y a aucune vérification du chemin de fichier dans ces fonctions. Cela permet d'inclure des fichiers PHP arbitraires du serveur.

L'inclusion de fichiers est limitée aux fichiers PHP dans la vulnérabilité. Cela signifie que les acteurs malveillants ne peuvent pas exploiter l’une des méthodes d’exécution de code à distance les plus populaires via une attaque par empoisonnement de fichiers journaux. Puisque le plugin utilise également isFile() fonction de vérification de fichiers, l'autre méthode d'exécution de code à distance populaire utilisant l'attaque des wrappers n'est pas non plus possible. Néanmoins, l'attaquant dispose de plusieurs options pour inclure et exploiter un fichier PHP malveillant et l'exécuter sur le serveur. Ceci peut être réalisé en enchaînant l’attaque et en exploitant les vulnérabilités d’autres plugins. Cependant, il convient de mentionner que les possibilités d'attaque sont limitées. Cela serait probablement exploité dans le cas où un attaquant aurait accès au téléchargement d'un fichier PHP, mais n'aurait pas d'accès direct au fichier pour l'exécuter.

Pare-feu Wordfence

Le graphique suivant montre les étapes d'exploitation qu'un attaquant pourrait suivre et à quel point le pare-feu Wordfence empêcherait un attaquant d'exploiter avec succès la vulnérabilité.

La règle de pare-feu Wordfence détecte le chemin du fichier malveillant et bloque la demande.

Chronologie de la divulgation

18 décembre 2023 – Nous recevons la soumission de la vulnérabilité Local File Inclusion dans Shield Security via le programme Wordfence Bug Bounty.
20 décembre 2023 – Nous validons le rapport et confirmons l’exploit de preuve de concept.
21 décembre 2023 – Nous prenons contact avec le fournisseur du plugin en lui demandant de confirmer la boîte de réception pour gérer la discussion.
23 décembre 2023 – Le vendeur confirme la boîte de réception pour gérer la discussion.
23 décembre 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
23 décembre 2023 – La version entièrement corrigée du plugin, 18.5.10, est publiée.

Conclusion

Dans cet article de blog, nous avons détaillé une vulnérabilité d'inclusion de fichiers locaux dans le Plugin de sécurité Shield affectant les versions 18.5.9 et antérieures. Cette vulnérabilité permet à des acteurs malveillants non authentifiés d'inclure et d'exécuter des fichiers PHP sur le serveur, permettant ainsi l'exécution de n'importe quel code PHP contenu dans ces fichiers, qui peut être utilisé pour compromettre complètement le site. La vulnérabilité a été entièrement corrigée dans la version 18.5.10 du plugin.

Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de Shield Security.

Tous Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les clients, ainsi que ceux qui utilisent encore la version gratuite de notre plugin, sont protégés contre tout exploit ciblant cette vulnérabilité par la protection intégrée de traversée de répertoire et d'inclusion de fichiers locaux du pare-feu Wordfence.

Si vous connaissez quelqu'un qui utilise ce plugin sur son site, nous vous recommandons de partager cet avis avec lui pour garantir la sécurité de son site, car cette vulnérabilité présente un risque important.


Source link