W jaki sposób używanie hasła MySQL z wiersza poleceń jest niebezpieczne?


12

Mam kilka narzędzi BASH, które używają tej mysql -e "{command}"funkcji. Wprowadzanie hasła za każdym razem, gdy korzystam z tych narzędzi, byłoby uciążliwe, więc aby uniknąć zapisywania hasła w pliku tekstowym z kodem, przechowuję je w pamięci (używam read -s) i BASH czyta je za każdym razem, gdy uruchamia polecenia.

Mysql nadal uważa, że ​​hasło jest przesyłane za pośrednictwem wiersza poleceń (ponieważ w pewnym sensie tak jest) i nadal wyświetla błąd „Używanie hasła w interfejsie wiersza poleceń może być niepewne”.

Dla moich celów nie muszę ukrywać tej wiadomości. Muszę wiedzieć, co może sprawić, że poczujesz się niepewnie? Hasło nigdy nie jest fizycznie widoczne, więc surfowanie po ramionach nie mogło tego zrobić, a nawet ktoś, kto odgadł moje hasło SSH, nie byłby w stanie tego zrobić, ponieważ jest ono przechowywane w pamięci, a nie w samych skryptach. Czy możliwy jest atak typu man-in-the-middle czy coś podobnego?


8
Umieścić go w ~/.my.cnf przykładzie można określić za gospodarz wykonując [client<hostname>]np [clientlocalhost]MySQL narzędzi użyje go automatycznie, dzięki czemu łatwiej i bezpieczniej
AmazingDreams

Jak go bashprzeczytałeś po uruchomieniu polecenia? Jeśli to zrobisz, mysql -p"$pass"każdy może to zobaczyć ps.
Barmar

Odpowiedzi:


26

Każdy, kto widzi Twoje zmienne środowiskowe (w tym uruchamiane przez Ciebie programy), może zobaczyć hasło. I każdy, kto może przeglądać twoje procesy, może zobaczyć wiersz poleceń użyty do ich uruchomienia, w tym parametry.

Tak więc w przypadku skrzynki, do której logujesz się wyłącznie, ryzyko jest prawdopodobnie niewielkie. Ale w przypadku ukierunkowanego ataku na ciebie jest to trywialny wektor ataku w wielkim schemacie rzeczy.


22
Jak również ktoś oglądający twoje ~/.historyitp.
ivanivan

Nie wspominając już o HTOP i podobnych najlepszych narzędziach, zanim zostały zamaskowane. Wiele skryptów również nie używało zmiennych środowiskowych $ PASS itp., Ponieważ użytkownik był tylko do odczytu lub nie miał uprawnień. W przypadku pojedynczego użytkownika może to nie mieć znaczenia.
mckenzm

1
Gdzie pytanie mówi coś o zmiennych środowiskowych? Zmienne powłoki nie są umieszczane w środowisku, chyba że zostaną wyeksportowane.
Barmar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.