Comment l'utilisation d'un mot de passe MySQL à partir de la ligne de commande n'est-elle pas sûre?

12

J'ai quelques outils BASH qui utilisent la mysql -e "{command}"fonction. Entrer le mot de passe chaque fois que j'utilise ces outils serait une douleur, donc, pour éviter d'avoir le mot de passe écrit dans un fichier en clair avec le code, je le stocke en mémoire (en utilisant read -s) et demande à BASH de le lire chaque fois qu'il exécute les commandes.

Mysql pense toujours que le mot de passe est soumis via la ligne de commande (parce que, en quelque sorte, il l'est), et me donne toujours l'erreur "L'utilisation d'un mot de passe sur l'interface de ligne de commande peut être peu sûre."

Pour mes besoins, je n'ai pas besoin de supprimer ce message. Ce que j'ai besoin de savoir, qu'est-ce qui pourrait le rendre précaire? Le mot de passe n'est jamais physiquement visible, donc le surf sur l'épaule ne pouvait pas le faire et même quelqu'un qui a deviné mon mot de passe SSH ne pourrait pas le faire car il est stocké dans la mémoire plutôt que dans les scripts eux-mêmes. Une attaque de l'homme du milieu ou quelque chose de similaire est-elle possible?

Andrew
la source
8
Mettez-le dans l' ~/.my.cnf exemple Vous pouvez spécifier par hôte en faisant par [client<hostname>]exemple, les [clientlocalhost]outils MySQL l'utiliseront automatiquement afin qu'il soit plus facile et plus sûr
AmazingDreams
Comment l'avez-vous bashlu lorsque vous exécutez la commande? Si vous le faites, mysql -p"$pass"n'importe qui peut le voir ps.
Barmar

Réponses:

26

Quiconque peut voir vos variables d'environnement (y compris les programmes que vous exécutez) peut voir le mot de passe. Et toute personne qui peut visualiser vos processus peut voir la ligne de commande utilisée pour les exécuter, y compris les paramètres.

Donc, pour une boîte à laquelle vous vous connectez uniquement, le risque est probablement insignifiant. Mais pour une attaque ciblée contre vous personnellement, il s'agit d'un vecteur d'attaque trivial dans le grand schéma des choses.

long cou
la source
22
Ainsi que quelqu'un qui regarde votre ~/.history, etc.
ivanivan
Sans parler de HTOP et des utilitaires similaires de type supérieur avant qu'ils ne soient masqués. De nombreux scripts n'utilisaient pas non plus de variables d'environnement $ PASS, etc. au motif que l'utilisateur était en lecture seule ou n'avait pas d'autorisations. Sur un seul utilisateur autonome, cela peut ne pas sembler avoir d'importance.
mckenzm
1
Où la question dit-elle quelque chose sur les variables d'environnement? Les variables shell ne sont pas placées dans l'environnement sauf si vous les exportez.
Barmar