移动云中提供安全,移动云平台提供的安全体系从网络层面分为
每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。
本安全移动应用程序指南显示了主要安全漏洞、OWASP 构建/测试 iOS 和 Android 应用程序的最佳实践等。
构建安全的移动APP应用程序是一个困难的过程,尤其是在云中。 必须考虑到iOS和Android等移动平台有着完全不同的体系结构和质量标准。 此外,还需要在后端处理云架构。 本文介绍了前六个安全漏洞、基于OWASP构建/测试iOS和Android APP应用程序的最佳实践,以及iOS和Android指南。 最后,讨论用于移动APP应用的DevSecOps示例。
前三个攻击示例
为了了解移动APP应用安全的重要性,我们来看看三种最著名的移动APP应用黑客,它们会给受影响的企业带来巨大的财务和营销问题。
公园移动突破口
在2021年对park mobile APP的网络攻击中,黑客成功窃取了2100万用户账户。 Security7称,黑客设法窃取了电话号码、车牌号码和电子邮件地址。 所有未加密的数据似乎都是被盗密码。 但是信用卡被加密了,黑客因为钥匙没有被偷,所以无法加密数据。
Juspay数据泄露
为优步、亚马逊、Swiggy、Flipkart提供服务的支付运营商Juspay于2020年8月通过移动APP被黑客入侵。 黑客窃取了信用卡数据、指纹、卡数据等3500万条记录。
Walgreens 移动应用程序泄漏
2020年,Walgreens的移动APP集成了监控个人消息和信息的恶意软件。 其结果是,姓名、处方号码、地址等大量用户数据被泄露。
iOS 和 Android 中的六大 OWASP 安全漏洞类型
在进入iOS、Android指南和OWASP测试指南之前,我们先来看看前六位的OWASP漏洞类型。
我认为这是最重要的漏洞类型列表。 但是,OWASP提供了10个列表,还提供了标准和测试指南。 这些内容将在下一节中介绍。
OWASP 移动应用安全基础
OWASP移动APP安全基础知识可包括多个来源,例如,OWASP移动APP安全认证标准( MASVS )、OWASP移动APP安全测试指南( MASTG )、移动安全列表等等下面的图1详细介绍了移动APP安全的基本内容。
图1:OWASP移动APP安全基础知识
让我们深入了解一下移动APP应用程序列表。
移动应用程序安全检查表
移动APP安全列表是MASTG的一部分。 这是开发团队保护移动APP应用程序时应该包括的一组规则/检查。 包含100多行,按以下类别组织:
架构、设计和威胁建模需要数据存储和隐私要求密码学需要认证和会话管理,网络通信需要平台交互,代码质量和构建设置需要灵活性
每个规则(或检查)都有标识符和说明。 所有规则都有优先顺序标记。 “L1”或“L2”表示APP应用程序应该执行规则/检查。 因为“r”表示这是必要的,所以团队必须实施标有“r”的所有内容。 在OWASP网站上下载完整的示例。
接下来,让我们关注特定平台的指导原则,关注最受欢迎的平台iOS和Android。
iOS 和 Android 中的安全移动应用程序:指南
我们已经接触了一些iOS安全API,我们将继续讨论添加安卓的问题。 以下第一部分收集了iOS API安全功能的指导原则和最佳实践。
Apple App 沙盒、数据保护 API 和钥匙串
Apple App Sandbox提供了隔离APP应用程序并防止访问主系统和其他APP应用程序的API。 确保具有基于UNIX的用户权限且权限较低的“移动”用户运行APP。 它还包括地址空间分配( aslr )和ARMs Never eXecute,可防止与内存相关的安全漏洞,并阻止恶意代码的执行。
数据保护API允许APP应用程序加密和解密文件,并解决验证和逆向工程等安全问题。 每个文件有四个保护级别,默认情况下,在第一次用户验证时进行加密。 但是,为了提供最高等级的保护,需要提高等级。
最后但重要的是钥匙圈。 提供安全的硬件加速数据存储。 iOS提供此API以最高安全级别存储证书和密码。 可以为密钥字符串中的每个项定义特定的访问策略。 特别是当用户需要申请Face ID或Touch ID时,即使项被添加到密钥列中,生物识别注册也不会改变。
图2 :密钥字符串API
Android 加密键值存储、文件加密和加密 API
和iOS一样,Android也有很多类似的功能,可以安全地保存数据。 第一个是键值存储。 您可以使用存储数据SharedPreferences设置存储中项目的可见性。 请注意,默认保存的值不会加密。 因此,恶意软件可能会访问这些数据。
如果需要手动加密数据,可以使用Cryptographic API。 可以使用KeyGenerator生成安全密钥,保存加密的值并提取到Android Keystore中。 为了安全处理文件和外部存储,Android提供了密码学支持库。 支持许多加密算法来加密/解密文件。
HTTPS、SSL 固定和推送通知
安全层是安全APP应用的下一个重要里程碑。 首先,需要确保使用的是HTTPS。 iOS有一个名为apptransportsecurity(ATS )的功能,缺省情况下,它会阻止不安全的连接,因此所有连接都必须使用HTTPS/TLS。 此外,SSL固定功能有助于防止中间人的攻击。 如果系统证书由根证书颁发机构签名,则会验证系统证书。
要使用此功能,APP应用程序必须执行其他服务证书信任验证。 推送通知是需要保护的另一部分。 我们应该使用苹果的推送通知服务( APNs )和UNNotificationServiceExtension扩展功能。 这样,您就可以在敏感的移动APP数据中使用占位符并发送加密消息。
另外,请考虑使用苹果的CryptoKit。 这是在iOS 13中引入的新API,提供以下功能:
散列数据使用消息认证码验证数据,并创建密钥协议和验证签名
Android也有类似的选项。 HTTPS只允许使用TLS传输加密的数据。 SSL固定也是如此。 为了防止中间人攻击,可以对服务器证书执行其他信任验证。
保护 Azure 和 AWS 中的移动应用程序
为了构建安全的APP应用程序,Azure提供了Azure App Center等服务。 允许构建和分发移动APP应用程序,并提供许多安全选项。
数据传输加密——默认支持TLS 1.2 https; 静态加密代码安全——提供了用于分析代码依赖关系和检测安全漏洞验证的工具。 包括Microsoft身份验证库( MSAL )等功能,支持多个授权和相关的令牌流
除了Azure之外,在构建安全的移动APP时,AWS还提供了一些强大的服务。 以AWS Cognito为例。 这是一个用户状态服务,它提供了为用户开发唯一标识的选项。 支持:
安全的APP应用程序身份验证允许开发人员包含用户注册集中在web APP应用程序和移动APP应用程序上的简单登录和访问控制
AWS有自己的服务AWS设备故障。 除了自动化测试和模拟环境外,它还包括验证APP应用依赖性和执行安全检查的功能。 现在,让我们继续使用构建具有安全功能的DevOps流程的示例。
移动应用程序 DevSecOps 示例
在本节中,我们创建了一个DevSecOps场景示例,以提供安全的移动APP应用程序(请参见图3 )。 这个过程可以在最常见的CI/CD平台和云提供商上重用。
Git 操作步骤包括源代码管理触发内部版本时的标准提交/推送操作。运行静态分析和代码检查步骤——验证代码样式、可用性、数据流问题和安全问题(例如xcodestaticanalyzer )。依赖验证步骤——从APP应用程序中使用的库树中提供过多的验证检查。 此验证过程可能会暴露伪造的恶意库,这些库可以操纵代码和窃取个人用户的数据。 检查应用程序日志验证步骤——日志是否包含环境密码、测试令牌和授权数据等敏感数据。 在开发/测试过程之后,APP应用程序包可能包含敏感数据。 这是因为开发人员在调试APP应用程序之后可能不会注意到这些数据。 (也可以在部署到开发/测试环境后执行此步骤。)。质量检查步骤:
将APP应用程序部署到开发/测试环境中,以便QA团队进行测试。
将APP应用程序引入市场营销和市场验证。
图3 :安全移动APP应用的典型DevSecOps流程
结论
本文提供了有关安全移动APP应用的简要指南。 我们发现,OWASP社区有重要的安全基础,OWASP可以作为构建新的APP应用程序和重建现有APP应用程序的强大基础。 了解云服务和DevSecOps示例有助于以最小的努力开始构建安全的移动APP应用程序,从而使攻击者难以破坏APP应用程序。 此外,我们还了解了iOS和Android的安全功能、安全API以及如何正确使用它们。