Le 3 mars 2020, notre équipe de renseignement sur les menaces a découvert un certain nombre de vulnérabilités dans WP Lead Plus X, un plugin WordPress avec plus de 70 000 installations conçues pour permettre aux propriétaires de sites de créer des pages de destination et de compression sur leurs sites. Ces vulnérabilités permettaient à un attaquant authentifié disposant d’autorisations minimales, comme un abonné, de créer ou de remplacer complètement n’importe quelle page d’un site par sa propre page contenant du JavaScript malveillant, une défiguration ou une redirection. De plus, un attaquant non authentifié pourrait également télécharger un modèle de page malveillant qui, s’il était utilisé par un administrateur exécutant la version premium du plug-in, exécuterait du code JavaScript malveillant dans le navigateur de cet administrateur, ce qui pourrait entraîner une prise de contrôle du site.

Nous avons tenté de contacter l’auteur du plugin le lendemain, le 4 mars 2020, suivi le 12 mars 2020, et avons envoyé en privé la divulgation complète de la vulnérabilité. L’auteur du plugin a publié un patch préliminaire contenant des vérifications de capacité le 15 mars. Nous avons fait un suivi avec eux le lendemain, car la version corrigée était toujours vulnérable à la contrefaçon de demande intersite (CSRF), et nous avons été informés qu’un correctif plus complet serait à venir. Plus de 2 semaines plus tard, et plus d’un mois après notre première tentative de contact, le patch complet n’est pas encore disponible.

Si ce plugin est essentiel pour les fonctionnalités de votre site, nous vous recommandons vivement de mettre à jour immédiatement au moins la version 0.99, car au moins certains de ces problèmes de sécurité sont corrigés dans cette version. Idéalement, nous vous recommandons de désactiver et de supprimer ce plugin jusqu’à ce qu’un patch plus complet soit disponible.

Les utilisateurs de Wordfence Premium ont reçu une nouvelle règle de pare-feu le 4 mars 2020 pour se protéger contre les exploits ciblant ces vulnérabilités. Les utilisateurs utilisant toujours la version gratuite de Wordfence recevront cette règle le 3 avril 2020.


La description: Script intersite stocké authentifié (XSS)
Plugin concerné: Landing Page – Squeeze Page – Responsive Landing Page Builder Free – WP Lead Plus X
Plugin Slug: free-sales-funnel-squeeze-pages-landing-page-builder-templates-make
Versions concernées:
ID CVE: CVE-2020-11508
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: L / UI: N / S: C / C: L / I: H / A: L
Score CVSS: 9.1 (Critique)
Version corrigée: 0.99

WP Lead Plus X est un plugin WordPress qui permet aux propriétaires de sites de créer des pages de destination et de compression personnalisées, avec sa propre interface de création de page capable d’insérer du JavaScript personnalisé. Malheureusement, cette interface de création de page s’est également appuyée sur une fonction AJAX non protégée qui manquait d’un contrôle de capacité et d’un contrôle nonce afin d’enregistrer et de mettre à jour les pages:

add_action('wp_ajax_core37_lp_save_page', 'core37_lp_save_page');

function core37_lp_save_page()
{
	$content = array();
	parse_str(file_get_contents("php://input"), $content);

	//pass the form ID to the editor
	echo Page_Manager::save_page($content);
	die();
}

En tant que tel, il était possible pour un attaquant connecté avec des autorisations minimales (comme un abonné) d’envoyer un $_POST demande à wp-admin/admin-ajax.php avec le action paramètre défini sur core37_lp_save_page avec le pageContent, pageSlug, pageTitle, et pageSettings paramètres décrivant la page à créer. Cela comprenait le titre de la page, le slug de page, le contenu de la page et tout JavaScript que l’attaquant voulait exécuter lors du chargement de la page.

Pire encore, si un pageID a été envoyé avec l’ID d’une page ou d’une publication existante, cette page ou publication serait complètement remplacée par la page malveillante. Cela a permis à un attaquant de remplacer complètement chaque publication ou page d’un site, y compris les sauvegardes de révision, par leur propre contenu malveillant, sans aucun moyen de revenir en arrière autre que la restauration de contenu à partir d’une sauvegarde de base de données.

En plus d’insérer du code JavaScript malveillant, qui à lui seul pourrait être utilisé pour rediriger les visiteurs vers des sites malveillants ou voler des informations sensibles, cette vulnérabilité pourrait être utilisée pour transformer efficacement tout site exécutant le plug-in en un site de spam.


La description: Scriptage intersite stocké non authentifié (XSS)
Plugin concerné: Landing Page – Squeeze Page – Responsive Landing Page Builder Free – WP Lead Plus X
Plugin Slug: free-sales-funnel-squeeze-pages-landing-page-builder-templates-make
Versions concernées:
ID CVE: CVE-2020-11509
Vecteur CVSS:CVSS: 3.0 / AV: N / AC: L / PR: N / UI: R / S: C / C: L / I: L / A: L
Score CVSS: 7,1 (élevé)
Version corrigée: 0.99

