標準のLinuxファイルシステムでは、これらの共通ディレクトリのどれがデフォルトで誰でも書き込み可能ですか?
/tmp
/etc
/var
/proc
/bin
/boot
/....
....
なぜ彼らは世界で書き込み可能ですか?それはセキュリティ上のリスクをもたらしますか?
標準のLinuxファイルシステムでは、これらの共通ディレクトリのどれがデフォルトで誰でも書き込み可能ですか?
/tmp
/etc
/var
/proc
/bin
/boot
/....
....
なぜ彼らは世界で書き込み可能ですか?それはセキュリティ上のリスクをもたらしますか?
回答:
一般的に世界で書き込み可能な唯一のFHSで義務付けられたディレクトリは/tmp
と/var/tmp
。どちらの場合も、それは誰でも作成できる一時ファイルを保存することを目的としているためです。
また/dev/shm
、tmpfsとして一般的です、プロセス間で共有される中規模データへの高速アクセス、または再起動時に破棄されることが保証されているファイルを作成する(RAMに裏打ちされたファイルシステム。
またあるかもしれません/var/mail
か/var/spool/mail
、そして時には他のスプーラディレクトリ。これらは、処理される前にメールを一時的に保持するために使用されます。使用中のツールによっては、常に世界書き込み可能であるとは限りません。存在するのは、デーモンが処理するためのユーザーツールによってファイルを作成できるためです。
通常、これらのディレクトリにはすべてスティッキビット(t
)が設定されており、ファイルまたはディレクトリの所有者のみがその中のファイルを移動または削除できます。
任意のユーザーとして実行されているプログラムは、これらのディレクトリにファイルを作成できます。特定のデータのセキュリティに関する限り、正しいことを行うのは作成プログラム次第です。ファイルシステムが潜在的にいっぱいになることを除いて、特定の一般的なセキュリティの問題はありませんが、プログラムがそれを間違える可能性は十分にあります。
サービス固有のディレクトリに向かう動きがいくつかありました/tmp
。これらは、発生する可能性のあるバグの一部を回避するため、ディレクトリの使用方法がプログラムにバグがないことはそれほど重要ではありません。
次のコマンドを使用すると、システム上の誰でも書き込み可能なディレクトリを見つけることができます。
find / -maxdepth 3 -type d -perm -777
/tmp
、/var/tmp
、および/var/lock
デフォルトでは、世界的に書き込み可能です。古いアプリケーションとの互換性のために提供される/usr/tmp
→ などのシンボリックリンクが存在する場合があり/var/tmp
ます。
/tmp
そして/var/tmp
世界的に書き込み可能な彼らは、任意の一時的に記憶するための任意のユーザーが使用することを意図しているので。 /var/lock
すべてのユーザーとして実行されるプロセスが中央の場所にロックファイルを作成できるように、誰でも書き込み可能です。
セキュリティ上のリスクはありますか?いいえ、しかし、そうです。
これらすべてのディレクトリのアクセス許可は1777
、先頭1
がスティッキービットであるため、です。つまり、誰でもこれらの誰でも書き込み可能なディレクトリにファイルを作成できますが、所有者だけが自分のファイルを削除できます(そしてもちろん、rootユーザーも削除できます)。
潜在的なセキュリティリスクは、安全でない一時ファイルの作成から発生する可能性があります。これらのディレクトリはすべて無料であるため、ユーザーは、悪意のあるユーザーによって作成された既存のファイルまたはシンボリックリンクを開くのではなく、作成するファイルが実際に新しいファイルであることを確認する必要があります。open(…, O_EXCL)
またはなどの適切な手法を使用してファイルが作成される場合mkstemp(3)
、そのようなリスクは回避されます。
/tmp
安全に使用するにはコードを追加する必要があるため、リスクが伴います。明らかにこれは見落とされます。
最近の例は、スティーブケンプによって与えられます。 http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
./mgmt/tools/SysAPI.cc: tmp = fopen("/tmp/shadow", "w"); ./mgmt/tools/SysAPI.cc: system("/bin/mv -f /tmp/shadow /etc/shadow");
あなた(攻撃者)が2行目の前に/ tmp / shadowを置き換えると、全員のパスワードを置き換えることになります。(攻撃では、最初の行の前にファイルを作成し、ファイルを誰でも書き込み可能にする必要があると思います)。
Linux上のSystemdでは、多くのシステムサービスの/ tmpを分離することにより、このような脆弱性を緩和できます。(「/ tmpをIPCソケットおよびその他の通信プリミティブの場所として誤用する」ものを除く)。
Fedora Linuxの場合-http://fedoraproject.org/wiki/Features/ServicesPrivateTmp
fopen
上書きしますが、アクセス許可はリセットしないため、悪意のあるユーザーは引き続き変更を加えることができます。また、悪意のあるユーザーがln -s /bin/bash /tmp/shadow
最初の行の前のようなことをして、重要なシステムバイナリが上書きされる可能性があります。
/var/lock
→/run/lock