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'));
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