間違ったプログラムを実行する可能性があります。誰かがあなたに彼らのプログラムを実行させることができます。
-execdirアクションが見つかったファイル(複数可)を含むディレクトリからあなたのコマンドを実行します。とき$PATHのような相対パス、含まれている.かで始まらないものを/、-execdirファイルが見つかったディレクトリ(または別のディレクトリには、それに関連した解決された)ので、安全ではまた、あなたがしようとしているものと同じ名前の実行可能ファイルを含むことができ、走る。信頼できない可能性のある実行可能ファイルは、代わりに実行されます。
これは別のユーザーによって意図的に悪用され、実行しようとしているプログラムの代わりに、プログラムを実行させ、データセキュリティの侵害や侵害を引き起こす可能性があります。または、それほど頻繁ではありませんが、問題を起こそうとする人がいなくても、誤って誤ったプログラムが実行される可能性があります。
PATH環境変数のすべてが絶対パスである場合、検索および-execdiringしているディレクトリがに含まれていても、このエラーは発生しませんPATH。(これが機能することを確認しました。)相対ディレクトリはないが、$PATHこのエラーが引き続き表示されると思われる場合は、の出力を含む詳細で質問を更新してくださいecho "$PATH"。
具体例。
何がうまくいかないかの例として、
- アリスは
.、自分の名前の前$PATHに何もcd付けずに、どのディレクトリでもプログラムを実行できるようにしたいので、彼女の中にいます。./。
- アリスの熱狂的なイブは
/home/eve/sharedアリスと共有しました。
- アリスは、
.cイブが彼女と共有したファイルの統計(行、単語、バイト)を求めています。
アリスが実行されます:
find ~eve/shared -name \*.c -execdir wc {} \;
アリスにとって残念なことに、イブは独自のスクリプトを作成し、名前を付けwc、実行可能ファイル(chmod +x)を設定し、の下のディレクトリの1つに密かに配置しました/home/eve/shared。Eveのスクリプトは次のようになります。
#!/bin/sh
/usr/bin/wc "$@"
do_evil # Eve replaces this command with whatver evil she wishes to do
そのため、Aliceがfindwith -execdirを使用してwcEveが共有しているファイルを実行し、Eveのカスタムwcスクリプトと同じディレクトリ内のファイルにアクセスすると、Eveはwc実行されます。Aliceのすべての特権があります。
(巧妙であるため、Eveはwcスクリプトをシステムのラッパーとして機能させたため、wcアリスは何かが間違っていること、つまりdo_evil実行されたことさえ知りません。 )
findこれを防ぐ方法。
find相対ディレクトリが含まれる-execdir場合$PATHにアクションの実行を拒否することにより、このセキュリティ問題の発生を防ぎます。
find 特定の状況に応じて2つの診断メッセージを提供します。
場合.である$PATH(あなたが見てきたように)それが言うそして、:
find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading or trailing colons)
.特に一般的であるため、ケースに特別なメッセージが含まれている可能性があります。
.--say、foo- 以外の相対パスが表示され$PATH、で実行するfindと-execdir、次のようになります。
find: The relative path `foo' is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove that entry from $PATH
相対パス$PATHをまったく含めない方が良いでしょう。
ディレクトリを自動的に変更するユーティリティを使用すると、.他の相対パスが含まれるリスク$PATHが特に高くなりfindます-execdir。このため、この状況では使用できません。
ただし、特に.に相対パスを$PATH含めることは本質的に危険であり、とにかく回避するのが最善です。上記の例の架空の状況を考慮してください。実行する代わりにfind、アリスは単にcdsを~eve/shared/blah実行しwc *.cます。blahEveのwcスクリプトが含まれている場合do_evil、Aliceとして実行されます。