Vulnérabilité critique de contournement

Le 10 mars 2022, l'équipe Wordfence Threat Intelligence a lancé le processus de divulgation responsable d'une vulnérabilité que nous avons découverte dans "SiteGround Security", un plugin WordPress installé sur plus de 400 000 sites. Cette faille permet aux attaquants d'obtenir un accès utilisateur administratif sur des sites vulnérables lorsque l'authentification à deux facteurs (2FA) est activée mais pas encore configurée pour un administrateur.

Wordfence Premium , Wordfence Care et Wordfence Response ont reçu un ensemble de règles de pare-feu le 10 mars 2022 pour fournir une protection contre tout attaquant essayant d'exploiter cette vulnérabilité. Les utilisateurs de Wordfence Free recevront cette même protection 30 jours plus tard, le 9 avril 2022

Après avoir envoyé les détails de la divulgation complète à l'équipe de sécurité de SiteGround le 10 mars 2022, un correctif a été publié le lendemain, le 11 mars 2022. Bien que le plug-in ait été partiellement corrigé immédiatement, il n'a été corrigé de manière optimale que le 7 avril 2022.

Les sites hébergés sur la plate-forme SiteGround ont été automatiquement mis à jour vers la version corrigée tandis que ceux hébergés ailleurs nécessiteront une mise à jour manuelle, si les mises à jour automatiques ne sont pas activées pour le plugin. Nous vous recommandons fortement de vous assurer que votre site a été mis à jour avec la dernière version corrigée de "SiteGround Security", qui est la version 1.2.6 au moment de cette publication.


Description : Contournement de l'authentification via la configuration de l'authentification à 2 facteurs
Plugin concerné : SiteGround Security
Plugin Slug : sg-security
Développeur du plug-in : SiteGround
Versions concernées : <= 1.2.5
ID CVE : CVE-2022-0992
Score CVSS : 9,8 (critique)
Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Chercheur/s : Chloe Chamberland
Version entièrement corrigée : 1.2.6

SiteGround Security est un plugin conçu pour améliorer la sécurité des installations WordPress via plusieurs fonctionnalités telles que la sécurité de connexion, y compris 2FA, le renforcement général de WordPress, la surveillance des activités, etc. Il convient également de noter qu'il est préinstallé sur tous les sites WordPress hébergés par SiteGround. Malheureusement, la fonctionnalité 2FA du plugin a été implémentée de manière non sécurisée, ce qui a permis à des attaquants non authentifiés d'accéder à des comptes privilégiés.

Lorsque l'authentification à deux facteurs est activée, tous les utilisateurs administratifs et éditeurs doivent configurer l'authentification à deux facteurs. Cette exigence est déclenchée lorsque les utilisateurs administratifs et éditeurs du site se connectent au site pour la première fois après l'activation de 2FA, moment auquel ils sont invités à configurer 2FA pour leur compte. Cela signifie qu'il y aura une période de temps entre l'activation de 2FA sur un site et chaque utilisateur le configurant pour le compte.

Pendant cette période intermédiaire, les attaquants pourraient détourner le processus de configuration 2FA. Le plugin avait un défaut qui permettait aux attaquants de contourner complètement la première étape d'authentification, qui nécessite un nom d'utilisateur et un mot de passe, et d'accéder à la page de configuration 2FA pour les utilisateurs qui n'avaient pas encore configuré 2FA.

C'était aussi simple que de fournir l'ID utilisateur qu'ils souhaitaient compromettre via le sg-user-id paramètre, ainsi que quelques autres paramètres pour indiquer qu'ils souhaitaient déclencher le processus de configuration 2FA initial.

La validate_2fa_login()fonction suivante montre le processus par lequel un ID fourni par l'utilisateur est validé. Si les résultats de la check_authentication_code()fonction et la sg_security_2fa_configuredméta de l'utilisateur retournent false, ce qui indique que 2FA n'a pas encore été configuré pour cet utilisateur, alors le plugin chargera le modèle 2fa-initial-setup-form.php qui affiche le code QR et 2FA secret nécessaire pour configurer l'application d'authentification pour l'ID fourni par l'utilisateur.

Le code QR d'authentification et la clé secrète affichés qui seraient affichés aux utilisateurs potentiellement non autorisés.

Le code QR et la clé secrète renvoyés sont les seuls éléments nécessaires pour connecter le compte utilisateur à un mécanisme d'authentification, tel que Google Authenticator. Les attaquants ont pu l'utiliser pour connecter leur application d'authentification au compte et utiliser avec succès un code pour passer le "deuxième facteur d'authentification". Cette fonction définirait ensuite les cookies d'authentification de l'utilisateur via la wp_set_auth_cookie()fonction utilisant l'ID fourni par l'utilisateur à partir du sg-user-idparamètre qui connecte effectivement l'attaquant en tant que cet utilisateur. En raison de la configuration par défaut du plugin, ce compte serait très probablement un utilisateur privilégié comme un administrateur ou un éditeur. Il convient également de noter que la fonction renvoie les codes de secours qui pourraient être utilisés via la faiblesse décrite dans la section suivante.

