In che modo l'utilizzo di una password MySQL dalla riga di comando non è sicuro?


12

Ho alcuni strumenti BASH che usano la mysql -e "{command}"funzione. Inserire la password ogni volta che utilizzo questi strumenti sarebbe una seccatura, quindi, per evitare di avere la password scritta in un file di testo in chiaro con il codice, la conservo in memoria (usando read -s) e faccio leggere a BASH ogni volta che esegue i comandi.

Mysql pensa ancora che la password venga inviata tramite la riga di comando (perché, per così dire, lo è) e mi dà ancora l'errore "L'uso di una password nell'interfaccia della riga di comando può essere insicuro".

Per i miei scopi, non ho bisogno di sopprimere questo messaggio. Quello che devo sapere è, che cosa potrebbe renderlo insicuro? La password non è mai fisicamente visibile, quindi il surf in spalla non potrebbe farlo e nemmeno qualcuno che ha indovinato la mia password SSH non sarebbe in grado di farlo poiché è memorizzato nella memoria piuttosto che negli script stessi. È possibile un attacco man-in-the-middle o qualcosa di simile?


8
Metterlo in ~/.my.cnf Esempio È possibile specificare per ogni host facendo [client<hostname>]ad esempio [clientlocalhost]MySQL strumenti utilizzerà automaticamente così è più facile e più sicuro
AmazingDreams

Come l'hai bashletto quando esegui il comando? Se lo fai, mysql -p"$pass"allora chiunque può vederlo ps.
Barmar,

Risposte:


26

Chiunque può vedere le variabili di ambiente (inclusi i programmi eseguiti) può vedere la password. E chiunque sia in grado di visualizzare i processi può vedere la riga di comando utilizzata per eseguirli, inclusi i parametri.

Quindi, per un box a cui accedi solo tu, il rischio è probabilmente insignificante. Ma per un attacco mirato a te personalmente, questo è un banale vettore di attacco nel grande schema delle cose.


22
Così come qualcuno che sta visualizzando il tuo ~/.history, ecc.
Ivanivan,

Per non parlare di HTOP e di utilità simili simili prima che fossero mascherate. Molti script inoltre non utilizzavano variabili ambientali $ PASS ecc. Sulla base del fatto che l'utente era di sola lettura o mancava delle autorizzazioni. Su un singolo utente autonomo potrebbe non sembrare importante.
mckenzm,

1
Dove dice la domanda qualcosa sulle variabili d'ambiente? Le variabili della shell non vengono inserite nell'ambiente se non vengono esportate.
Barmar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.