web-dev-qa-db-ja.com

古典的なUnix権限を持つo = rwxのセキュリティ

o=rwとマークされたディレクトリに限定されたファイルとディレクトリにo=rwxまたはo=を移動するのは安全ではありませんか?

言い換えると、プライベート(g=,o=)ホームディレクトリが指定されている場合、これらの信頼できるファイルがすべて私の家にある限り、o=rwまたはo=rwxですべてを書き込むことは完全に安全ですか?

(私はumask 0000を設定しようとはしていません-それが/tmpファイルなどを開くことになると思いますが、これを実行したいプログラムを書いているので、私がそうであるかどうか知りたいのですがm愚かなことをしている。)

7
PSkocik

これらのファイルとディレクトリが親ディレクトリと同じ所有者である限り、これは直接安全ではありません。親ディレクトリのアクセス許可をバイパスできるハードリンクがなく、親ディレクトリのアクセス許可に例外が設定されていません(たとえば、一部のACL)。

しかし、これは火で遊んでいるので、私はまだこれを賢明ではなくクリーンではないと分類します。将来のある時点で、恐らく無関係なソフトウェアまたはプロジェクトに関連する無関係な変更が原因で、上記の条件が満たされないため、セキュリティの脆弱性が広がってしまいます(そしてマーフィーの法則により、これは最悪の場合に起こると想定できます瞬間)。

ソフトウェアを作成するときは、外側の保護層によって保護されたままであり、そのため「到達不能」であるため悪用できないという想定に基づいて、安全でないコードを作成してはなりません。セキュリティは、すべてのコンポーネントが適切な一般的なセキュリティ体制を確保するためにその役割を果たす必要がある全体として考える必要があります。

だから、私の答えは:

  • 一部の不定期のテストでは、ほとんどの場合、これは問題なく、問題はありません。
  • 実際の開発では、これを行わずに適切な権限を使用してください。
5
WhiteWinterWolf

Linuxはドメインソケットのファイル権限を尊重しますが、ソケットファイルの権限を無視するというUnix実装があります(例:BSD、HP -UX)。セキュリティのためにファイルシステムのアクセス許可に依存する移植可能なプログラムは、ソケットファイルにアクセス許可を設定するのではなく、目的のアクセス許可を持つディレクトリにソケットを作成する必要があります。

また、親フォルダにアクセスできなくても、ファイル(およびドメインソケット)にアクセスできる状況もいくつかあります。これらは通常、最初のセットアップに特権を必要としますが、その後特権なしでアクセスすることができます。たとえば、ホームディレクトリ内のフォルダへのバインドマウントへのアクセス権があるユーザーは、バインドマウントパスを介してフォルダにアクセスするため、ホームディレクトリの権限をバイパスできます。別の例としては、システムに代替のアクセス許可メカニズム(ACLなど)が設定されている場合、制限付きのUnixアクセス許可にもかかわらず、他のユーザーはそれらの代替のアクセス許可メカニズムを介してそのファイルへのアクセスを許可されることがあります。

3
Lie Ryan