最近,全球应用安全项目(Open Worldwide Application Security Project, OWASP)更新了自2016年以来的首个移动应用程序十大风险。这次排在首位的安全风险是“不当凭据使用”。
这是对移动应用提供商的一个警钟,提醒他们注意硬编码凭据和不良秘密卫生的一般危险。
错误处理应用程序使用的秘密,尤其是在移动应用中,可能导致严重的安全漏洞。让我们更仔细地看看这一新的安全重点,以及我们可以共同采取哪些措施来解决这些问题。
不当秘密处理的日益威胁
不当凭据使用发生在像密码或令牌这样的秘密没有得到妥善保护时,使其容易受到攻击者的窃取。移动应用尤其以泄露秘密而闻名。根据CyberNews的研究,在Google Play商店等平台上,超过50%的移动应用都有硬编码的秘密,这意味着这些敏感信息很容易被恶意行为者发现。
如果我们查看OWASP提供的定义,我们很快就会理解为什么这一风险特别令人担忧:
当机密信息被曝光时,攻击者可以利用它们来获取对服务、数据甚至整个系统的未经授权访问。这使得机密信息管理成为应用开发人员和安全团队同样关注的重点。
为什么机密信息是主要目标
机密信息对攻击者具有吸引力,因为它们直接授予对关键系统的访问权限。与其他需要进一步利用的漏洞不同,一旦攻击者获得对 API 密钥或密码的访问权限,他们通常可以清晰地找到有价值资源的路径。
例如,在移动应用程序中硬编码的 API 密钥可以通过静态分析工具提取,并用于发起未经授权的 API 请求。这不仅会危及用户数据,还可能导致财务损失,特别是如果这些密钥与按使用量计费的服务相关联。
客户端保密性很难
在理解机密信息管理的一个关键点是,客户端保密实际上是不可能的。无论移动应用程序中的机密信息如何被混淆或加密,具有足够资源的攻击者都可以破解该应用程序并检索这些信息。这是因为机密信息在某个时刻必须在应用程序的内存中可用于使用。通过动态分析,攻击者可以检索这些机密信息并利用它们。
因此,管理机密信息的唯一安全方式是完全将其远离客户端。开发人员应该将 API 密钥或凭据等敏感信息移到后端,这样他们可以更好地控制访问权限和安全性。
机密信息管理的最佳实践
为了解决秘密泄漏的挑战,开发团队必须实施一系列最佳实践。
1. 永远不要硬编码秘密
秘密永远不应直接存储在应用程序代码中。这包括API密钥、身份验证令牌和任何其他敏感数据。硬编码秘密是它们泄漏的最常见方式之一,可能导致重大安全漏洞。
2. 使用安全存储API
对于用户秘密(例如密码、令牌),开发人员应使用移动操作系统提供的安全存储机制。例如,iOS提供了Keychain,Android则有Keystore。这些API允许在设备上对敏感数据进行安全存储和访问控制。
3. 将秘密移到后端
移动应用程序应该使用服务器端逻辑来管理API密钥和其他敏感数据,而不是在客户端处理秘密。将这些操作放在后端大大减少了泄露秘密的风险。
4. 定期轮换和作废秘密
即使有适当的秘密管理,秘密也应定期轮换,并立即作废已泄露的密钥。这确保了如果攻击者获得秘密访问权限,他们无法无限期使用它。
5. 证书固定
当在运行时向应用程序发送秘密时,开发人员应使用证书固定来确保通信安全。这通过在连接期间验证服务器的身份,为通信添加了额外的保护层。
6. 在SDLC中实施秘密检测
在开发生命周期中管理秘密不可避免地会在某个时候涉及错误和泄漏。OWASP强调需要“一个全面的安全测试过程。”它需要在提交、推送和构建阶段强制执行多个检测层次,并在发生事件时允许简化的修复流程。
必须牢记,硬编码的秘密并不需要到达生产环境就能成为高影响的漏洞。
泄漏秘密的后果
当秘密泄漏时,后果可能是严重的。攻击者可以利用暴露的凭证访问敏感数据、操纵业务逻辑,甚至接管整个系统。例如,如果与支付系统关联的API密钥被泄漏,攻击者可能会发起欺诈交易,导致企业和客户的财务损失。
“Adversaries can exploit vulnerabilities in both hardcoded credentials and improper credential usage. Once these vulnerabilities are identified, an attacker can use hardcoded credentials to gain unauthorized access to sensitive functionalities of the mobile app. They can also misuse credentials, for instance, by gaining access through improperly validated or stored credentials, thereby bypassing the need for legitimate access.”
此外,泄露的秘密可能会损害移动应用的完整性,并导致昂贵的法律和声誉损害。例如,如果一款医疗应用泄漏了允许访问患者数据的API密钥,可能会导致重大监管罚款,并侵蚀客户信任。
秘密检测工具
为了解决秘密泄漏的问题,秘密检测工具已成为现代应用开发的必需品。这些工具扫描代码仓库、CI/CD管道和生产环境中的暴露秘密,帮助团队在漏洞被利用之前捕捉到它们。
这些工具和平台允许实时监控代码更改,确保在开发过程中不会意外硬编码秘密信息。通过将这些工具集成到开发生命周期中,组织可以大大降低秘密信息泄露的风险。
保护秘密信息是我们共同的旅程
秘密管理不仅仅是一个技术问题;它是一个关键的安全挑战,如果处理不当可能会产生深远的后果。组织可以通过了解不当凭据使用的风险、实施保护秘密信息的最佳实践以及使用旨在检测泄露的工具来保护其敏感数据,减少昂贵数据泄露的可能性。
随着网络攻击和数据泄露持续成为头条新闻,保护秘密信息是保持组织和系统安全的最重要的防护策略。感谢OWASP志愿者们帮助我们跟上不断变化的网络安全形势。
参考
- 移动应用程序的十大风险,全球开放式应用安全项目(OWASP)
Source:
https://dzone.com/articles/secrets-security-important-issue-mobile-apps