psはパスワードを隠すことをどのように知っていますか?


22

証人:

$ ps f
  PID TTY      STAT   TIME COMMAND
31509 pts/3    Ss     0:01 -bash
27266 pts/3    S+     0:00  \_ mysql -uroot -p
25210 pts/10   Ss+    0:00 /bin/bash
24444 pts/4    Ss     0:00 -bash
29111 pts/4    S+     0:00  \_ tmux attach
 4833 pts/5    Ss+    0:00 -bash
 9046 pts/6    Ss     0:00 -bash
17749 pts/6    R+     0:00  \_ ps f
 4748 pts/0    Ss     0:00 -bash
14635 pts/0    T      0:02  \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0    S+     0:01  \_ mysql -uroot -px xxxxxxxxxxxxxxxx

psはどのようにしてmysqlパスワードを隠すことを知りましたか?これを自分のスクリプトに組み込んで、特定のCLI属性を隠すことはできますか?


6
それはおそらく、他の方法であり、mysql魔法、しませんps:「MySQLクライアントは、典型的には、その初期化シーケンス中にゼロで、コマンドラインのパスワード引数を上書きします。」 - エンドユーザのパスワードのセキュリティのためのガイドライン
manatwork

ありがとう、それは有益な文書です。自分のスクリプトでcli引数を上書きする方法について説明します。
-dotancohen

1
@manatwork私はそれを答えとして置きます、なぜならそれはまさに起こっていることです-そしてそれはmysqlに関するセキュリティ問題の有用なリンクです。:)
Drav Sloan

コマンドライン引数はスヌーピングできますが、環境変数は安全です。
ジル 'SO-悪であるのをやめる'

回答:


23

psパスワードを隠しません。mysqlのようなアプリケーションは、取得した引数リストを上書きします。引数が上書きされるまで他のアプリケーションから見えるようになっている短い時間枠(高いシステム負荷によって拡張可能)があることに注意してください。他のユーザーにプロセス非表示にすることは役立ちます。一般に、コマンドラインごとよりもファイルを介してパスワードを渡す方がはるかに優れています。

、この記事には、これを行う方法を、Cに記載されています。次の例では、すべてのコマンドライン引数を非表示/削除します。

#include <string.h>

int main(int argc, char **argv)
{
    // process command line arguments....

    // hide command line arguments
    if (argc > 1) {
        char *arg_end;    
        arg_end = argv[argc-1] + strlen (argv[argc-1]);
        *arg_end = ' ';
    }

    // ...
}

/programming/724582/hide-arguments-from-psおよび/programming/3830823/hiding-secret-from-command-line-parameter-on-unixご覧ください


とても素敵です、ありがとう。私は、議論がそのように可変であることを理解していませんでした。
-dotancohen

また、すべてのプログラムがパスワードでこれを行うわけではないことに注意してください。

この記事へのリンクは壊れています。私のためのコードを説明するための誰ですか?(なぜコード作業、ちょうど設定し\0た空間に?)任意のリンクにsetproctitle()
schemacs 14年

それとも答えはここにありますか?
schemacs 14年

7

MySQLのプログラムが使用してコマンドラインからパスワードを置き換えxのコード行

while (*argument) *argument++= 'x';     // Destroy argument

3
残念ながら、それは可能な限り安全ではありません。パスワードの長さを確認できます。これはと交換する方が良いでしょう\0あなたは(UB /セグメンテーションフォルトなし)パスワードの長さを見つけるために、追加の情報を必要とするように。
wizzwizz4
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.