1 000 000 de sites touchés par les vulnérabilités d'OptinMonster

Topic : Sécurité   | Publié il y a 1 mois

Le 28 septembre 2021, l'équipe Wordfence Threat Intelligence a lancé le processus de divulgation responsable de plusieurs vulnérabilités que nous avons découvertes dans OptinMonster, un plugin WordPress installé sur plus de 1 000 000 de sites. Ces failles permettaient à un attaquant non authentifié, c'est-à-dire n'importe quel visiteur du site, d'exporter des informations sensibles et d'ajouter des JavaScript malveillants aux sites WordPress, parmi de nombreuses autres actions.

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant ces vulnérabilités le 28 septembre 2021. Les sites utilisant encore la version gratuite de Wordfence recevront la même protection le 28 octobre 2021.

Nous avons envoyé les détails de la divulgation complète à OptinMonster le 28 septembre 2021, après avoir confirmé le canal approprié pour traiter les communications. L'équipe d'OptinMonster a rapidement reconnu le rapport en publiant un correctif le jour suivant.  Nous les avons informés que certaines améliorations étaient nécessaires et une version entièrement corrigée a été publiée en tant que 2.6.5 le 7 octobre 2021.

Nous vous recommandons vivement de vérifier que votre site a été mis à jour avec la dernière version corrigée d'OptinMonster, qui est la 2.6.5 au moment de cette publication.

OptinMonster est un plugin incroyablement intuitif et facile à utiliser, conçu pour créer des campagnes de vente sur des sites WordPress grâce à l'utilisation de boîtes de dialogue. La grande majorité des fonctionnalités du plugin ainsi que le site de l'application OptinMonster reposent sur l'utilisation de points de terminaison API pour permettre une intégration transparente et un processus de conception simplifié.

Malheureusement, la majorité des points de terminaison REST-API n'ont pas été implémentés de manière sécurisée, ce qui permet à des attaquants non authentifiés d'accéder à de nombreux points de terminaison sur des sites utilisant une version vulnérable du plugin.

Le plus critique des points de terminaison REST-API était le point de terminaison /wp-json/omapp/v1/support, qui divulguait des données sensibles telles que le chemin complet du site sur le serveur, ainsi que la clé API nécessaire pour effectuer des requêtes sur le site OptinMonster. En ayant accès à la clé API, un attaquant pouvait modifier toute campagne associée au compte OptinMonster connecté à un site et ajouter un JavaScript malveillant qui s'exécuterait à chaque fois qu'une campagne serait affichée sur le site exploité.

Pire encore, un attaquant n'avait pas besoin d'être authentifié sur le site pour accéder au point de terminaison de l'API grâce à la fonctionnalité mise en œuvre dans la fonction logged_in_or_has_api_key utilisée comme permissions_callback. Par exemple, si une requête vers un point de terminaison d'API a l'en-tête Referer défini sur https://wp.app.optinmonster.test et le type de requête HTTP défini sur OPTIONS, la fonction renvoie `true` et passe ainsi le contrôle de capacité. Un attaquant pourrait simplement répondre à ces exigences et définir l'en-tête HTTP X-HTTP-Method-Override sur la méthode requise pour le point de terminaison REST-API, comme GET ou POST, pour réussir la requête.

public function logged_in_or_has_api_key( $request ) {

    if (

        ! empty( $_SERVER['HTTP_REFERER'] )

        && false !== strpos( $_SERVER['HTTP_REFERER'], 'https://wp.app.optinmonster.test' )

        && 'OPTIONS' === $_SERVER['REQUEST_METHOD']

    ) {

        return true;

    }

    return is_user_logged_in() || true === $this->has_valid_api_key( $request );

}

Cela signifie que n'importe quel attaquant non authentifié peut ajouter un JavaScript malveillant à un site exécutant OptinMonster, ce qui peut conduire à la redirection des visiteurs du site vers des domaines malveillants externes et à la prise de contrôle totale des sites dans le cas où un JavaScript est ajouté pour injecter de nouveaux comptes d'utilisateurs administratifs ou écraser le code du plugin avec un webshell pour obtenir un accès backdoor à un site.

Heureusement, l'équipe d'OptinMonster a invalidé toutes les clés API pour obliger les propriétaires de sites à générer de nouvelles clés dans le cas où une clé aurait été précédemment compromise, et a mis en place des restrictions qui empêchent les clés API associées aux sites WordPress d'effectuer des changements de campagne en utilisant l'application OptinMonster, ce qui empêche l'exploitation réussie de cette chaîne de vulnérabilité.

Ce n'est pas le seul point d'accès affecté

Outre le point de terminaison /wp-json/omapp/v1/support, presque tous les autres points de terminaison REST-API enregistrés dans le plugin étaient vulnérables au contournement d'autorisation en raison d'une vérification insuffisante des capacités, ce qui permettait aux visiteurs non authentifiés, ou dans certains cas aux utilisateurs authentifiés avec des autorisations minimales, d'effectuer des actions non autorisées. Les attaquants pouvaient notamment modifier les paramètres, afficher les données de campagne, activer/désactiver le mode de débogage, etc.

Chronologie de la publication des informations

28 septembre 2021 18:07 PM UTC - Conclusion de l'analyse du plugin qui a conduit à la découverte de multiples vulnérabilités dans le plugin WordPress OptinMonster. Nous développons une règle de pare-feu pour protéger les clients de Wordfence et la diffusons aux utilisateurs de Wordfence Premium.
28 septembre 2021 18:12 PM UTC - Nous prenons contact avec le fournisseur du plugin pour lui demander de confirmer la boîte de réception pour le traitement de la discussion.
28 septembre 2021 18:19 PM UTC - Le vendeur confirme la boîte de réception pour le traitement de la discussion.
28 septembre 2021 19:06 PM UTC - Nous envoyons les détails de la divulgation complète.
29 septembre 2021 7:48 AM UTC - La première version d'une mise à jour est publiée. Nous assurons un suivi pour leur fournir des recommandations supplémentaires.
7 octobre 2021 - Une version entièrement corrigée du plugin, 2.6.5, est publiée.
28 octobre 2021 - Les utilisateurs gratuits de Wordfence reçoivent la règle de pare-feu.

Conclusion

Dans l'article d'aujourd'hui, nous avons détaillé une faille dans le plugin OptinMonster qui permettait une chaîne d'exploitation dangereuse permettant à des attaquants non authentifiés de récupérer les données sensibles d'un site et d'obtenir un accès non autorisé aux comptes utilisateurs OptinMonster, qui pouvaient être utilisés pour ajouter des scripts malveillants aux sites vulnérables. Ces failles ont été entièrement corrigées dans la version 2.6.5.

Nous recommandons aux utilisateurs de WordPress de vérifier immédiatement que leur site a été mis à jour avec la dernière version corrigée disponible, qui est la version 2.6.5 au moment de cette publication.

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 28 septembre 2021. Les sites utilisant encore la version gratuite de Wordfence recevront la même protection le 28 octobre 2021.

Si vous connaissez un ami ou un collègue qui utilise ce plugin sur son site, nous vous recommandons vivement de lui transmettre cet avis pour l'aider à protéger son site, car il s'agit de vulnérabilités sérieuses qui peuvent conduire à une prise de contrôle complète du site.

Si votre site a été compromis par une attaque sur ce plugin ou tout autre plugin, nos services de nettoyage professionnel de site peuvent vous aider à reprendre vos activités.

Source : WordFence