探索移动应用程序领域
学习目标
完成本单元后,您将能够:
- 介绍移动应用程序版图。
- 确定移动应用程序安全性的普遍性。
- 定义移动应用程序安全术语。
- 区分 Web 和移动应用程序安全性。
- 介绍移动应用程序攻击面。
开始之前
如果您已完成应用程序安全基础知识和应用程序安全工程师责任模块,那么您就已经了解了应用程序安全性和应用程序安全工程师如何保护应用程序。现在我们来谈谈如何提高移动应用程序的网络安全。
移动应用程序领域
我们的智能手机可以做很多不可思议的事情 - 拍摄 4K 视频、翻译外语、听写、监测心率等等。随着技术的快速发展,人工智能 (AI)、区块链和第五代蜂窝网络 (5G) 等技术的集成彻底改变了我们对移动应用程序 (app) 的看法。
及时了解快速变化的趋势并掌握扎实的技术知识是移动应用程序开发人员为几乎每台设备创建新应用程序的关键。对于那些希望应用程序实现网络安全的人来说,这一点也比以往任何时候都更加重要。
随着移动设备和应用程序的日益普及,越来越多的公司转向移动为本的设计策略。移动为本是一种理念,旨在通过从最小的屏幕(移动设备屏幕)开始设计,为用户创造更好的体验。大多数客户与公司的初始交互都是在他们的智能手机和平板电脑上,这些智能手机和平板电脑有其自身的安全复杂性,需要全面的移动应用程序安全策略。首先为移动设备设计和制作网站原型,有助于确保在任何设备上都能无缝地获得良好的用户体验。
移动应用程序安全的普遍性
如今,每个大企业都有一个移动应用程序,可以更轻松地与客户建立联系,且越来越多的用户比以往更依赖移动应用程序来完成大部分的数字任务,从看新闻、查看电子邮件和社交媒体到进行网购和银行交易。
这些移动应用程序可以访问大量敏感数据,这些数据必须受到保护,以防止未经授权的访问。通过这些应用程序,企业可以收集可用信息,例如位置、使用情况统计信息、电话号码、喜欢、不喜欢以及用户相关的其他相关指标。如果这些移动应用程序中的数据落入坏人之手,可能会对用户造成损害。
安全专家的目标是降低其组织的移动应用程序安全风险。移动应用程序安全是保护高价值移动应用程序和数字身份免受攻击的做法。攻击包括篡改设备、反向工程、恶意软件、键盘记录器以及其他形式的操纵或干扰。无论是否喜欢,作为开发人员或安全专家,您都需要考虑针对移动应用程序的许多威胁。
定义移动应用程序安全术语
在继续之前,我们先来熟悉一些常见的移动应用程序安全术语。
术语 |
定义 |
---|---|
API |
允许两个应用程序互相通信的软件中介 |
身份验证 |
识别个人的身份 |
授权 |
检查被识别的个人是否具有执行操作所需的权限 |
缓冲区 |
通常,将数据从程序的一个分区移动到另一个分区或在程序之间移动数据时,留出的用于保存数据的内存 |
缓冲溢出 |
一种异常情况,即程序在将数据写入缓冲区时,会溢出缓冲区的边界并覆盖相邻的内存位置 |
开发平台 |
一套使开发人员能够基于合适的技术堆栈开发软件应用程序的标准 |
动态测试 |
一种用于分析代码运行时行为的软件测试方法 |
静态测试 |
一种用于评估应用程序的源代码以检测软件中的缺陷的软件测试方法,无需实际执行软件应用程序的代码 |
用户体验 (UX) 设计 |
一种专注于使应用程序更简单、更内聚、更易于用户浏览的设计方法 |
Web 和移动应用程序安全
Web 应用程序是在网站上运行并由用户通过 Internet 浏览器访问的应用程序。Web 应用程序和可下载应用程序功能类似,但是是在手机浏览器的上下文中执行。Web 应用程序能够很好地适应您所使用的任意设备。他们不是特定系统的本机程序,也不需要下载或安装。
移动应用程序安全侧重于 Android 和 iOS 等平台上移动应用程序的软件安全状况,包括在手机和平板上运行的应用程序。这涉及到在原设计运行平台中、在应用程序开发框架中以及预期的用户群体(例如,员工和最终用户)这一系列环境中评估应用程序的安全问题。与 Web 浏览器相比,移动应用程序可以收集有关用户的更多信息,例如位置、生物识别以及视频和音频数据。
我们来详细了解一下 Web 应用程序和移动应用程序之间的一些差异。
代码
Web 应用程序可以选择在服务器上托管敏感代码,攻击者便无法访问代码;而移动应用程序的客户端设备上有大量代码(包括逻辑和数据)。移动应用程序本质上是公开可用的代码,并且攻击面比 Web 应用程序更大,因为可以从公共商店下载这些应用程序并且可以查看其代码。
网络
对于 Web 应用程序,浏览器可处理传输层安全性 (TLS) 和超文本传输协议安全 (HTTPS),以保护计算机网络中的通信安全。对于移动应用程序,应用程序必须安全地对网络调用进行编码。移动应用程序安全工程师要在敏感数据穿越移动设备运营商的网络和互联网时,通过验证是否使用了 TLS 和 HTTPS 等安全通信方法,来确保敏感数据的安全。
内存
对于 Web 应用,浏览器可以将数据与本地计算机内存和文件隔离开。对于移动应用程序,应用程序必须正确处理本地文件和内存。这意味着移动应用程序安全工程师需要防止出现缓冲区溢出等异常情况,溢出指程序在将数据写入内存区域时会溢出边界并覆盖相邻的内存位置。
分段
浏览器 Sandbox 将 Web 应用程序数据和逻辑彼此隔离,而移动应用程序能够通过写入共享或开放的存储位置来相互共享数据。如果保护不当,用于将移动应用程序连接到服务器以传输数据的后端 API 可能会暴露敏感的医疗、财务和个人数据。
移动应用程序攻击面
攻击面是攻击者可能进入应用程序并泄露数据的所有不同点。移动应用程序的攻击面包括:
-
传输中的数据:传入和传出应用程序的数据和命令的所有路径总和
-
保护这些路径的代码:资源连接和身份验证、授权、活动记录、数据有效性和编码
-
静态数据:应用程序中使用和存储的所有有价值的数据,包括机密和密钥、知识产权、关键业务数据和个人身份信息 (PII)
-
保护数据的代码:加密和校验和、访问审核以及数据完整性和操作安全控制
-
后端 API:用于连接服务和传输数据的接口
作为安全专家,您的工作是完整评估整个移动应用程序攻击面。对于攻击者而言,移动应用程序一直是一个有趣的攻击面。尽管主要移动平台有自己的一套安全控制措施,旨在帮助开发人员构建安全的应用程序,但通常由开发人员从各种安全选项中选择。如果开发人员没有正确地审查安全功能,攻击者则可以轻松得手。
总结
现在您已了解移动应用程序领域,移动应用程序安全的普遍性和移动应用程序安全术语。在下一单元中,您将了解有关移动应用程序安全工程师职责的更多信息,并发现帮助他们取得成功的技能。
资源
-
Trailhead:应用程序安全基础知识
-
Trailhead:移动策略开发
-
外部站点:开放式 Web 应用程序安全项目® (OWASP):攻击面分析备忘单
-
外部站点:Fortinet:攻击面
-
PDF:美国国家标准与技术研究院 (NIST):审查移动应用程序的安全