Le 16 août 2023, notre équipe Wordfence Threat Intelligence a identifié et a commencé le processus de divulgation responsable d’une vulnérabilité de script intersite (XSS) stockée dans le Plugin de newsletter, qui est activement installé sur plus de 300 000 sites Web WordPress. La vulnérabilité permet aux acteurs malveillants disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans des pages à l’aide du shortcode du plugin.
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 Cross-Site Scripting du pare-feu Wordfence.
Nous avons contacté l’équipe de la Newsletter le 16 août 2023 et nous avons reçu une réponse le lendemain. Après avoir fourni tous les détails, le développeur a publié un correctif le 17 août 2023. Nous tenons à féliciter l’équipe Newsletter pour sa réponse rapide et le correctif opportun, qui a été publié le même jour.
Nous invitons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de la Newsletter, la version 7.9.0 au moment d’écrire ces lignes, dès que possible.
Résumé des vulnérabilités de Wordfence Intelligence
Le plugin Newsletter pour WordPress est vulnérable au Stored Cross-Site Scripting via le shortcode « newsletter_form » dans les versions jusqu’à 7.8.9 incluses en raison d’une vérification insuffisante des entrées et d’un échappement de sortie sur les attributs fournis par l’utilisateur. Cela permet aux attaquants authentifiés disposant d’autorisations de niveau contributeur et supérieures d’injecter des scripts Web arbitraires dans des pages qui s’exécuteront chaque fois qu’un utilisateur accède à une page injectée.
Analyse technique
Le plugin Newsletter est un système de newsletter et de marketing par e-mail, avec un générateur de newsletter par glisser-déposer et de nombreuses autres fonctionnalités. Il fournit un shortcode ([newsletter_form]
) qui affiche le formulaire d’abonnement à la newsletter lorsqu’il est ajouté à une page WordPress.
Malheureusement, la mise en œuvre non sécurisée de la fonctionnalité shortcode du plugin permet l’injection de scripts Web arbitraires dans ces pages. L’examen du code révèle que le shortcode a deux types, dont l’un est la méthode get_subscription_form_minimal gérant le type minimal dans la classe NewsletterSubscription. Dans les versions vulnérables, cette méthode ne nettoie pas correctement l’entrée « class » fournie par l’utilisateur, et n’échappe pas non plus de manière adéquate à la sortie « class » lorsqu’elle affiche le formulaire. Cela permet d’injecter des charges utiles Cross-Site Scripting basées sur des attributs via l’attribut « class ».
function shortcode_newsletter_form($attrs, $content) { if (isset($attrs['type']) && $attrs['type'] === 'minimal') { return $this->get_subscription_form_minimal($attrs); }
L’extrait de méthode shortcode_newsletter_form dans la classe NewsletterSubscription
function get_subscription_form_minimal($attrs) { if (!is_array($attrs)) { $attrs = []; } $attrs = array_merge(array('class' => '', 'referrer' => 'minimal', 'button' => $this->get_text('subscribe', 'form'), 'button_color' => '', 'button_radius' => '', 'placeholder' => $this->get_text('email', 'form')), $attrs); $form = ''; $form .= '<div class="tnp tnp-subscription-minimal ' . $attrs['class'] . '">'; $form .= '<form action="' . esc_attr($this->build_action_url('s')) . '" method="post"'; if (!empty($attrs['id'])) { $form .= ' id="' . esc_attr($attrs['id']) . '"'; } $form .= '>'; $form .= $this->get_form_hidden_fields($attrs); $form .= '<input class="tnp-email" type="email" required name="ne" value="" placeholder="' . esc_attr($attrs['placeholder']) . '">'; if (isset($attrs['button_label'])) { $label = $attrs['button_label']; } else if (isset($attrs['button'])) { // Backward compatibility $label = $attrs['button']; } else { $label = $this->get_text('subscribe', 'form'); } $form .= '<input class="tnp-submit" type="submit" value="' . esc_attr($attrs['button']) . '"' . ' style="background-color:' . esc_attr($attrs['button_color']) . '">'; $form .= $this->get_privacy_field('<div class="tnp-field tnp-privacy-field">', '</div>'); $form .= "</form></div>\n"; return $form; }
La méthode get_subscription_form_minimal dans la classe NewsletterSubscription
Cela permet aux acteurs malveillants de mener des attaques XSS stockées. Une fois qu’un script est injecté dans une page ou une publication, il s’exécutera chaque fois qu’un utilisateur accède à la page concernée. Bien que cette vulnérabilité nécessite qu’un compte de contributeur de confiance soit compromis ou qu’un utilisateur puisse s’inscrire en tant que contributeur, les acteurs malveillants qui réussissent pourraient voler des informations sensibles, manipuler le contenu du site, injecter des utilisateurs administratifs, modifier des fichiers ou rediriger les utilisateurs vers des sites Web malveillants. qui sont toutes des conséquences graves.
Possibilités d’exploitation de shortcode
Certaines versions précédentes de WordPress contenaient une vulnérabilité qui permettait aux shortcodes fournis par des commentateurs non authentifiés d’être rendus dans certaines configurations rares, bien que la grande majorité des sites aient été automatiquement mis à niveau vers une version corrigée de WordPress au moment d’écrire ces lignes.
Chronologie de la divulgation
16 août 2023 – L’équipe Wordfence Threat Intelligence découvre la vulnérabilité XSS stockée dans Newsletter.
16 août 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.
17 août 2023 – Le vendeur confirme la boîte de réception pour gérer la discussion.
17 août 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
17 août 2023 – La version entièrement corrigée, 7.9.0, est publiée.
Conclusion
Dans cet article de blog, nous avons détaillé une vulnérabilité XSS stockée dans le Plugin de newsletter affectant les versions 7.8.9 et antérieures. Cette vulnérabilité permet aux auteurs de menaces authentifiés disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans des pages qui s’exécutent lorsqu’un utilisateur accède à une page affectée. La vulnérabilité a été entièrement corrigée dans la version 7.9.0 du plugin.
Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de Newsletter.
Tous les utilisateurs de Wordfence, y compris ceux qui utilisent Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfenceainsi que les sites exécutant toujours la version gratuite de Wordfence, sont entièrement protégés contre cette vulnérabilité.
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.
Pour les chercheurs en sécurité cherchant à divulguer les vulnérabilités de manière responsable et à obtenir un identifiant CVE, vous pouvez soumettez vos conclusions à Wordfence Intelligence et potentiellement gagner une place sur notre classement.
Source link