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
验证外部 URI(使用 content
方案),并确保它们没有指向应用的本地文件。这可以防止任何无意的信息泄露。
授予最低访问权限
content URI
可以同时具有读取和写入访问权限。确保仅授予所需的最低访问权限。例如,如果仅需要读取权限,则明确仅授予 FLAG_GRANT_READ_URI_PERMISSION
。
避免使用 <external-path> 存储/共享敏感信息
敏感数据(如个人身份信息 (PII))不应存储在应用容器或系统凭据存储设施之外。因此,避免使用<external-path>
元素,除非您已明确验证正在存储/共享的信息不是敏感信息。