MASTG-TEST-0202: 引用访问外部存储的 API 和权限
概述¶
此测试使用静态分析来查找允许应用程序写入与其他应用程序共享的位置的 API 的使用( 测试本地存储以查找敏感数据),例如外部存储 API或MediaStore
API,以及相关的 Android 清单存储相关权限。
此静态测试非常适合识别应用程序将数据写入共享存储的所有代码位置。但是,它不提供正在写入的实际数据,并且在某些情况下,不提供设备存储中正在写入数据的实际路径。因此,建议将此测试与其他采用动态方法的测试相结合,因为这将提供更完整的正在写入共享存储的数据视图。
步骤¶
- 逆向工程应用程序 ( 反编译 Java 代码)。
- 在逆向工程应用程序上运行静态分析 ( Android 上的静态分析) 工具,针对任何外部存储 API 和 Android 清单存储权限的调用。
静态分析工具应该能够识别用于写入共享存储的所有可能的 API 和权限,例如 getExternalStoragePublicDirectory
、getExternalStorageDirectory
、getExternalFilesDir
、MediaStore
、WRITE_EXTERNAL_STORAGE
和 MANAGE_EXTERNAL_STORAGE
。有关这些 API 和权限的更多信息,请参阅 Android 文档。
观察¶
输出应包含用于写入共享存储的 API 和存储相关权限的列表及其代码位置。
评估¶
如果出现以下情况,则测试用例失败
- 应用程序在 Android 清单中声明了适当的权限(例如,
WRITE_EXTERNAL_STORAGE
、MANAGE_EXTERNAL_STORAGE
等) - 并且写入共享存储的数据是敏感的且未加密。
要确定后者,您可能需要仔细查看反编译的代码 ( 查看反编译的 Java 代码) 和/或将此测试与其他采用动态方法的测试相结合,因为这将提供更完整的正在写入共享存储的数据视图。
参考资料¶
演示¶
MASTG-DEMO-0003:App 在没有作用域存储限制的情况下写入外部存储 MASTG-DEMO-0004:App 在具有作用域存储限制的情况下写入外部存储 MASTG-DEMO-0005:App 通过 MediaStore API 写入外部存储