次のページ 前のページ 目次へ

12. セキュリティの考察

パスには重要なセキュリティ問題があります。パス設定の間違いを悪用して、システム にクラック(原文:hack)するのによく使われる方法です。もしクラッカー (原文:hacker)がroot、一般ユーザーでクラッカーのコマンドを実行すると、簡単に 「トロイの木馬(Trojan horse)」攻撃がなされてしまいます。

昔(?)のよくあったミスはrootのパスに.(カレントパス)を入れる といったものです。悪意のあるハッカー(クラッカー)は彼のホームディレクトリ でプログラムlsを作り、もしrootが

# cd ~hacker
# ls

と実行するとクラッカーのlsコマンドを実行してしまいます。

間接的にこれはrootとして実行されるプログラム全てに適用されます。 重要なデーモンプロセスでは他のユーザーが書き込めないようにするべきです。 あるシステムでは/usr/local/binにセキュリティ的に不十分な プログラムでも置くことができます - そのためrootユーザーのパスから /usr/local/binを除外しておくべきです。しかしもしあるデーモンが パス/usr/local/bin/:...を使ったfooを実行していると、 /bin/fooではなく/usr/local/bin/fooを実行することも 可能です。そして/usr/local/binに書き込めるユーザーはだれでも システムを壊すことができてしまいます。

パスのディレクトリの順番に注意を払うのも大変重要です。例えば、 /usr/local/bin/binの前にあるとセキュリティリスクが 生じます - もし/binの後に/usr/local/binがあれば、 /bin/fooコマンドを/usr/local/bin/fooとローカルに修正した もので上書きすることはできません(つまりこの方がセキュリティ的に安全です)。

Linuxでは、パスの評価がオペレーティングシステムコールレベル(operating system call level)で行われていることを思い出して下さい。 実行ファイルのパスが与えられているところならどこでも、(少なくとも) /bin、/usr/binから検索される短い名前(short name)が与えられます - 他の場所でも同様です。


次のページ 前のページ 目次へ