随着移动互联网用户数量急剧增长,移动应用系统已经实现了典型生活场景的全覆盖,并渗透到了多个企业级应用领域。移动应用的快速扩张也带来了诸如数据违规收集、数据恶意滥用、数据非法获取、数据恶意散播等安全风险。这些安全风险广泛存在于当前主流的移动应用系统中,严重威胁数据安全与个人信息安全。
近日,OWASP(全球开放应用软件安全项目组织)发布了最新版移动应用系统10大安全风险目录,这是自2016年以来该机构首次对移动应用系统相关的风险进行更新,重点增加了对供应链安全、隐私保护等方面的风险关注。这份目录对广大移动应用程序开发人员来说很重要,它描述了移动应用程序开发时最严重的安全风险相关信息,同时也给出了缓解方法和建议。
1 凭据使用不当
OWASP认为,当前移动应用程序开发的主要风险是来自凭据、API密钥及其他秘密信息的安全性。黑客可以利用移动应用程序中硬编码凭据和使用不当的运行时秘密信息,对移动应用程序的关键功能实现未授权访问。此外,如果攻击者借助一些定制的工具和脚本,就可以进一步通过被盗的密钥来访问后端系统和API。
防护建议:
开发则应该严格禁止将凭据、密钥等信息保留在应用程序代码中,同时应该采取措施以保护运行中的移动应用程序静态和传输中秘密信息。此外,组织应该确保能够定期快速地轮换任何密钥,尤其是第三方API密钥。
2 供应链安全性不足
供应链攻击是针对企业使用的外部组建或工具的攻击,能够在组织不知觉的情况下将漏洞、不安全内容或恶意代码引入到应用程序中。这些组件如果没有得到适当的保护,可能会带来各种安全风险。例如,第三方组件可能访问敏感数据或允许恶意代码在设备上运行。供应链攻击路径可能是组织内部的恶意员工、系统中引用的某段第三方代码,以及对组织的系统获得访问特权的黑客。
防护建议:
组织应该加强监控和检查移动应用程序中所使用的所有第三方代码,并在发布移动应用程序代码之前进行签名,这样应用程序可以在运行时被证明是真实的、未被篡改的,一旦发现来自篡改过的应用程序访问请求,就应该立即阻止。
3 不安全的身份验证/授权
身份验证是验证用户是否是真实、合法的用户,而授权是验证用户是否拥有访问特定资源或服务级别的凭据。身份验证能够有效防止窃取和使用用户凭据,然后使用这些凭据登录到应用程序或直接访问后端服务器。而授权问题通常归因于数据和资源的访问级别实施不当。
防护建议:
通过开展应用程序认证可以有效防护上述风险。在移动应用程序运行时进行完整性检查可以检测出任何未经授权的代码更改。
4 API输入/输出验证不足
应用程序编程接口(API)允许移动应用程序相互通信和共享数据,因此,大量第三方API需要被集成到移动应用程序中以提供更多功能的服务。而API中的常见漏洞是由恶意代理篡改输入数据引起的。这类攻击包括SQL注入、命令注入和跨站脚本(XSS)攻击,它们经常出现在OWASP 各类应用风险名单上。未经授权的代码执行、数据泄露、数据损坏或服务中断都是可能会出现的危险后果。
防护建议:
企业组织应该确保移动应用程序所使用的第三方API是安全的。此外,安全人员还应该进一步验证API接口的安全措施是否有效。OWASP已经给出了关于测试和缓解最常见API漏洞的详细指导准则。一个重要的行动原则就是要阻止非真实应用程序所发出的访问请求。这可以有效地防止攻击者利用和API相关的零日漏洞。
5 不安全的网络通信
移动应用程序运行会面临与传输或接收数据相关的威胁。移动应用生态系统中的一个关键攻击面就是移动应用程序与后端服务器之间的链接通道。针对这条通道发起的中间人(MitM)攻击可以对移动用户构成了重大威胁。如果攻击者可以控制客户端,那么即便使用SSL,中间人攻击活动也可以通过应用程序重新打包或使用Frida之类的钩子工具在运行时篡改应用程序的行为来发生。移动应用程序开发者要假设网络层的通信活动可能会被窃听,因此客户端设备上的信任证书存储区可能会被人恶意篡改,这点很重要。
防护建议:
动态证书绑定可以有效阻止MitM攻击,并消除静态绑定的成本负担。它允许在服务器端更新pin码,而无需更新应用程序。此外,动态绑定与应用程序和客户端认证相结合,可以防止通过篡改移动客户端信息来实施MitM攻击。
6 隐私控制能力不足
隐私控制不足是本次更新中新加入的安全风险。隐私控制主要指保护用户的个人身份信息(PII)安全,这些信息可能被攻击者用于欺诈或勒索。通常来说,PII可能被泄露(即违反保密性)、操纵(违反完整性)或销毁/阻止(违反可用性)。
防护建议:
移动应用程序设计和开发时应将所处理的PII数量和种类保持在绝对最低限度,并充分验证应用程序能够符合GDPR、CCPA以及我国《个人信息保护法》等隐私法规的监管要求。
7 二进制代码保护不足
移动应用程序的二进制代码通常可以从应用程序商店下载或从移动设备中复制,所以二进制攻击很容易通过反向工程或代码篡改来策划发起,从而窃取知识产权或篡改应用程序功能。
防护建议:
通过使用代码混淆技术保护代码可以有效阻碍对二进制代码的攻击,应考虑将其作为一种保护知识产权避免被竞争性应用程序滥用的手段。此外,应该使用运行时保护和应用程序完整性检查方案,及时识别和阻止以任何方式被篡改的应用程序。同时,前面所介绍的轮换API密钥和秘密信息保护方法也是增加对二进制代码保护的关键要素。
8 安全错误配置
移动应用数据泄漏通常意味着存在未经授权的数据传输,当移动应用程序本身缺乏有效的安全保护特性时,就会发生这种情况。由于时间限制、缺乏意识或开发过程中的人为错误等因素,移动应用程序中经常会出现错误的安全配置,有些甚至缺乏安全性设计。
防护建议:
防止移动应用程序中的安全错误配置需要遵循安全编码和配置实践。OWASP给出的建议包括特别注意默认凭据以及对用户访问运用最小特权原则。移动应用程序在正式发布前,开发者就应该保障其运行时具有正确合理的数据安全策略和措施。
9 不安全的数据存储
移动应用程序中不安全的数据存储就会让威胁分子找到可以趁机利用的漏洞。漏洞包括未经授权访问设备的文件系统、利用弱加密、拦截传输的数据,以及利用安装在设备端的恶意软件或恶意应用程序。此外,被破解的计算设备也为攻击者绕过安全措施、直接访问敏感数据提供了机会。
防护建议:
前面所介绍的各种建议在这里都能发挥作用,例如:实施访问控制和会话管理,确保强加密和安全数据传输,以及留意第三方代码和依赖项,这些都很重要。此外,运行时保护可以阻止对运行中的应用程序进行篡改从而窃取数据的黑客。
10 加密能力不足
加密是对重要移动应用数据进行防护的基本要求,使数据在没有密钥的情况下无法被读取。如果缺乏足够强大的加密防护,数据将会处在危险的状态下,很容易被黑客访问。许多移动应用程序开发人员都会忽视如何正确的加密数据,这也导致了很多严重的数据泄露发生。这可能表现为采用不安全的加密算法,或未使用安全数据传输(HTTPS)。移动应用程序中不安全加密的攻击主要涉及加密机制中的漏洞,导致数据泄露或未经授权的访问。
防护建议:
确保应用程序正确且安全地使用加密技术是非常重要的,这包括使用强算法进行加密、使用安全协议进行通信以及正确保管密钥。此外,组织要始终使用HTTPS,确保加密密钥安全地存储在移动设备上,不是采用明文格式或放在易于访问的位置。
参考链接:
https://securityboulevard.com/2024/05/2024-owasp-mobile-top-ten-risks/
来源:安全牛