Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-1430 — Divulgation responsable d'une vulnérabilité non corrigée dans FluentCRM par WPManageNinja | Kitploit
Outils/GitHubGitHub/karlemilnikka/cve-2023-1430
Authentification et AutorisationAnalyse des VulnérabilitésSécurité WebArticles et RechercheMauvaise ConfigurationApprentissage et Éducation
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

Divulgation responsable d'une vulnérabilité non corrigée dans FluentCRM par WPManageNinja

Voir le dépôt
13il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Mise à jour 2023-06-12 : Vous n'avez plus besoin de l'extrait. WPManageNinja a corrigé la vulnérabilité deux heures après la divulgation publique (93 jours après le signalement).

Mise à jour 2024-01-27 : Le problème connexe lié aux valeurs de hachage permanentes est désormais entièrement résolu.

Divulgation responsable de la vulnérabilité non corrigée CVE-2023-1430 dans FluentCRM par WPManageNinja

tl;dr Les attaquants peuvent afficher et modifier les détails des contacts dans FluentCRM. WPManageNinja n'a pas corrigé la vulnérabilité dans le délai de 90 jours de divulgation responsable. Je fournis un extrait d'atténuation pour empêcher l'exploitation de la vulnérabilité en attendant un correctif officiel.

  • Vulnérabilité : CVE-2023-1430 Utilisation insuffisante du hachage comme contrôle d'autorisation
  • CVSS : 6.5 (Moyen)
  • Logiciel : FluentCRM
  • Versions affectées : vulnérabilité détectée dans 2.7.40
  • Version corrigée : 2.8.02
  • Développeur : WPManageNinja
  • Chercheur : Karl Emil Nikka, Nikka Systems (signalé via Wordfence)
  • Publié publiquement : 2023-06-12
  • Dernière mise à jour : 2023-06-12

Aperçu

Aujourd'hui, je publie des informations sur une vulnérabilité que j'ai trouvée dans le plugin WordPress populaire FluentCRM par WPManageNinja. La vulnérabilité, CVE-2023-1430, est causée par l'utilisation insuffisante d'un hachage d'adresse e-mail comme contrôle d'autorisation par FluentCRM. J'ai divulgué la vulnérabilité de manière responsable conformément à la politique de divulgation des vulnérabilités de Google Zero. WPManageNinja n'a fourni ni correctif dans le délai de 90 jours ni demandé de prolongation.

Dans ce rapport, contact fait référence à un objet contact FluentCRM, tandis que utilisateur fait référence à un objet utilisateur WordPress. Un contact peut être lié à un utilisateur, mais ce n'est pas une exigence. Les détails sur l'exploitation de la vulnérabilité sont retenus jusqu'à ce qu'un correctif officiel soit disponible. Les professionnels de la sécurité peuvent me contacter pour le rapport complet ([email protected]).

Impact général et actions requises

Sur les sites utilisant FluentCRM, un attaquant peut afficher et modifier le nom, l'adresse e-mail et les paramètres de liste d'un contact en connaissant l'adresse e-mail du contact. Étant donné que le nom du contact est souvent inclus dans les newsletters via des balises de fusion, un attaquant peut remplacer le nom du contact par un langage grossier, ce qui amène le propriétaire du site à envoyer des newsletters vulgaires. Si l'administrateur du site a activé le shortcode de FluentCRM pour gérer les préférences et l'a ajouté à une page web publique, un attaquant peut afficher et modifier toutes les informations personnelles exposées, c'est-à-dire le titre, le numéro de téléphone, la date de naissance et l'adresse (selon la configuration de FluentCRM).

FluentCRM est installé sur plus de 30 000 sites. Les administrateurs de sites FluentCRM peuvent empêcher l'exploitation de la vulnérabilité en ajoutant mon extrait d'atténuation au fichier functions.php de leur thème enfant.

