環境変数は、Linux上の非特権ユーザーに表示されますか?


12

Linuxでは、プロセスの環境変数が他の(root以外の)ユーザーによって観察可能かどうかを判断しようとしています。

差し迫ったユースケースは、環境変数に秘密を入れることです。これはウェブ全体の多くの場所で安全ではないと議論されていますが、Linuxの正確な露出ポイントに焦点を合わせることができませんでした。

私は平文の秘密をファイルに入れることについて話していないことに注意してください。また、ルートアカウントへの露出について話していないことに注意してください(私は、ルートを非スターターとして攻撃者から秘密を隠そうと試みていると考えています)。

この質問は、環境変数を完全にセキュリティなし、または単に難読化されていると分類するコメントで、私の質問に対処しているように見えますが、どのようにアクセスしますか?

私のテストでは、1人の非特権ユーザーがプロセステーブル(「ps auxwwe」)を介して別のユーザーの環境変数を監視できません。環境変数を設定するコマンド(例:エクスポート)は、プロセステーブルに追加されないシェル組み込みコマンドであり、拡張により/ proc / $ pid / cmdlineにはありません。/ proc / $ pid / environは、プロセス所有者のUIDによってのみ読み取り可能です。

おそらく、混乱は異なるオペレーティングシステムまたはバージョン間のものです。Web上のさまざまな(最近の)ソースは環境変数の安全性を非難していますが、異なるLinuxバージョンのスポットチェックは、少なくとも2007年まで遡ってこれが不可能であることを示しているようですテストする手)。

Linuxでは、非特権ユーザーは他のプロセスの環境変数をどのように監視できますか?

回答:


7

Gilles がsecurity.stackexchange.comの同様の質問に対する非常に包括的な回答で説明したように、プロセス環境はプロセスを所有するユーザー(およびもちろんルート)のみがアクセスできます。


あなたが意図した投稿へのリンクはありますか?
cyc115

@ cyc115「答え」という言葉をクリックしてください:)
guntbert

6

環境変数は十分に安全です。あなたがリンクした質問は、システムが危険にさらされた場合、構成ファイルよりも環境変数を使用することの唯一のセキュリティ上の利点は不明瞭であるということです。つまり、誰かがルートアクセスを取得した場合、両方にアクセスできるということです。
秘密データに環境変数を使用することが「あいまい」と見なされるかどうかも議論の余地があります。これは非常に一般的な方法であるため、そのようなことは考えません。

環境変数に保存されているデータにアクセスできるのは2か所のみです。

1.プロセスの実行環境

プロセスが実行されている場合、そのプロセスの環境変数は次の方法でアクセスできます。 /proc/$PID/environ。ただし、プロセスを所有するユーザーまたはルートのみがそのファイルにアクセスできます。

2.環境変数のソース

initスクリプトを使用していて、変数がそのinitスクリプトに保存されている場合、もちろんそのスクリプトを読み取ることで変数を取得できます。

または、環境変数がどこか別の場所から来ている場合は、どこにいてもです。

3.「ps」出力

ええ、私が2と言ったのは知っています。まともなシステムでは2になります。しかし、管理者が彼が何をしているのかわからない場合は、3番街を開くことができます。

プロセスがなどの方法で起動された場合、sh -c 'cd /foo/bar; POP=tart /my/executable'そのshプロセスは次の場所に表示されpsます。

$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085

$ ps ax | grep POP
phemmer   3085  14   5  0.0  0.0 SN         00:00 sh -c cd /; POP=tart sleep 10

1
e修飾子もに記載する必要がありpsます。また、ユーザーが所有するプロセスの環境のみを表示できます。
バーマー14

1
考えられるもう1つの場所:環境変数がシェルを介して設定さexport FOO=barれた~/.bash_history場合(例:)、ユーザーが保存しないようにしたり削除したりするための予防措置を講じなかった場合、履歴ファイル(例:)にも表示されます。
tavnab 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.