Pour résumer, il n'y avait aucune validation sur la validate_2fa_login()fonction que l'identité revendiquée par un utilisateur était en fait légitime. En tant que tels, les attaquants pourraient contourner le premier mécanisme d'authentification, une paire nom d'utilisateur/mot de passe, qui est destinée à prouver l'identité et à se connecter avec succès, en raison d'une faiblesse du deuxième mécanisme d'authentification, le processus 2FA. En cas de succès, un attaquant pourrait infecter complètement un site en exploitant cette vulnérabilité.


Description :
Faiblesse de l'autorisation au contournement de l' authentification via l'authentification à 2  facteurs Vecteur CVSS 8.1 (élevé) : CVSS : 3.1/AV : N/AC : H/PR : N/UI : N/S : U/C : H/I : H/A : H Chercheur(s) : Chloe Chamberland Entièrement corrigé Version : 1.2.6

En plus de la vulnérabilité décrite ci-dessus, la méthode dans laquelle l'authentification du code de sauvegarde 2FA a été gérée a permis aux attaquants de se connecter s'ils étaient capables de forcer brutalement un code de sauvegarde pour un utilisateur ou de le compromettre par d'autres moyens tels que comme injection SQL.

En approfondissant, le plug-in a enregistré la validate_2fabc_login()fonction qui a validé le code de sauvegarde fourni via la validate_backup_login()fonction en utilisant l'ID utilisateur fourni par l'utilisateur à partir du sg-user-idparamètre ainsi que le code de sauvegarde fourni via le sgc2fabackupcodeparamètre. Si le code de secours a été trouvé dans le tableau des codes de secours stockés pour cet utilisateur, la fonction utilisera la wp_set_auth_cookie()fonction pour définir les cookies d'authentification pour l'ID utilisateur fourni. Si cet ID utilisateur appartenait à un administrateur, l'attaquant serait effectivement connecté en tant qu'administrateur.

Comme pour la vulnérabilité précédente, le problème ici est qu'il n'y avait pas de véritable validation d'identité pour l'authentification, ce qui indique une faiblesse d'autorisation. La fonction n'a effectué aucune vérification pour vérifier qu'un utilisateur s'était précédemment authentifié avant d'entrer le code de secours 2FA, et en tant que tel, il n'avait pas besoin de se connecter légitimement avant d'être connecté tout en utilisant un code de secours. Cela signifiait qu'il n'y avait aucune vérification pour valider qu'un utilisateur était autorisé à utiliser un code de secours pour effectuer le deuxième facteur d'authentification qui le connecterait.

Bien que le risque dans ce cas soit plus faible, les codes de sauvegarde étaient composés de 8 chiffres et entièrement numériques, de sorte qu'un attaquant pourrait potentiellement forcer brutalement l'un des 8 codes de sauvegarde et être automatiquement connecté sans connaître la combinaison d'un nom d'utilisateur et d'un mot de passe pour un administrateur. utilisateur.

Bien que cela ne soit pas pratique à tenter sur la plupart des serveurs, un adversaire patient attaquant un serveur bien provisionné capable de traiter un grand nombre de requêtes à la fois aurait de fortes chances d'y accéder éventuellement à moins que les tentatives de force brute ne soient arrêtées par un autre mécanisme. , telles que la protection intégrée contre la force brute ou les règles de limitation de débit du plug-in Wordfence.

De plus, cette vulnérabilité pourrait être utilisée en conjonction avec une autre vulnérabilité, telle que l'injection SQL, où un attaquant pourrait compromettre les codes de sauvegarde 2FA stockés dans la base de données, puis les utiliser ensuite pour se connecter sans avoir à craquer. le mot de passe d'un utilisateur administratif qui serait probablement beaucoup plus fort. Dans les deux cas, l'impact serait important car un attaquant pourrait obtenir un accès administratif au site WordPress compromis qui pourrait être utilisé pour une infection complète du site.

Un rappel de sécurité important : auditez les comptes d'utilisateurs de votre site WordPress

Cette vulnérabilité sert de rappel important pour auditer les comptes d'utilisateurs de votre site WordPress. Cela signifie identifier tous les comptes d'utilisateurs anciens et inutilisés qui ont été inactifs pendant une période prolongée et/ou sont susceptibles de ne plus jamais être utilisés et de les supprimer ou de supprimer complètement les capacités de l'utilisateur. Cette vulnérabilité pourrait facilement être exploitée sur les sites où le propriétaire du site a activé 2FA, qui est requis pour tous les utilisateurs administratifs et éditeurs, et avait d'anciens comptes d'utilisateurs administratifs/éditeurs inactifs sur le site qu'un attaquant pourrait cibler. Étant donné qu'il est peu probable que les comptes qui ne sont plus actifs se connectent après l'activation du paramètre 2FA, le 2FA pour ces comptes ne serait pas configuré, laissant le site prêt à être exploité par des attaquants exploitant la vulnérabilité.