L'extrait ne corrige pas la vulnérabilité. Il remplace le contenu vulnérable sur la page de désabonnement de FluentCRM (unsubscribe.php) et la page de gestion des préférences (manage_subscription.php) par un message d'erreur invitant le contact à contacter par e-mail. L'adresse e-mail dans le message d'erreur est l'adresse e-mail de l'administrateur du site (elle peut être modifiée à partir de l'extrait). L'extrait d'atténuation garantit également que les visiteurs non connectés ne peuvent pas afficher le shortcode vulnérable de FluentCRM pour la gestion des préférences (fluentcrm_pref). Un visiteur non connecté verra plutôt un message d'erreur l'invitant à se connecter. Toutes les chaînes sont traduisibles avec le fichier POT fourni.

Actions requises

Je recommande aux propriétaires de sites web de mettre en œuvre soit l'atténuation que je fournis, soit leur propre atténuation correspondante. Les propriétaires de sites doivent également vérifier l'intégrité de leurs données de contact FluentCRM et, si possible, consulter leurs journaux pour détecter d'éventuelles fuites de données. La vérification des journaux est particulièrement importante pour les sites suivants :

  • sites où le nom enregistré d'un contact est une information sensible
  • sites où le shortcode de FluentCRM pour la gestion des préférences est ou a été présent sur des pages publiques pour les visiteurs non connectés
  • sites où la gestion des listes est activée et le nom des listes auxquelles un contact est abonné est une information sensible.

Le responsable du traitement des données désigné du site web doit gérer les fuites potentielles de données personnelles conformément aux lois et réglementations des juridictions concernées.

Impact potentiel supplémentaire

Si FluentCRM est configuré pour synchroniser les paramètres d'un contact avec son utilisateur correspondant, un attaquant peut modifier le nom de l'utilisateur. Heureusement, FluentCRM ne synchronise pas les adresses e-mail des contacts vers les utilisateurs. Si FluentCRM le faisait, cette vulnérabilité permettrait des prises de contrôle complètes du site. Un attaquant aurait pu obtenir un accès privilégié en modifiant l'adresse e-mail de l'administrateur du site, puis en réinitialisant le mot de passe de l'administrateur.

Cependant, d'autres solutions peuvent synchroniser toutes les métadonnées des contacts vers les utilisateurs, par exemple WP Fusion et l'API de FluentCRM. WP Fusion est probablement le plugin tiers le plus populaire pour synchroniser les métadonnées des contacts entre un CRM (par exemple FluentCRM) et WordPress. Heureusement, la version actuelle de WP Fusion n'est pas connectée aux modifications de métadonnées initiées à partir des formulaires vulnérables. J'ai informé les développeurs de WP Fusion, et ils ne résoudront cette limitation que lorsque WPManageNinja aura corrigé la vulnérabilité.

L'API de FluentCRM peut également être utilisée pour mettre à jour les données des contacts et des utilisateurs. Les propriétaires de sites qui utilisent l'API de FluentCRM pour mettre à jour les adresses e-mail des utilisateurs doivent désactiver cette mise à jour lorsqu'elle est initiée depuis la page ou le shortcode de FluentCRM pour la gestion des préférences (ou ajouter mon extrait d'atténuation pour garantir qu'aucun paramètre ne peut être mis à jour depuis les formulaires vulnérables).

Exploitation de la vulnérabilité

FluentCRM permet aux contacts de se désabonner et de gérer leurs préférences à partir de pages web publiques. Des liens vers ces pages sont inclus dans chaque newsletter. Les modifications effectuées sur ces pages sont autorisées par les hachages MD5 des adresses e-mail des contacts, transmis comme paramètres d'URL. Le hachage MD5 d'une adresse e-mail n'est pas un secret et peut être calculé par n'importe qui. Un attaquant peut exploiter l'utilisation incorrecte des hachages pour désabonner des contacts spécifiques ou désabonner en masse des contacts dont les adresses e-mail sont connues.

Alors que la page de désabonnement repose uniquement sur le hachage MD5 pour l'autorisation, la page de gestion des préférences nécessite un paramètre d'URL supplémentaire appelé ce_id. Dans ce cas, le ce_id fait référence à l'ID du contact dans la table fc_subscribers. Cet ID est un entier incrémental. La valeur de ce_id est donc facilement trouvée en testant toutes les valeurs possibles (l'espace de recherche est le nombre de contacts jamais enregistrés sur le site). Les utilisateurs administrateurs ont probablement des valeurs faibles.

