データ漏えい対策コマンドラインからの情報漏えい対策Unix系およびGNU/Linux系のプラットフォームにおいては、秘密保持が必要なパラメータをコマンドライン引数を通じてプログラムに渡すことを避けた方がよい。これらのプラットフォームには、システム内で動作中のプロセスの情報を誰でも調べることのできるpsコマンドが備わっているからである。psコマンドUnix系およびGNU/Linux系のプラットフォームには、システム内で現在動作中のプロセスの情報を収集するpsコマンドが備わっている。/etc/X11/xinit/Xclients$上記の例は、実行中のプロセスの次の情報を表示している。等これまでに消費したCPU時間(TIME)プロセスを起動したときのコマンドライン(COMMAND)このほかにもpsコマンドは、プロセスの動作状況に関する諸情報を数十種類表示する機能をもっている。このようなことから、例えば、次のような必要が生じたときにはpsコマンドで情報を収集し、コンピュータ運用に役立てることができる。実行時間が異常に長いプロセスの特定CPUやメモリ等のリソース占有率が異常に大きいプロセスの特定、等また、psコマンドは一般ユーザに使用が解放されており、そのコンピュータにログインできる人物であれば誰でも使えるコマンドである。psコマンドがもたらす問題psコマンドは便利ゆえに一部に情報漏えいの心配がある。それは、他のアカウントが所有しているプロセスであっても、起動時のコマンドライン文字列を表示してしまうことである。プログラムを起動する際、コマンドライン引数にパラメータを指定することがしばしば行われる。これらの引数は、そのプロセスがシステム内に存在している間であればpsコマンドによって収集され、そのシステムにログイン可能なユーザすべての目に触れる可能性がある。したがって、次のようなデータをコマンドライン引数で受け渡すことは避けたほうがよい。コマンドライン引数の暴露コマンドライン引数の対策プロセス起動時のコマンドライン引数がpsコマンドによって盗み見られる問題への対策として次のものが考えられる。コマンドラインを用いないパラメータ受渡し可能なら、プロセスへのパラメータをコマンドライン引数で渡すのではなく、パイプやテンポラリファイルを通じて渡すようにする。その際、パラメータの受渡しに使うテンポラリファイルへの部外者のアクセスを防ぐ工夫をする。コマンドライン引数の暗号化プロセスへのパラメータをコマンドライン引数で渡さざるを得ない場合、値を平文で渡すのではなく、暗号化して渡す。その際、弱い暗号アルゴリズムの使用を避け、暗号鍵の保護に留意する。可能なら、一般ユーザのpsコマンドの使用を制限する。psコマンドのファイルのアクセスパーミッションの設定を厳しくし、psコマンドの使用をrootや管理者グループのみに許すようにする。psコマンドに制限をかけることのみをこの問題への対策とすることは推奨できない。補強する手段として用いるべきである。まとめUnix、GNU/Linuxに備わっているpsコマンドは、他人が所有するプロセスのコマンドライン引数の閲覧を可能にする。重要なパラメータをコマンドライン引数で受け渡さない工夫およびコマンドライン引数を覗き見られても支障が起きないようにする工夫が必要である。