web-dev-qa-db-ja.com

/ usr / binセキュリティホールに誰でも読み取り可能/書き込み可能/実行可能リンクがありますか?

% ls -l /usr/bin/edit                                                                                                
lrwxrwxrwx 1 root root 3 Jan 10 05:54 /usr/bin/edit -> vim*

これは、少なくともSuseやおそらく他のLinuxディストリビューションでは、update-alternativesの多くのバイナリに当てはまるようです。これは、Suseの侵害されたアカウントがシンボリックリンクを変更し、ユーザーをだまして何かを実行させる可能性があることを意味しませんか?もしそうなら、なぜこれらがデフォルトの権限なのですか?

7
user76871

から Symbolic linkのウィキペディアエントリ

シンボリックリンクのファイルシステムのアクセス許可は、通常、リンク自体の名前変更または削除操作にのみ関連し、ターゲットファイル自体のアクセス許可によって制御されるターゲットファイルのアクセスモードには関連しません。

そのシンボリックリンクはrootが所有しているため、変更できるのは彼だけです。例えば。

# ln -s /bin/ls blah
# ls -la blah
lrwxrwxrwx 1 root root 7 Fev 28 15:07 blah -> /bin/ls
$ rm blah
rm: cannot remove `blah': Operation not permitted
$ ln -s blah /bin/true
ln: failed to create symbolic link `/bin/true': File exists
4
Renan

それを理解した後に自分の質問に答える:

私はこれを理解しました。これは、/usr/binがrootによって所有されており、誰でも書き込み可能ではないという事実を除いて、セキュリティホールになります。したがって、リンクを変更することはできません。 /usr/binが誰でも書き込み可能である場合、リンクを独自のリンクに置き換えることができますが、そうではありません。

概念実証として:

% cd
% Sudo touch rootfile
% Sudo ln -s rootfile rootfile_link
% touch evilfile
% ln -s evilfile evilfile_link

# works, but only if directory permissions are correct:
% cp evilfile_link rootfile_link

ただし、実際のシンボリックリンクファイルを編集する方法があれば(私が思うに、それは単なるテキストの短い断片です)、悪である可能性があります。

したがって、シンボリックリンクを変更できない、または変更できない、または完全なパーミッションに置き換えることができないという強力な証拠を誰かが思い付くまで、実際には回答の受け入れを延期し、その回答を受け入れます。

3
user76871

一言で言えば、違います。

カーネルは、シンボリックリンクを使用して、リンクが指すファイル/ディレクトリを検索します。

例を見てみましょうview => vim(/ usr/binの一般的なシンボリックリンク、vimviewという名前で呼び出すと、テキストファイルが開きます読み取り専用)。

カーネルは 'viewを開きます。これがvimへのポインタであることを確認し、viewを閉じてから、vimを開きます。 vimを開く/実行すると、vimのすべてのセキュリティチェックが使用されます。そのため、vimはまだvimの権限で開かれていますが、これは期待どおりです。

あはは!しかし、シンボリックリンクはファイルであり、書き込み可能であれば、開いて編集し、ターゲットを変更することができます。/usr/bin/viewは、/ tmp/myevilexecへのポインターになります。一言で言えば、違います。これは特別なファイルであり、シンボリックリンク「ファイル」を開いてこの方法で編集することはできません。シンボリックリンクを置き換えることしかできず、シンボリックリンクのパーマは関係ありません。ディレクトリパーマは、ファイルを削除したり、新しいファイルを作成したりできるかどうかを決定します。

要するに、シンボリックリンクの777はセキュリティホールではなく、シンボリックリンクのパーマを「非表示」にし、実際のパーマはターゲットファイルであり、これは期待どおりです。

3
Rich Homolka