Depuis la page de gestion des préférences, un attaquant peut également exfiltrer la valeur secure_hash du contact. En mettant à jour l'adresse e-mail du contact, la valeur « secure_hash » du contact est stockée dans un cookie appelé fc_hash_secure. Avec ce cookie en place, l'attaquant peut afficher toutes les informations de contact rendues disponibles par le shortcode du formulaire de préférences de FluentCRM.

Problème mineur connexe : valeurs de hachage permanentes

Le « secure_hash » mentionné précédemment est une valeur sur laquelle FluentCRM (dans certaines situations) s'appuie au lieu du hachage MD5 de l'adresse e-mail ou comme alternative. Depuis la version 2.8.0 de FluentCRM, la page de désabonnement repose exclusivement sur la valeur secure_hash pour l'autorisation. La page de gestion des préférences accepte à la fois la nouvelle valeur secure_hash et l'ancien hachage MD5 de l'adresse e-mail pour l'autorisation.

Bien que la valeur secure_hash ne puisse pas être dérivée de l'adresse e-mail, l'utilisation de FluentCRM ne suit pas les bonnes pratiques de sécurité. La valeur secure_hash est générée une fois par contact. Elle n'est jamais mise à jour et n'expire jamais. Cela pose problème car la valeur secure_hash est incluse dans chaque newsletter. Si un attaquant accède à la boîte de réception d'un contact, il peut modifier indéfiniment les paramètres du contact. Si le contact concerné est lié à un utilisateur disposant de privilèges d'administrateur et que les changements d'adresse e-mail sont synchronisés de FluentCRM vers WordPress, chaque newsletter envoyée à ce contact contiendra un token qui n'expire jamais pour prendre le contrôle du site.

J'ai signalé ce problème connexe à WPManageNinja le 2023-03-15. Deux mois plus tard (2023-05-15), WPManageNinja a répondu que leurs conseillers en sécurité ne considéraient pas la valeur secure_hash statique comme un problème. Les conseillers en sécurité de WPManageNinja ont déclaré qu'il était « acceptable d'utiliser ce type de tokens générés une seule fois pour identifier le contact » et que c'était « similaire aux tokens API des services SaaS qui ne sont délivrés à aucun autre contact mais uniquement envoyés au contact réel propriétaire de l'adresse e-mail ».

