web-dev-qa-db-ja.com

ユーザーがアクセスを許可されていないオブジェクトの存在に関する知識を漏らすことはどれほど危険ですか?

優れたセキュリティ設計では、ユーザーがアクセスを許可されていないデータに関する情報が明らかにならないことを理解しています。これには、上記のデータの存在に関する情報が含まれます。つまり、ユーザーが特定のタイプのエンティティへのアクセスを許可されていない場合、特定のIDを持つそのタイプのエンティティが存在するかどうかを把握することもできません。

私が現在取り組んでいるプロジェクトは、これを一貫してサポートしていません。たとえば、/edit/record/52へのリクエストは、ID52のレコードが存在しない場合はHTTP404エラーを返し、存在する場合はHTTP403エラーを返します。

これがセキュリティの観点からどれほどの問題であるかはわかりません。この情報だけでは、攻撃者はおそらく何もできません。私の心配は、これにより、攻撃者がシステム内のデータに関する情報を集約できるようになることです(これと同じ動作を示すさまざまなエンティティのエンドポイントが複数あるため)。これを使用してシステムを攻撃する可能性があります。確かに、この情報を頭の中に置いた攻撃シナリオはありませんが、この漏洩が少なくとも攻撃を助長する可能性があるのではないかと心配しています。残念ながら、これを変更するには、セキュリティアーキテクチャを少しリファクタリングする必要があります。そのため、すぐにはリファクタリングしませんでした。

これは一般的な攻撃ベクトルですか?心配して、可能な限りこれを修正する必要がありますか?それとも、オブジェクトの存在に関する情報の漏洩は許容されますか?一見取るに足らないデータの漏洩がシステムの侵害につながった、よく知られた、または注目を集める攻撃の例を教えてください。

3
Chris

リスクの評価は正しいです。このデータを漏らすと、攻撃者が情報を収集できるようになり、攻撃が容易になる可能性があります。したがって、直接的なリスクがない場合でも、攻撃の情報収集フェーズをスピードアップする可能性があります。

懸念がある場合、通常の解決策は、必要に応じて応答をサニタイズすることです。たとえば、これらの403を404に置き換えることができます。しかし、あなたが述べたように、これが多大な努力である場合、わずかな漏出リスクが修復を必要とするかどうかを検討する価値があります。

2
Rory Alsop