Depuis très longtemps, WordPress a la fonctionnalité permettant à un utilisateur de demander un nouveau mot de passe. Cette fonctionnalité contient en fait une vulnérabilité qui pourrait permettre à un attaquant d’obtenir le lien pour remettre à zéro un mot de passe sans être authentifié.
Ce genre d’attaque peut mener à un accès non autorisé du compte WordPress de la victime.
La vulnérabilité
Par défaut, WordPress utilise une donnée non certifiée pour créer le lien de la remise à zéro. Il est supposé n’être envoyé qu’à l’adresse du propriétaire du compte.
Si l’entête From n’est pas présente, WordPress se servira alors d’une information serveur. Voyez wp-includes/pluggable.php
[pastacode lang=”php” manual=”%0Aif%20(%20!isset(%20%24from_email%20)%20)%20%7B%0A%2F%2F%20Get%20the%20site%20domain%20and%20get%20rid%20of%20www.%0A%24sitename%20%3D%20strtolower(%20%24_SERVER%5B’SERVER_NAME’%5D%20)%3B%0Aif%20(%20substr(%20%24sitename%2C%200%2C%204%20)%20%3D%3D%20’www.’%20)%20%7B%0A%24sitename%20%3D%20substr(%20%24sitename%2C%204%20)%3B%0A%7D%0A%0A%24from_email%20%3D%20’wordpress%40’%20.%20%24sitename%3B%0A%7D” message=”wp-includes/pluggable.php” highlight=”” provider=”manual”/]
Un attaquant peut utiliser la variable SERVER_NAME
pour tromper WordPress, ceci peut permettre à un attaquant d’intercerpter l’email contenant le lien de la remise à zéro du mot de passe.
Note DREAD Score
- Damage – à quel point l’attaque peut nuire ?
- 3/5: Une fois le mot de passe de l’admin récupéré, l’attaquant aura accès à l’administration, mais pas aux fichiers/ftp ou serveur.
- Reproducibility – Est-il facile de reproduire l’attaque ?
- 0/5: Très très difficile, cela dépends de beaucoup de paramètres, du serveur de mails etc
- Exploitability – Quel travail faut-il fournir pour lancer l’attaque ?
- 1/5: Vraiment beaucoup de travail et de chance.
- Affected users – Combien de personne seraient impactées ?
- 4/5: Tous les utilisateurs et clients, mais pas les visiteurs directement.
- Discoverability – Est-il simple de découvrir la vulnérabilité ?
- 2/5: Si vous tournez sous WordPress 4.7.4 ou moins, c’est tout.
- DREAD score final
- 2 – Bas
Et la protection?
Habituellement, quand une vulnérabilité WordPress est découverte, le consultant en sécurité ne dévoile pas la faille tant qu’un patch n’as pas été diffusé, plus une semaine. Mais … Dawid Golunski (@dawid_golunski) a déjà rapporté ce problème auprès de l’équipe sécurité de WordPress plusieurs fois, et la première fois remonte à juillet 2016. Donc il est temps de la divulguer.
Czar Aaron Campbell de l’équipe de sécurité WordPress connait cette faille et aussi son score DREAD. C’est pour cela qu’elle n’a pas été prioriser. Il ajoute qu’il faut un serveur vraiment mal configuré pour exploiter, même ses essais en local n’ont pas aboutis.
De plus, il faudrait au moins qu’une de ces actions soient réalisées :
- Un utilisateur répond à un courrier de remise à zéro,
- Une réponse automatique répond en incluant le message d’origine,
- Le serveur email a été compromis et le message est retourné à l’envoyeur avec le contenu intact
Mini Plugin
Il ne vous suffit que de quelques lignes de code ajoutées dans un mu-plugin par exemple pour vous protéger. Retrouvez le code sur Boiteaweb : WordPress 4.7.4 : patchez votre version en 2 lignes de code.
Aussi, la vulnérabilité n’étant pas simple à exploiter, ne stressez pas trop tout de même.