WPManageNinja a fait preuve d'ouverture d'esprit et m'a dit de les informer si je pensais toujours que c'était un problème de sécurité, ce que j'ai fait. J'ai expliqué pourquoi les valeurs secure_hash ne pouvaient pas être comparées aux tokens API. (Les tokens API peuvent être assurés d'être envoyés uniquement sur des connexions TLS, et l'accès aux tokens API peut être restreint. Ce n'est pas le cas des valeurs en clair dans les e-mails. Plus important encore, les tokens API peuvent être révoqués alors qu'il n'y a aucun moyen pour un contact de révoquer une valeur secure_hash.)

Plus tard dans la journée, WPManageNinja m'a remercié et a dit qu'ils envisageaient de combiner l'ID d'enregistrement de l'e-mail avec le hachage. Cela résoudra le problème si cela est mis en œuvre conjointement avec la révocation automatique des anciennes valeurs secure_hash (expiration basée sur le temps) ou précédentes (expiration basée sur un compteur). Cette fonctionnalité n'a pas encore été mise en œuvre, mais je ne considère pas l'utilisation de valeurs de hachage statiques comme faisant partie de cette CVE.

Chronologie

  • 2023-03-11 J'ai signalé la vulnérabilité à WPManageNinja. À ce stade, je n'avais trouvé la vulnérabilité que sur la page de désabonnement.
  • 2023-03-13 WPManageNinja a accusé réception de mon rapport.
  • 2023-03-14 Les développeurs de WPManageNinja ont nié utiliser des hachages MD5 d'adresses e-mail pour l'autorisation, affirmant qu'ils utilisaient des tokens wp_generate_uuid4.
  • 2023-03-14 J'ai expliqué et prouvé qu'ils dépendaient de hachages MD5 d'adresses e-mail.
  • 2023-03-15 En raison de la réponse initiale de WPManageNinja, j'ai creusé plus profondément et j'ai trouvé la même vulnérabilité sur la page de gestion des préférences. J'ai signalé mes conclusions à WPManageNinja et expliqué pourquoi cela rendait la vulnérabilité plus grave. J'ai également soumis un rapport à Wordfence et demandé un CVE.
  • 2023-03-16 WPManageNinja a accusé réception de mon rapport mis à jour.
  • 2023-03-16 Wordfence a confirmé la vulnérabilité et lui a attribué le CVE-2023-1430.
  • 2023-04-10 J'ai envoyé un rappel à 30 jours à WPManageNinja.
  • 2023-04-14 WPManageNinja a publié FluentCRM 2.8.0 sans mention de correctifs de sécurité (juste « améliorations et corrections de bugs »).
  • 2023-04-22 J'ai informé WPManageNinja que la mise à jour 2.8.0 ne corrigeait la vulnérabilité que sur la page de désabonnement et qu'elle persistait sur la page de gestion des préférences.
  • 2023-04-24 WPManageNinja a accusé réception de mon rapport mis à jour.
  • 2023-05-14 J'ai envoyé un rappel à 60 jours à WPManageNinja.
  • 2023-05-15 WPManageNinja a dit qu'ils m'enverraient une version bêta corrigée la semaine suivante (ce qu'ils n'ont jamais fait).
  • 2023-06-01 J'ai demandé à WPManageNinja si je devais avertir le développeur de WP Fusion avant la divulgation publique. WPManageNinja m'a dit que ce n'était pas nécessaire car ils publieraient une mise à jour la semaine suivante (ce qu'ils n'ont pas fait).
  • 2023-06-08 J'ai dit à WPManageNinja que je reporterais la divulgation publique au 2023-06-12 car la date de divulgation publique initiale était proche du week-end.
  • 2023-06-09 J'ai informé WPManageNinja qu'ils avaient atteint 90 jours et que la prochaine étape responsable serait de publier des informations sur la vulnérabilité afin que chacun puisse mettre en œuvre des atténuations en attendant. J'ai également demandé aux développeurs de WP Fusion de ne pas résoudre la limitation de synchronisation tant que WPManageNinja n'aurait pas corrigé la vulnérabilité.
  • 2023-06-09 Wordfence a publié les premiers détails sur la vulnérabilité, indiquant incorrectement que la vulnérabilité avait été corrigée. Cela était dû à un problème de communication entre moi et Wordfence.
  • 2023-06-12 J'ai publié ce rapport avec les détails d'exploitation retenus.
  • 2023-06-12 WPManageNinja a corrigé la vulnérabilité deux heures après la divulgation publique (93 jours après le signalement) sans mentionner quoi que ce soit sur la vulnérabilité dans leur journal des modifications (juste « Utiliser Secure Hash au lieu de MD5 pour la page de préférences d'abonnement »).

Nikka Systems Academy (Projet Opal) n'est PAS concerné

Au premier trimestre 2023, nous avons commencé à migrer de notre ancien outil de newsletter (Sendy) vers FluentCRM. J'ai trouvé la vulnérabilité lors de l'intégration de FluentCRM avec Nikka Systems Academy (Projet Opal). Comme nous avons remplacé le système de gestion des abonnements de FluentCRM par notre plugin personnalisé, les formulaires vulnérables de FluentCRM n'ont jamais affecté notre site ni les données de nos clients.

Recommandations pour WPManageNinja

FluentCRM est un excellent plugin, mais la gestion de la divulgation de la vulnérabilité par WPManageNinja laisse beaucoup à désirer. La liste suivante est ma suggestion sur la façon dont WPManageNinja pourrait améliorer la situation.

  • Ils devraient consulter un auditeur tiers pour auditer la base de code actuelle. La vulnérabilité CVE-2023-1430 est un exemple classique de la façon de ne pas utiliser les hachages. Conjointement avec le déni initial de WPManageNinja d'utiliser même des hachages MD5 d'adresses e-mail pour l'autorisation, cela me dit qu'il est probablement temps de procéder à un audit tiers de la base de code.
  • Ils devraient publier un fichier security.txt (RFC 9116) afin que les chercheurs en sécurité puissent contacter directement leurs développeurs. Ils ont manqué des jours d'atténuation importants car j'ai dû signaler la vulnérabilité via leur service client, qui a initialement et incorrectement rejeté le rapport de vulnérabilité.
  • Ils devraient établir une meilleure procédure pour corriger les vulnérabilités en temps opportun. Une vulnérabilité facile à corriger comme celle-ci devrait être résolue dans les 30 jours. Ne pas avoir de correctif prêt dans le délai de 90 jours de divulgation responsable est inacceptable.
  • Ils devraient toujours divulguer les vulnérabilités résolues et les améliorations de sécurité mises en œuvre dans leurs journaux des modifications afin que leurs clients sachent à quel point les mises à jour sont importantes.

Cela dit, j'ai toujours confiance en WPManageNinja. Il y a des bugs dans tous les logiciels, et un seul rapport de vulnérabilité mal géré n'est pas une raison pour cesser d'utiliser leurs plugins.

Mise à jour 2023-06-12 : Le fait qu'ils aient encore essayé de cacher la vulnérabilité dans leur journal des modifications m'inquiète vraiment. (Ils ont maintenant ajouté le CVE.)

Journal des modifications

  • 2023-06-12 Publication initiale.
  • 2023-06-12 Mise à jour avec des informations sur la disponibilité du correctif et les détails d'exploitation précédemment retenus.
  • 2023-06-12 Ajouté à la chronologie : WPManageNinja ajoute des informations sur le CVE dans le journal des modifications du plugin.
  • 2023-06-12 Corrections de fautes d'orthographe. CVSS porté à 6.5 par Wordfence.
  • 2024-01-27 Ajout d'informations sur la façon dont FluentCRM 2.8.40 et 2.8.41 ont résolu le problème mineur connexe des valeurs de hachage permanentes.
Télécharger l’outil
  • 2023-06-12 J'ai mis à jour ce rapport avec des informations sur le correctif et les détails précédemment retenus.
  • 2023-06-12 WPManageNinja a ajouté des informations sur le CVE dans le journal des modifications du plugin.
  • 2024-01-17 WPManageNinja m'a contacté pour connaître mon avis sur leur solution au problème des valeurs de hachage permanentes.
  • 2024-01-27 WPManageNinja a publié FluentCRM 2.8.40, résolvant le problème des valeurs de hachage permanentes avec mes améliorations suggérées mises en œuvre.
  • 2024-01-27 WPManageNinja a publié FluentCRM 2.8.41, garantissant que l'ancien hachage d'authentification d'un contact est invalidé lorsque l'utilisateur WordPress connecté change de mot de passe.
  • 2024-01-27 J'ai considéré que le problème mineur connexe des valeurs de hachage permanentes était résolu.