您的主题问题
Android:CryptoObject 和 BiometricPrompt 安全性。有可能破解吗?
如果它是软件,那么它可能会被破解。这只是时间、知识和努力的问题。
但是这种机制是否存在任何已知的漏洞?是否有任何选项可以在不使用生物特征的情况下获取此 CryptoObject(例如在根设备上)?
并不是说我不知道,但我不是逆向工程方面的专家,只是一个知识渊博的人告诉你攻击者不需要绕过这个安全机制来从你的移动应用程序中提取秘密。
继续阅读以了解它是如何可能的......
移动应用程序中的秘密是公开的
我需要使用生物识别技术在我的应用程序中安全地存储某些秘密。我想使用 BiometricPrompt 来获取 CryptoObject,它将用于加密和破译这个秘密。
CryptoObject 和 BiometricPrompt 的使用将安全地加密秘密并使用Android 硬件支持的密钥库已知的下划线机制存储它:
片上系统 (SoC) 中可信执行环境的可用性为 Android 设备提供了向 Android 操作系统、平台服务甚至第三方应用程序提供硬件支持的强大安全服务的机会。
虽然这可能很难破解,但聪明的攻击者不会浪费时间尝试破解它,相反,攻击者会下载您的移动应用程序二进制文件,对其执行一些静态分析,以在您的代码中找到使用解密后的秘密,然后使用检测框架在运行时挂钩到此函数,并将秘密提取到他控制的命令和控制服务器,然后他将能够使用提取的秘密自动攻击。如果机密仅限于移动应用程序的当前用户,则此类攻击的范围将受到限制。
最受欢迎的检测框架之一是Frida:
将您自己的脚本注入黑盒进程。挂钩任何功能、监视加密 API 或跟踪私有应用程序代码,无需源代码。编辑,点击保存,立即查看结果。所有这些都无需编译步骤或程序重新启动。
这里的底线是,无论您将秘密存储在移动应用程序中多么安全,从您发布移动应用程序的那一刻起,它们都必须被视为公开。
授权访问第三方服务和 API
我经常看到第三方 API 被直接从移动应用程序中访问,因此移动应用程序需要有秘密才能访问它们。
这种方法的问题在于,一旦您不能保证攻击者不会窃取您的秘密,那么您可能只有在您为此服务的账单使用量达到顶峰时才知道它们已被泄露。最糟糕的是,您可能只有在知道自己遭受数据泄露后才发现机密已被泄露,但现在您的企业声誉受到严重影响或无法修复,更不用说企业可能面临的巨额罚款因违反法律而支付,例如欧洲的 GDPR。
所以我的建议是始终委托给您控制对第三方服务/API 的访问的后端,您可以在我的文章
使用反向代理保护第三方 API中阅读更多信息:
在本文中,您将首先了解第三方 API 是什么,以及为什么不应该直接从移动应用程序中访问它们。接下来,您将了解什么是反向代理,以及何时以及为何使用它来保护对移动应用程序中使用的第三方 API 的访问。
现在你可能会说你仍然需要一个秘密来访问这个反向代理,这是真的,但现在你只在移动应用程序中包含一个秘密,用于你可以完全控制的后端,你可以在其中应用所有防御措施您认为适合监控滥用、限制它或完全阻止它。因此,您的第三方服务/API 中不再出现意外账单,因为现在可以通过您控制的这个后端访问它们。
最重要的是,移动应用程序只能与您控制的后端通信,并且对第三方 API 服务的任何访问都必须由您控制的同一后端完成。通过这种方式,您可以将攻击面限制在一个地方,在那里您将使用尽可能多的防御层来保护您所保护的东西。
保护后端的可能解决方案
我在上面提到您可以应用您认为合适的防御措施,我建议您阅读我对如何保护移动应用程序的 API REST问题给出的答案?,尤其是保护 API 服务器和可能更好的解决方案部分,以了解您的一些选项。
你想加倍努力吗?
在回答安全问题时,我总是喜欢参考 OWASP 基金会的出色工作。
对于 APIS
OWASP API 安全前 10 名
OWASP API 安全项目旨在通过强调不安全 API 中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了促进实现这一目标,OWASP API 安全项目将创建和维护一个 Top 10 API 安全风险文档,以及一个文档门户,用于在创建或评估 API 时提供最佳实践。
对于移动应用
OWASP 移动安全项目 - 十大风险
OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。
OWASP - 移动安全测试指南:
移动安全测试指南 (MSTG) 是移动应用安全开发、测试和逆向工程的综合手册。