CraftMyWebsite/CMW

FAILLE CRITIQUE : Le Token de réinitialisation de mot de passe est devinable

Closed this issue · 2 comments

Bonjour, en explorant le code de ce CMS, j'ai été surpris de voir que dans le fichier "changeMdpMail.php" le token est encrypté assez facilement, ce qui permet facilement à des personnes malveillantes de deviner le token, ce qui peut permettre à la personne de prendre la main sur le compte de n'importe quel utilisateur.

Je propose une solution ci-dessous:

A l'installation du CMS une clé aléatoire est générée dans le fichier de configuration de base.

Cette clé permettra au cryptage des token en SHA256 avec cette clé !

Cela évitera ce genre de soucis

Passer une bonne journée

  • Shine

Pas forcément besoin d'implémenter une APP_KEY même si cela serait bien effectivement...

On peut changer le md5 par du random_bytes.

Exemple : bin2hex(random_bytes($length ?? 20));

Petit exemple de Laravel Fortify :
hash_hmac($algo ?? 'sha256', Str::random($length ?? 40), $this->hashKey ?? config('app.key'));

Teyir commented

Donc pour faire simple

J'ai changé la méthode de génération du token.

C'est full débile mais ça fonctionne pour être débile.

La meilleur méthode aurait été d'avoir un UUID à l'installation (stocké dans un env) mais notre cas c'est useless au vu de la version 2.0 qui va vite arriver !

Bonne soirée et merci d'avoir remonté ce petit soucis