OWASP カテゴリ: MASVS-STORAGE: ストレージ
概要
不適切に構成された FileProvider
は、ファイルやディレクトリを意図せず攻撃者に公開する可能性があります。構成によっては、攻撃者はこれらの公開されたファイルに読み書きを実行できるため、機密情報の流出や、最悪の場合、任意のコードが実行される可能性もあります。たとえば、<root-path>
が構成されているアプリの場合、攻撃者がデータベースに保存されている機密情報にアクセスする、アプリのネイティブ ライブラリを上書きするなど、任意のコードが実行されるおそれがあります。
影響
影響は、構成やファイルの内容によって異なりますが、一般的にはデータ漏洩(読み取り時)やファイルの上書き(書き込み時)が発生します。
リスクの軽減
構成で <root-path> パス要素を使用しない
<root-path>
は、デバイスのルート ディレクトリ(/
)に対応します。構成でこれを許可すると、アプリのサンドボックスや /sdcard
ディレクトリを含むファイルやフォルダに任意でアクセスでき、広範な攻撃対象領域が攻撃者に提供されます。
限られたパス範囲を共有する
パス構成ファイルでは、.
や /
のような幅広いパス範囲を共有しないでください。この操作をすると、機密ファイルが誤って公開されるおそれがあります。限られた狭い範囲のパスのみを共有し、共有するファイルのみがこのパスに含まれるようにします。これにより、機密ファイルが誤って公開されるのを防ぐことができます。
より安全な設定の一般的な構成ファイルは次のようになります。
XML
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
外部 URI を確認して検証する
(content
スキームを使用して)外部 URI を検証し、それらがアプリのローカル ファイルを指していないことを確認します。これにより、不用意な情報漏洩を防ぐことができます。
最小限のアクセス権を付与する
content URI
には読み取りと書き込みの両方のアクセス権を割り当てることができます。必要最小限のアクセス権のみが付与されていることを確認してください。
たとえば、読み取り権限のみが必要な場合は、明示的に FLAG_GRANT_READ_URI_PERMISSION
のみを付与します。
機密情報の保存や共有には <external-path> を使用しない
個人を特定できる情報(PII)などのセンシティブ データは、アプリケーション コンテナやシステム認証情報ストレージ以外に保存しないでください。したがって、保存や共有される情報が機密でないことを明示的に確認した場合を除き、<external-path>
要素は使用しないでください。