OWASP移动应用程序安全验证标准(MASVS),它是移动应用程序行业的综合安全标准。
本文主要基于《 OWASP移动应用程序安全验证标准v2.0.0》文档进行学习并翻译整理的。
它主要用于移动应用程序安全性。它提供了一套全面的安全控制措施,可用于评估跨各种平台(如Android、iOS)和部署场景的移动应用程序的安全性。该标准涵盖了移动应用程序攻击面的关键组件,包括:存储、密码学、身份验证和授权、网络通信、平台的交互、代码质量和抵御逆向工程和篡改的能力。
MASVS它是建立对移动应用程序安全性,提供一组解决最常见的移动应用程序安全问题的控件。这些控件开发的重点是在移动应用程序开发和测试的所有阶段提供指导,并在采购期间用作移动应用程序安全验证的基线。
通过遵守OWASP MASVS中的控制措施,组织可以确保其移动应用程序的构建考虑到安全性,从而降低安全漏洞的风险,并保护敏感数据无论是用作衡量标准、指导还是基线,OWASP MASVS都是一个宝贵的工具。
◆ ◆ ◆ ◆
应用程序安全模型
◆ ◆ ◆ ◆
该标准为代表移动攻击面最关键区域的各个组。
这些标准有 MASVS-XXXXX 的控制组为以下领域提供指导和标准:
1、 MASVS-STORAGE:敏感数据在设备上的安全存储。
2、 MASVS-CRYPTO:用于保护敏感数据的加密功能。
3、 MASVS-AUTH:移动应用程序使用的身份验证和授权机制。
4、 MASVS-NETWORK:移动应用程序和远程端点之间的安全网络通信(传输中的数据)。
5、 MASVS-PLATFORM:与底层移动平台和其他已安装应用程序的安全交互。
6、 MASVS-CODE:数据处理和保持应用程序最新的安全最佳实践。
7、 MASVS-RESILIENCE:对逆向工程和篡改尝试的弹性。
这些限制组中每一个都包含标记为 MASVS-XXXXX-Y 的单独限制,它们提供特定的
为达到标准而需要实施的特定安全措施的指南。
下面就详细整理下这些标准的数据。
◆ ◆ ◆ ◆
MASVS-STORAGE
安全存储
◆ ◆ ◆ ◆
移动应用程序在处理各种敏感数据,例如个人身份信息 (PII)、通常需要在本地存储的加密文件、加密算法和API密钥。这些敏感数据可能存储在私有位置,例如应用程序的内部存储,或在可访问的公共文件夹中,用户在设备上安装的其他应用程序上。敏感数据也可能被无意中存储或暴露于可以公开访问的位置,通常是使用某些API或系统功能的副作用,例如备份或日志。
此控制在帮助开发人员确保应用程序,有意存储的任何敏感数据无论目标位置如何,都受到适当保护。它还包括可能由于不当使用API或系统功能。
MASVS-STORAGE-1:应用程序安全地存储敏感数据。此控件可确保由管理员有意存储的任何敏感数据应用程序受到独立于目标位置的适当保护。
MASVS-STORAGE-2:应用程序可防止敏感数据泄露。这个控件涵盖了开发人员实际上有办法防止这种情况的无意泄漏。
◆ ◆ ◆ ◆
MASVS-CRYPTO
密码学
◆ ◆ ◆ ◆
密码学对于移动应用程序来说是必不可少的,因为移动设备的便携性并且很容易地丢失或被盗。这意味着获得对设备的物理访问权限的攻击者,可能会访问存储在其上的所有敏感数据,包括密码、***信息和个人身份信息。
密码学提供一种通过加密来保护这些敏感数据的方法,以便它未经授权的用户无法轻易阅读或访问。控件的目的是确保通过验证的应用程序根据行业最佳实践,通常在外部标准中定义。它还侧重于整个过程中加密密钥的管理生命周期,包括密钥生成、存储和保护。密钥管理不善甚至会妥协最强大的密码学,因此开发者必须遵循推荐的最佳实践以确保用户敏感数据的安全性。
MASVS-CRYPTO-1 应用程序根据行业最佳实践采用当前强密码。密码学在保护用户数据方面起着特别重要的作用,在移动设备中更是如此环境,其中攻击者可以物理访问用户的设备可能的情况。这个控件涵盖通常在外部标准中定义的一般密码学。
MASVS-CRYPTO-2 该应用程序根据行业最佳实践进行密钥管理。该控件涵盖在整个生命周期中管理加密密钥,包括密钥生成、存储和保护。
◆ ◆ ◆ ◆
MASVS-AUTH
身份验证和授权
◆ ◆ ◆ ◆
身份验证和授权是移动应用程序的基本组成部分,特别是那些连接到远程服务的应用程序。这些机制提供额外的安全层,有利于防止未经授权访问用户敏感数据。尽管这些机制的实施必须在远程端点,应用程序遵循相关最佳实践以确保安全使用重要的协议。
移动应用程序使用不同形式的身份验证,例如生物指纹识别、PIN 或多因素身份验证代码生成器,以验证用户身份。这些机制必须正确实施才能确保在防止未经授权的访问方面的有效性和用户敏感信息的保护。
MASVS-AUTH-1应用程序使用安全身份验证和授权协议并遵循相关的最佳实践。一般连接到远程端点的应用程序都需要用户身份验证,并且强制执行某种授权。虽然这些机制的实施必须在远程端点上,但应用程序也确保它遵循所有相关的最佳实践,以确保安全使用相关协议。
MASVS-AUTH-2应用程序根据平台安全地进行本地认证最佳实践。许多应用程序允许用户通过生物识别或本地PIN码进行身份验证。某些应用程序可能没有远程端点,并且完全依赖关于本地应用程序身份验证。
MASVS-AUTH-3应用程序通过额外的身份验证来保护敏感操作。对于应用程序内的敏感操作,通常需要一些额外的身份验证形式。这可以用不同的方式进行安全管控(生物识别、密码、MFA 代码生成器、电子邮件、深度链接等)。
◆ ◆ ◆ ◆
MASVS-NETWORK
网络通信
◆ ◆ ◆ ◆
安全网络是移动应用安全的重要方面,特别是对于网络通信。为了确保传输中数据的机密性和完整性,开发者需要依赖关于远程端点的加密和身份验证。开发者可能会通过使用低版本API 或第三方库来实现的多种方式,禁用平台安全默认设置或绕过安全机制。
在确保移动应用程序,在任何情况下都能建立安全连接。它侧重于验证应用程序是否为网络通信建立了安全、加密的通道。同时涵盖开发者可能选择仅信任特定的情况证书颁发机构 (CA),通常称为证书锁定或公钥锁定。
MASVS-NETWORK-1 应用程序保护所有网络流量。确保传输中的数据的隐私和完整性,对于通过网络进行通信的任何应用程序都至关重要网络。通过加密数据和验证远程端点来完成的。此控件可确保应用程序实际上正在设置在任何情况下建立安全连接。
MASVS-NETWORK-2 应用程序对所有远程端点执行身份固定开发商的控制权。信任框架或设备的所有默认根CA不同,此控件将确保只有非常具体的CA是可信的。这种做法通常称为证书锁定或公钥锁定。
◆ ◆ ◆ ◆
MASVS-PLATFORM
平台交互
◆ ◆ ◆ ◆
移动应用程序的安全性,很大程度上取决于它们与移动平台的交互,这涉及到通过使用平台提供的进程间通信 (IPC) 机制和WebView公开数据或功能。这些机制可能被攻击者或其他已安装的应用程序利用,从而可能危及应用程序的安全性。
这机制包括平台提供的IPC机制的安全使用、防止敏感数据泄露和功能暴露的WebView 配置,以及敏感数据在应用程序用户中的安全显示界面。通过实施这些机制,应用程序开发者可以保护用户的敏感信息并防止攻击者未经授权的访问。
MASVS-PLATFORM-1 应用程序安全地使用IPC机制。这机制确保所有涉及IPC机制的交互都是安全的。
MASVS-PLATFORM-2 应用程序安全地使用 WebView。这控件确保WebViews 被安全地配置以防止敏感数据泄漏以及敏感功能暴露。
MASVS-PLATFORM-3 该应用程序安全地使用用户界面, 此控件可确保数据不会因自动生成的屏幕截图或通过例如意外泄露或与他人共享设备原因而无意中泄露平台机制。
◆ ◆ ◆ ◆
MASVS-CODE
代码质量
◆ ◆ ◆ ◆
移动应用程序有许多数据入口点,包括UI、IPC、网络和文件系统,这些入口点可能会接收到被不受信任的修改数据。通过将此数据视为不受信任的输入和在使用前对其进行适当的验证和清理,开发者可以防止经典的注入攻击,例如 SQL注入、XSS或不安全的反序列化。同时其他常见的漏洞,例如内存溢出漏洞,在渗透测试中很难检测到,但很容易通过安全架构和编码实践。
此类别涵盖由外部来源引起的编码漏洞,开发者应验证和清理所有传入数据以防止注入攻击和绕过安全检查。还应该执行应用程序更新并确保该应用程序运行最新的平台以保护用户免受已知漏洞的侵害。
MASVS-CODE-1 该应用程序需要最新的平台版本。此控件可确保应用程序在最新的平台版本,让用户拥有最新的安全保护。
MASVS-CODE-2 应用程序具有强制执行应用程序更新的机制。这个控件确保有一种机制可以强制用户更新应用程序,然后才能继续使用它。
MASVS-CODE-3 应用程序仅使用没有已知漏洞的组件。为了真正安全,应该对所有应用程序组件执行完整的白盒评估。
MASVS-CODE-4 应用程序验证并清理所有不受信任的输入。此控件确保此数据被视为不受信任的输入,并在它被使用之前得到适当的验证和清理。
◆ ◆ ◆ ◆
MASVS-RESILIENCE
对抗逆向工程和篡改
◆ ◆ ◆ ◆
代码混淆、反调试、防篡改等防御措施,能有效抵御逆向工程和特定客户端攻击的能力。通过添加多个应用程序的安全控制层,使攻击者更难成功进行逆向工程并从APP中提取有价值的功能数据或敏感数据。
此类别的控件确保应用程序在受信任的平台上运行,防止篡改在运行时并确保应用程序预期功能的完整性。防止通过使用静态分析,分析应用程序功能实现方式来理解并防止允许攻击者在运行时修改代码的动态分析和检测。
MASVS-RESILIENCE-1:该APP验证平台的完整性。此控件尝试验证操作系统是否受到损害,因此可以使用其安全功能信任。
MASVS-RESILIENCE-2:该应用程序实现防篡改机制,此控件尝试确保应用程序预期的完整性通过防止修改原始代码和资源来实现功能。
MASVS-RESILIENCE-3 该应用程序实现抗静态分析机制, 这控件试图通过使其尽可能难以理解来阻碍理解应用程序如何使用静态分析工作。
MASVS-RESILIENCE-4:该应用程序实现反动态分析技术。此控件旨在使执行动态分析尽可能困难,并防止允许攻击者在运行时修改代码的动态检测。
本文作者:编码安全
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/202069.html