Le 5 juin 2023, notre équipe Wordfence Threat Intelligence a identifié et lancé le processus de divulgation responsable d’une vulnérabilité de changement de mot de passe utilisateur arbitraire dans Plug-in LearnDash LMS, un plugin WordPress activement installé sur plus de 100 000 sites WordPress selon nos estimations. Cette vulnérabilité permet à tout utilisateur authentifié de réinitialiser des mots de passe utilisateur arbitraires, y compris des comptes d’utilisateurs avec un accès de niveau administratif.

Wordfence Premium, Soins des motset Réponse Wordfence les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 5 juin 2023. Les sites utilisant encore la version gratuite de Wordfence recevront la même protection le 5 juillet 2023.

Nous avons contacté l’équipe LearnDash le 5 juin 2023 et avons reçu une réponse le jour même. Après avoir fourni tous les détails de la divulgation, le développeur a publié un correctif le 6 juin 2023. Nous tenons à féliciter l’équipe de support et de développement de LearnDash pour sa réponse rapide et son correctif opportun, qui a été publié en une seule journée.

Nous exhortons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de LearnDash LMS, la version 4.6.0.1 au moment de la rédaction de cet article, dès que possible étant donné qu’il s’agit d’une vulnérabilité ayant un impact critique.

Résumé des vulnérabilités de Wordfence Intelligence

Le plugin LearnDash LMS pour WordPress est vulnérable aux références d’objets directes non sécurisées dans les versions jusqu’à 4.6.0 incluses. Cela est dû au plugin fournissant un accès contrôlé par l’utilisateur aux objets, permettant à un utilisateur de contourner l’autorisation et d’accéder aux ressources système. Cela permet aux attaquants authentifiés avec des privilèges d’abonné ou supérieurs, de modifier les mots de passe des utilisateurs et potentiellement de prendre le contrôle des comptes d’administrateur.

Analyse technique

Le plugin LearnDash LMS fournit le shortcode ‘[ld_reset_password]‘ pour intégrer un formulaire de réinitialisation de mot de passe dans une page d’un site WordPress. Le formulaire permet aux utilisateurs de soumettre leur nom d’utilisateur ou leur adresse e-mail pour recevoir un e-mail avec un lien de réinitialisation du mot de passe contenant une clé d’activation de l’utilisateur.

L’examen du code révèle que le plugin vérifie que la clé d’activation de l’utilisateur appartient à l’utilisateur donné avec le learndash_reset_password_verification() fonction uniquement lors de l’affichage du nouveau formulaire de mot de passe, où le nouveau mot de passe peut être saisi.

if ( isset( $_GET['action'] ) && 'rp' === $_GET['action'] ) {
	$key        = ( isset( $_GET['key'] ) ? sanitize_text_field( wp_unslash( $_GET['key'] ) ) : '' );
	$user       = ( isset( $_GET['login'] ) ? get_user_by( 'login', sanitize_text_field( wp_unslash( $_GET['login'] ) ) ) : '' );
	$key_verify = learndash_reset_password_verification( $user, $key );
	if ( 'WP_Error' === get_class( $key_verify ) ) {
		$status['message'] = esc_html__( 'Invalid key, please check your reset password link and try again.', 'learndash' );
		$status['type']    = 'warning';
		$status['action']  = 'prevent_reset';
	}
}

Vérification de la clé à l’action ‘rp’

if ( isset( $_GET['action'] ) && 'rp' === $_GET['action'] && ! isset( $status ) ) {
	?>
	<form action="" method="POST">

Afficher le formulaire ‘rp’ si le statut n’est pas une erreur

Cependant, il n’y a pas de vérification de la clé d’activation de l’utilisateur lors du traitement de ce formulaire. Cela permet à tout utilisateur authentifié ayant accédé au formulaire de réinitialisation du mot de passe via le lien envoyé dans l’email de modifier le mot de passe d’un autre utilisateur en changeant la valeur du champ de saisie masqué du nom d’utilisateur.

if (
	isset( $_POST['user_login'] )
	&& isset( $_POST['reset_password'] )
	&& ! empty( $_POST['learndash-reset-password-form-post-nonce'] )
	&& wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['learndash-reset-password-form-post-nonce'] ) ), 'learndash-reset-password-form-post-nonce' )
) {
	$new_password = sanitize_text_field( wp_unslash( $_POST['reset_password'] ) );
	$user         = get_user_by( 'login', sanitize_text_field( wp_unslash( $_POST['user_login'] ) ) );
	learndash_reset_password_set_user_new_password( $user, $new_password );
}

Traitement du formulaire de définition du nouveau mot de passe

Comme pour tout changement de mot de passe utilisateur arbitraire qui conduit à une vulnérabilité d’escalade de privilèges, cela peut être utilisé pour compromettre complètement le site. Une fois qu’un attaquant a obtenu un accès utilisateur administratif à un site WordPress, il peut alors manipuler n’importe quoi sur le site ciblé comme le ferait un administrateur normal. Cela inclut la possibilité de télécharger des fichiers de plug-in et de thème, qui peuvent être des fichiers zip malveillants contenant des portes dérobées, et de modifier des publications et des pages qui peuvent être exploitées pour rediriger les utilisateurs du site vers d’autres sites malveillants.

Calendrier de divulgation

5 juin 2023 – Découverte de la vulnérabilité Arbitrary User Password Change dans LearnDash LMS.
5 juin 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.
5 juin 2023 – Le fournisseur confirme la boîte de réception pour le traitement de la discussion.
5 juin 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
5 juin 2023 – Les utilisateurs de Wordfence Premium, Care et Response reçoivent une règle de pare-feu pour assurer une protection contre tout exploit susceptible de cibler cette vulnérabilité.
6 juin 2023 – Une version entièrement corrigée du plugin, 4.6.0.1, est publiée.
5 juillet 2023 – Les utilisateurs de Wordfence Free bénéficient de la même protection.

Conclusion

Dans cet article de blog, nous avons détaillé une vulnérabilité de changement de mot de passe utilisateur arbitraire dans le Plug-in LearnDash LMS affectant les versions 4.6.0 et antérieures. Cette vulnérabilité permet aux pirates de prendre facilement le contrôle de sites Web en réinitialisant le mot de passe de n’importe quel utilisateur, y compris les administrateurs. La vulnérabilité a été entièrement corrigée dans la version 4.6.0.1 du plugin.

Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de LearnDash LMS.

Wordfence Premium, Soins des motset Réponse Wordfence les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 5 juin 2023. Les sites utilisant encore la version gratuite de Wordfence recevront la même protection le 5 juillet 2023.

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é qui cherchent à divulguer des vulnérabilités de manière responsable et à obtenir un ID CVE, vous pouvez soumettez vos découvertes à Wordfence Intelligence et potentiellement gagner une place sur notre classement.


Source link