FileProvider 目录暴露不当

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> 元素。

资源