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