Une situation impliquant un problème de sécurité similaire impliquant une 2FA non sécurisée a été signalée par la CISA en collaboration avec le FBI il y a quelques semaines, à peu près au même moment où nous avons découvert cette vulnérabilité. Dans l'avis de cybersécurité (CSA) de la CISA, il a été révélé qu'un acteur malveillant était capable de forcer avec succès les informations d'identification d'un compte d'utilisateur dormant, et en raison d'un paramètre 2FA par défaut qui permettrait aux utilisateurs dormants de réinscrire un nouvel appareil pour 2FA lors de la prochaine connexion active, l'auteur de la menace a pu connecter le secret 2FA à son propre compte et récupérer le code nécessaire pour passer le deuxième facteur d'authentification. Une fois que l'acteur de la menace a obtenu un accès initial au système, il a pu augmenter ses privilèges en exploitant la vulnérabilité "PrintNightmare", sur laquelle vous pouvez en savoir plus ici., et voler des informations sensibles sur l'ensemble du réseau de l'organisation. Cela montre que les attaquants recherchent définitivement des failles comme celle divulguée aujourd'hui à exploiter et que n'importe quel site peut être une cible. En tant que tel, il est important de maintenir et de valider activement la sécurité de votre site par le biais d'audits de sécurité et de tests de pénétration professionnels ou auto-réalisés régulièrement, ce qui est un service fourni par Wordfence . La sécurité est un processus actif et continu.

Chronologie

10 mars 2022 – Conclusion de l'analyse du plugin qui a conduit à la découverte de deux vulnérabilités de contournement d'authentification dans le plugin WordPress "SiteGround Security". Nous déployons des règles de pare-feu pour protéger les utilisateurs de Wordfence Premium , Wordfence Care et Wordfence Response . Nous envoyons tous les détails de divulgation à SiteGround conformément à leur politique de divulgation responsable.
11 mars 2022 - Le CTO de SiteGround répond en indiquant qu'un correctif a été publié. Nous examinons le correctif et les informons qu'il est insuffisant. Ils publient un patch supplémentaire.
11 mars 2022 - Une version corrigée du plugin est publiée en tant que version 1.2.3. Nous suggérons d'autres améliorations de sécurité à la fonctionnalité.
16 mars 2022 - Une mise à jour est effectuée qui réduit la sécurité de la fonctionnalité 2FA, nous effectuons un suivi à nouveau pour suggérer de meilleures améliorations de sécurité à la fonctionnalité. Le CTO nous assure qu'ils y travaillent.
6 avril 2022 - Une version entièrement et optimalement corrigée du plugin est publiée en tant que version 1.2.6.
9 avril 2022 - Les utilisateurs de Wordfence Free reçoivent les règles de pare-feu.

Conclusion

Dans l'article d'aujourd'hui, nous avons détaillé une faille dans le plugin "SiteGround Security" qui permettait à des attaquants non authentifiés d'accéder aux comptes d'utilisateurs administratifs dans les cas où l'authentification à 2 facteurs était activée, mais pas encore entièrement configurée, et dans les cas où un attaquant pourrait réussir à forcer brutalement un code de secours. Cela pourrait facilement être utilisé par un attaquant pour compromettre complètement un site. Cette faille a été entièrement corrigée dans la version 1.2.6.

Nous vous recommandons fortement de vous assurer que votre site a été mis à jour avec la dernière version corrigée de "SiteGround Security", qui est la version 1.2.6 au moment de cette publication.

Wordfence Premium , Wordfence Care et Wordfence Response ont reçu un ensemble de règles de pare-feu le 10 mars 2022 pour fournir une protection contre les tentatives d'attaquants d'exploiter cette vulnérabilité. Les utilisateurs de Wordfence Free recevront cette même protection 30 jours plus tard, le 9 avril 2022

Si vous pensez que votre site a été compromis à cause de cette vulnérabilité ou de toute autre vulnérabilité, nous proposons des services de réponse aux incidents via Wordfence Care . Si vous avez besoin que votre site soit nettoyé immédiatement, Wordfence Response offre le même service avec une disponibilité 24/7/365 et un temps de réponse d'une heure. Wordfence Care et Wordfence Response incluent un support de sécurité pratique qui vous fournit une assistance continue de notre équipe de réponse aux incidents, si vous en avez besoin.

Un merci spécial à l'équipe de SiteGround, pour avoir répondu rapidement et travaillé rapidement pour obtenir un correctif pour protéger leurs clients et pour sécuriser davantage le composant 2FA.