web-dev-qa-db-fra.com

Drains de mot de passe côté client avec du sel statique - ai-je trouvé une violation?

J'ai téléchargé un logiciel qui possède une interface de connexion. C'est un logiciel d'abonnement de 100 $ par mois.

J'ai démonté le logiciel et j'ai constaté que les mots de passe sont envoyés en les combinant avec un "sel" codé dur que tout le monde peut voir dans le code source (est-ce vraiment "sel" si c'est la même chose pour tout le monde?), Les hachage avec MD5 et Envoi du hachage au serveur.

I espoir que les mots de passe sont à nouveau hachés sur le côté serveur avec des sels uniques pour chaque utilisateur, mais même s'ils le font, n'est-ce pas une violation? Vous ne pouvez pas vous attaquer facilement les mots de passe ou faire une attaque de hachage d'envoi?

9
asaf92

Ça dépend. Il n'y a pas assez d'informations dans votre question pour donner des réponses spécifiques et probablement sans connaître le côté serveur, il sera difficile d'évaluer.

n'est-ce pas une violation?

Je ne l'appellerais pas encore une violation, car il suffit de connaître le fait que le client a atteint le mot de passe ne révèle aucune information sensible à ce sujet ou d'autres comptes.

Impossible qu'un attaquant renifler facilement les mots de passe ou faire une attaque de hachage envoie?

Si un attaquant peut renifler la communication entre le client et le serveur, il ne fait aucune différence, mais le mot de passe d'origine est envoyé ou une version de hachage de celui-ci. Dans les deux cas, l'attaquant a les informations d'identification nécessaires. La seule chose qui pourrait les arrêter maintenant serait une authentification à deux facteurs.

La meilleure chose à faire à nouveau renifler est d'appliquer HTTPS pour la communication.

Est-ce vraiment "sel" si c'est la même chose pour tout le monde?

Non, A sel est des données aléatoires ajoutées à une fonction de hachage à sens unique pour protéger les mots de passe de Sauvegarde dans le stockage. Un sel doit être aléatoire et être unique pour chaque mot de passe et doit être suffisamment long pour protéger à nouveau la création de tables arc-en-ciel avec toutes les combinaisons de sel possibles.

Ce n'est pas non plus un poivre , car un poivron doit être secret.

Pourquoi voudriez-vous avoir un mot de passe du client en premier lieu ?

Haçage Un mot de passe du côté client avant de le soumettre au serveur transforme simplement le hachage résultant dans le nouveau mot de passe. Bien qu'il ne fournisse aucune sécurité supplémentaire pendant le processus d'authentification, il protège le mot de passe de l'utilisateur en général (surtout s'ils l'utilisent ailleurs également): le mot de passe texte clair n'est jamais transmis ni traité par le serveur. Si le serveur (contraste avec la base de données) est jamais compromis, il sera plus difficile d'extraire le mot de passe d'origine.

PS: hachage Quelque chose avec une fonction de hachage comme MD5 ou SHA est différent de crypter quelque chose. Les données cryptées peuvent être déchiffrées, des données hachées, cependant, ne peuvent pas être restaurées car un hachage est une fonction à sens unique.

18
phisch
  • en déduire que le canal de communication entre le client et le serveur est sécurisé (comme un tunnel TLS configuré bien configuré), Envoi d'un mot de passe mutilé ou du mot de passe en texte brut n'a aucun avantage ni perte directe au mécanisme d'authentification. Les deux sont sensibles aux attaques de replay, c'est juste que dans un cas, vous rejouez le mot de passe, dans l'autre, vous rejouez le mot de passe transformé. Ce n'est pas en soi une vulnérabilité.

  • si, cependant, la connexion n'est pas sécurisée (c.-à-d. Plaintext) puis le mangling le mot de passe avec un salon fixe et un hachage MD5 est un mauvais moyen de protéger les données sensibles, en plus d'être également susceptible d'être des attaques. Ceci est une vulnérabilité.

9
Pedro