web-dev-qa-db-ja.com

他の権限/ ACLがない場合、Unixファイルシステムのトラバーサル権限はそれ自体で悪用可能ですか?

シナリオ/質問:

Unixディレクトリツリーには、すべてのディレクトリで非特権アカウントトラバーサルを許可するように構成されたNTFv4 ACLがあります(ただし、他のACLは、任意のファイル/ディレクトリにさらに権限を付与しません)

そのような場合、everyonesetfacl everyone@:x:d:allow /path_to_mountpointまたは類似)、または他のACLが設定されていなくても、これを何らかの方法で利用できますか?

他の権限を許可する他の権限/ ACLがない場合、これはshouldの結果として、通過したオブジェクトを読み取る、変更する、または制御する権利がないと考えています。したがって、トラバーサル権限は有効ですが、実際にはまったく役に立たない/無菌です。

この文脈では、私は「悪用」を厳密に分類し、(他の追加のACLが設定されていない)dir内のファイルを一覧表示する機能でさえ、単なるトラバースではないため、「悪用」としてカウントされます。

その意味で、ベアトラバーサルACLが悪用される可能性はありますか、またはこれを「安全な」権利(ファイルプライバシーの意味を含む)にして、信頼できない/権限のない/ゲストアカウントに、それらを利用したくないパスであっても付与しますか?

説明/ユースケース:

私は主に、FreeBSD ZFS上のファイルサーバーのデータストアについて考えていますが、ほとんどのUNIXで同じだと思います。

使用例は次のとおりです。特定の非特権ユーザーがデータディレクトリ内の特定のネストされたディレクトリにのみアクセスできるようにするとします。すべての親ディレクトリでそのユーザーがそのパスに到達するようにトラバーサルを設定するのではなく、安全であれば、管理が容易になります。

  1. すべてのディレクトリに継承された全体データディレクトリのeveryoneにユニバーサルトラバース権限を付与しますが、その後
  2. 権限のないファイルまたは明示的な拒否の権限を設定しながら、ファイル+ディレクトリに読み取り/書き込み/変更ACLを設定することにより、実際の使用/アクセス/スキャンを制御しますその他すべてその他すべてのACLフラグdirs/files(dirsの単なる "x"以外)。

トラバーサルを利用できない場合、ユーザーが実際に他のACLを持っているターゲットパス/ファイルと組み合わせない限り、トラバーサル権限は無菌で役に立たない。しかし、それは正しいですか、それとも微妙に抜け穴ですか?

2
Stilez

トラバーサルのみ(ディレクトリに対するx許可のみ)を付与しても、誰かに多くのことをさせることはできませんが、いくつかのリスクが生じます。

ディレクトリに対するx権限により、ユーザーはファイルが存在するかどうかを確認できます。ディレクトリに対するr権限がない場合、ユーザーはファイルを一覧表示できませんが、ファイル名を推測した場合、その名前のファイルがあるかどうかをテストできます。これは通常、大量のデータを漏らすことはありませんが、プライバシー違反である可能性があります。

これを超えると、ツリー内の一部のファイルまたはディレクトリが保護されないリスクがあります。世界中で読み取り可能なファイルが存在することはよくあることです。権限のないユーザーが通過できないディレクトリの下にある限り、安全です。すべてのユーザーに通過許可を与えると、誰もがそれらの誰でも読み取り可能なファイルにアクセスできます。同様のリスクは、誰でも書き込み可能なファイルやグループで書き込み可能なファイルにも存在します。

最上位ディレクトリに全探索許可を与えるよりも、選択したサブディレクトリを公開する方が安全です。通常どおり、既知の機密データをブラックリストに登録するよりも、公開データをホワイトリストに登録する方が安全です。 bind mount を使用して、プライベートディレクトリのサブディレクトリを公開できます。 FreeBSDでは、 nullfs (組み込み)または bindfs (ヒューズ)を使用してバインドマウントを作成できます。