L’une des fonctionnalités disponibles pour les utilisateurs qui ont payé une clé de licence pour WP Lead Plus X est la possibilité de créer et d’utiliser des pages «modèles», qui peuvent être importées comme point de départ lors de la création de nouvelles pages. Bien que cette fonctionnalité ne soit pas visible si le plugin n’a pas de clé de licence, il était toujours possible pour un utilisateur non authentifié d’importer un modèle contenant du JavaScript malveillant. Cela était dû à un admin_post action disponible pour les visiteurs non privilégiés:

add_action('admin_post_nopriv_c37_wpl_import_template', array($this, 'c37_wpl_import_template'));

De plus, la fonction appelée par cette action manquait de vérifications de nonce ou de capacité:

    public function c37_wpl_import_template()
    {
        if (isset($_FILES))
        {
            foreach($_FILES['files_name']['tmp_name'] as $tmpFile)
            {
                Template_Manager::importTemplateFromString(file_get_contents($tmpFile));
            }
        }

        wp_redirect($_POST['request_url'] . '&import=success');
    }

En tant que tel, il était possible pour un attaquant non authentifié de télécharger un modèle en envoyant un $_POST demande à wp-admin/admin-post.php, avec le action paramètre défini sur c37_wpl_import_template et un files_name[] paramètre contenant un fichier de modèle conçu de manière malveillante. Si un propriétaire de site avec une copie sous licence du plugin utilisait ce modèle importé pour créer une page, le JavaScript malveillant s’exécuterait dans son navigateur, ce qui pourrait entraîner une prise de contrôle du site.


La description: Falsification de demande intersite (CSRF)
Plugin concerné: Landing Page – Squeeze Page – Responsive Landing Page Builder Free – WP Lead Plus X
Plugin Slug: free-sales-funnel-squeeze-pages-landing-page-builder-templates-make
Versions concernées:
ID CVE: En attente
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: N / UI: R / S: U / C: L / I: H / A: H
Score CVSS: 8,3 (élevé)
Version corrigée: N / A

Comme mentionné précédemment, aucune des fonctions de ce plugin n’utilise de vérifications nonce, il est donc possible pour un attaquant d’effectuer une action dont le plugin est capable en incitant un administrateur à cliquer sur un lien spécialement conçu pour effectuer cette action. Cela inclut toutes les fonctionnalités décrites ci-dessus, y compris l’ajout de pages au site, le remplacement du contenu du site par du JavaScript malveillant, etc.

Que devrais-je faire?

Il s’agit d’une situation inhabituelle dans la mesure où le plugin n’a pas encore été entièrement corrigé. Il est toujours vulnérable à une attaque CSRF. De plus, les pare-feu (y compris le pare-feu d’application Web Wordfence) ne peuvent pas protéger un site contre une attaque CSRF car ces attaques ressemblent à des requêtes valides adressées à votre site. Si vous gérez un site avec ce plugin installé, cela signifie que la sécurité de votre site est entre vos mains et celle de toute personne disposant de droits d’administrateur sur votre site. Les attaques CSRF nécessitent la participation de la victime, généralement en cliquant sur un lien spécialement conçu dans un e-mail. Si ce plugin est absolument essentiel pour les fonctionnalités de votre site, nous vous invitons à passer à la dernière version disponible et à faire preuve d’une extrême prudence lorsque vous visitez des liens, en particulier ceux qui vous sont envoyés par e-mail. Si vous n’utilisez pas activement ce plugin, nous vous recommandons de le désactiver et de le supprimer jusqu’à ce qu’un correctif plus complet soit disponible.

Calendrier de divulgation

3 mars 2020 – Wordfence Threat Intelligence découvre et analyse les vulnérabilités du plugin WP Lead Plus X.
4 mars 2020 – Règle de pare-feu publiée pour les utilisateurs de Wordfence Premium. Ouverture initiale au développeur du plugin.
12 mars 2020 – Suivi avec le développeur car aucune réponse n’a été reçue. Le développeur confirme la boîte de réception appropriée pour gérer la discussion. Une divulgation complète des vulnérabilités est envoyée.
15 mars 2020 – Le développeur du plugin publie le correctif initial, y compris les vérifications de capacités.
16 mars 2020 – Le suivi avec le développeur car la version corrigée est toujours vulnérable à CSRF. Le développeur répond qu’un correctif pour les problèmes CSRF est à venir.
3 avril 2020 – La règle de pare-feu devient disponible pour les utilisateurs gratuits de Wordfence.

Conclusion

Dans l’article d’aujourd’hui, nous avons détaillé deux vulnérabilités XSS stockées dans le plugin WP Lead Plus X, ainsi qu’une vulnérabilité CSRF. Les failles XSS ont été corrigées dans la version 0.99 et nous recommandons aux utilisateurs qui s’appuient sur ce plugin de mettre à jour la dernière version disponible immédiatement. La vulnérabilité CSRF n’a pas encore été corrigée, et nous recommandons aux utilisateurs qui le peuvent de désactiver et de supprimer ce plugin jusqu’à ce qu’un correctif plus complet soit disponible.

Sites en cours d’exécution Wordfence Premium sont protégés des attaques contre les vulnérabilités XSS depuis le 4 mars 2020. Les sites exécutant la version gratuite de Wordfence ont reçu la même mise à jour des règles de pare-feu le 3 avril 2020.


Source link