MASTG-TEST-0023: 测试安全提供者
此测试即将更新
此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。
请通过提交PR来帮助我们:MASTG v1->v2 MASTG-TEST-0023: 测试安全提供程序 (android)
概述¶
静态分析¶
基于 Android SDK 的应用程序应该依赖 GooglePlayServices。例如,在 gradle 构建文件中,你将在 dependencies 块中找到 compile 'com.google.android.gms:play-services-gcm:x.x.x'
。你需要确保 ProviderInstaller
类被调用,无论是使用 installIfNeeded
还是 installIfNeededAsync
。ProviderInstaller
需要由应用程序的组件尽早调用。这些方法抛出的异常应该被捕获并正确处理。如果应用程序无法修补其安全提供程序,它可以通知 API 其不太安全的状态,或者限制用户操作(因为在这种情况下,所有 HTTPS 流量都应被认为风险更高)。
如果你可以访问源代码,检查应用程序是否正确处理与安全提供程序更新相关的任何异常,以及当应用程序在使用未修补的安全提供程序时是否向后端报告。Android 开发者文档提供了不同的示例,展示了如何更新安全提供程序以防止 SSL 漏洞。
最后,确保基于 NDK 的应用程序仅绑定到最新且已正确修补的库,该库提供 SSL/TLS 功能。
动态分析¶
当你拥有源代码时
- 在调试模式下运行应用程序,然后在应用程序首次连接到端点的位置创建一个断点。
- 右键单击突出显示的代码,然后选择
Evaluate Expression
。 - 输入
Security.getProviders()
并按回车键。 - 检查提供程序并尝试查找
GmsCore_OpenSSL
,它应该是新的置顶提供程序。
当你没有源代码时
- 使用 Frida for Android来hook
java.security.Security.getProviders()
,或者使用类似 @platix/get-android-security-provider-mstg-network-6的脚本 Frida CodeShare。 - 确定第一个提供程序是否为
GmsCore_OpenSSL
。