web-dev-qa-db-ja.com

「AcceptEnv *」が安全でないと見なされるのはなぜですか?

/etc/ssh/sshd_configAcceptEnvというオプションがあり、sshクライアントが環境変数を送信できるようにします。多数の環境変数を送信できるようにする必要があります。これらはクライアントからのすべての接続で変更されるため、サーバー上のログインスクリプトに配置するのはより困難です。

読みました"AcceptEnv *"は安全ではありません。そこに配置するように設定されようとしているすべての環境変数のリストを取得する前に、その理由を理解したいと思います。

なぜ安全でないと考えられているのですか?例はありますか?

12
TheDauthi

環境処理を有効にすると、ユーザーは、LD_PRELOADなどのメカニズムを使用して、一部の構成でアクセス制限を回避できる場合があります。

Sshd_configのmanページのすべてのバージョンでこれについて言及しているわけではありません。環境変数を事前に変更し、これによって指定された新しいライブラリを使用して特定の特権プロセスを実行すると、問題が発生する可能性があります。

http://www.dankalia.com/tutor/01005/0100501004.htm を見て、「LD_PRELOAD Exploit」を検索してください。このページにはアンカーリンクがありません。

このStackOverflowの質問も参照してください、「 LD_PRELOADトリックとは

接続後の環境変数の設定は問題ありませんが、それらの変数がAcceptEnvによって設定されたsshデーモンによって解釈されると、悪いことが発生する可能性があります。

11
Jeff Ferland

環境変数を受け入れないでください:

最近出てきた Shellshockエクスプロイト を参照してください。環境変数を受け入れると、本当に厄介なエクスプロイトが開かれます。

0
John Hunt