How to hide a password from ps, if it's given to a process via script or command line

So I have a certain program, which is running almost 24/7.

I have a start script I've written in bash which simply does:

./app --user XXX --pass YYY

There are a few more options, but they are irrelevant to this question.

Once run, the pass will always show in ps for other users and I'm assuming in other places too. How do I prevent this from happening? The application cannot be modified, the only option I have is to do it while passing the password somehow.

It's also very important that the application is started via a script as I am automating its startup and shutdown on several machines. Inputting it manually every time is not really an option.

However I do not need it to be unreadable in the bash script itself. It's okay if it's in plain text there, I only need it secured in places where other users might be able to check running processes, such as ps

0
задан 22 December 2017 в 00:01
1 ответ

Безопасное решение - передать пароль другим способом, кроме параметра командной строки. Два наиболее распространенных способа сделать это - использовать переменную окружения или заставить программу читать ее из файла.

Каждый из них может потребовать изменений в самой программе, если она еще не поддерживает эти методы.

Другой подход что менее безопасно (но все же лучше, чем то, что у вас есть сейчас) заключается в том, что программа копирует пароль из командной строки в другое место в памяти, а затем стирает то место в памяти, где хранится командная строка.

Этот подход менее безопасен, потому что он все еще будет виден на короткое время во время запуска программы. Некоторые программы уже делают это, но если программа еще этого не делает, для этого потребуется изменить программу.

1
ответ дан 4 December 2019 в 16:03

Теги

Похожие вопросы