什么是移动应用安全及其为何重要?
安全测试的主要目的是识别和缓解软件应用和系统中的漏洞和弱点,以保护它们免受威胁和攻击。但是什么是移动应用安全?它与桌面和 Web 应用的安全措施有何不同?在保护您的移动应用时,理解这一概念至关重要。
鉴于企业 66.8% 的服务是通过移动应用消费的,测试这些应用的安全并建立安全策略变得显而易见。
虽然企业可能倾向于使用适用于 Web 应用或源代码的通用工具来涵盖其移动应用安全测试,但由于移动端独特的攻击面(Intents、URL Schemes、Permissions、Cross App Interaction、Shared Preferences...)、特定类别的漏洞、操作系统的特征以及可用于开发移动应用的众多框架(Native、Flutter、Xamarin、React Native、Cordova、Ionic...),这种方法将很快暴露出其局限性。因此,为了真正回答“什么是移动应用安全?”这个问题,我们需要对这些移动端特定的挑战和漏洞有深入的了解。
移动应用安全测试(Mobile App Security Testing - MAST)需要了解移动应用和安全领域,并全面覆盖其在设备上存储的数据、传输到后端的数据以及后端漏洞方面的攻击面。 它必须涵盖原生、混合和基于 Web 的移动应用程序,因为每个框架在访问和与硬件交互时都有自己的逻辑,如果理解不正确,这可能会造成真正的风险。
什么是移动应用安全?
这是一个通过全面测试(兼顾原生、混合和基于 Web 的移动应用)来保护移动应用攻击面的过程。
为什么移动应用安全很重要?
移动应用安全至关重要,因为安全漏洞可能导致数据窃取、财务损失以及对用户信任的损害,这对个人和企业都会产生严重后果。近年来发生了多起备受瞩目的移动应用黑客攻击事件,说明了移动应用安全的重要性。WhatsApp 间谍软件攻击(2019 年的 WhatsApp Spyware Attack)允许攻击者在用户的手机上安装间谍软件;或者英国航空应用事件(2018 年的 British Airways App),攻击者通过该航空公司移动应用和网站的一个漏洞访问了约 380,000 名用户的个人和财务信息。此外,保护移动应用有助于防范恶意软件、未经授权的访问和其他漏洞,确保用户数据的完整性、机密性和可用性得到维护。
Task hijacking(任务劫持)是对移动应用产生重大影响的多种攻击之一,这是由于 Android 的特定行为导致的,该行为会导致用户在与正常应用交互时将敏感数据泄露给恶意应用。
银行恶意软件(Banking malware)在 2019 年大规模利用了任务劫持(2020 年增加了 45%),使攻击者能够在在线银行会话期间拦截用户的敏感数据和凭据。
此外,移动应用严重依赖第三方依赖项;因此,必须分析这些依赖项,以避免由于存在漏洞的依赖项而削弱应用的安全性。例如,最常用的 Dart 包之一 Dio 遭受了多个高危(High severity)问题,再次强调了什么是移动应用安全以及为什么必须妥善管理它的重要性。
移动应用安全测试过程可以手动执行,也可以利用采用各种技术的自动化工具来执行。
- 来源: datareportal.com
如何测试移动应用的安全?
渗透测试(Penetration testing)
渗透测试(pentesting)是一个由第三方实体执行的、主动且系统化的安全评估过程,通常在软件开发生命周期(SDLC)的后期阶段进行。测试人员使用自动化工具和手动技术来识别目标应用中的漏洞、错误配置和弱点。
渗透测试通常用于满足监管要求,并经常根据特定目标在限定的时间范围内量身定制。
虽然有效,但它是一个昂贵、耗时的过程,且只能捕捉到特定时间点的有限视图。根据应用程序的复杂性、测试的深度和渗透测试的范围,移动应用程序渗透测试的持续时间通常为一到四周。
应用程序开发者通常致力于每 3 到 6 周向应用商店发布一次更新。以不频繁的时间间隔进行渗透测试与开发团队的速度不匹配,并且在渗透测试周期之间可能会引入新的漏洞。
自动化移动应用安全测试
自动化移动应用安全测试依靠各种工具来分析软件并识别潜在漏洞。
自动化工具无缝集成到软件开发生命周期(SDLC)中,并融入持续集成和持续交付(CI/CD)流水线中。
这些工具提供了一种经济高效的解决方案,使开发团队能够进行定期、快速和有效的安全评估,并迅速解决检测到的任何问题。 它们提供全面的应用代码覆盖,可以发现各种安全发现,确保对潜在威胁的强大防御。
自动化移动应用安全测试具有可扩展性,使拥有众多应用程序或高开发速度的开发团队能够在不影响其开发流程的情况下测试其更改。
实施自动化移动应用安全测试的企业中有 96% 按时满足了应用商店安全要求或合规性,并且 83% 确认达到了其解决高(high)危和中(medium)危发现的服务水平目标(SLO)。
*来源 Gartner
自动化移动应用安全测试工具的一个主要缺点是它们报告的误报发现数量。因此,检查误报率和策略非常重要,以避免大量无用的发现淹没开发者。
漏洞赏金(Bug Bounty)
众包应用安全测试(漏洞赏金计划)为移动应用安全测试提供了一条额外的途径。
漏洞赏金计划可以向具有不同经验水平的各类测试人员开放安全测试。根据该计划的受欢迎程度和声誉,覆盖范围可以是详尽且持续的,因为它在整个计划期间保持活跃,并且测试人员可能采用不同的方法来识别安全缺陷。
漏洞赏金计划可以作为现有安全协议的宝贵补充,但不应作为内部安全流程的直接替代方案,因为测试应用程序的安全必须从设计阶段开始一直持续到发布;否则,修复过程将变得低效,并且攻击者可能会利用缺乏安全测试的情况来利用这些漏洞。
一个重大挑战是可能收到大量来自参与者的不正确或低质量报告。这可能导致组织和研究人员之间进行大量的沟通,从而消耗时间和资源。对众多误报或模糊报告进行分类可能会令人沮丧,并可能延误合法安全问题的解决。
移动应用安全测试技术
移动应用安全测试依赖于各种技术,通常分为静态分析、动态分析、交互式/行为分析和 API/后端测试。但需注意,这些技术并不相互排斥,可能会有所重叠。
静态分析
静态分析构成了一种测试方法,通过分析应用程序的源代码或二进制代码以及其他资源来识别特定的安全问题。
这通过多种能够进行自动化检查而无需运行应用程序代码的分析技术来实现:
- Configuration Checks(配置检查):检查不安全的设置。这些设置包括平台参数(如
AndroidManifest.xml、Info.plist设置)、Cordova Framework参数、网络配置等。 - 3rd Party Dependencies(第三方依赖项):对应用程序依赖项进行指纹识别,以识别出具有已知漏洞的依赖项。依赖项可以直接作为插件声明或编译在应用程序中。
OpenSSL依赖项是移动应用程序中常见的用例,它可能捆绑着易受攻击的版本。 - Hardcoded Secrets(硬编码凭据):提取所有直接嵌入到移动应用源代码中的敏感信息,例如密码、API 密钥或加密密钥。
Cloud provider(云提供商)密钥或SSH 私有证书是移动应用中常见的高危发现。 - Taint Analysis(污点分析):用于识别和跟踪敏感信息(污点)在移动应用代码内的流动以及其与外部实体(如用户输入、系统资源或网络通信)的交互。这项分析对于识别与数据泄露、注入攻击或对敏感数据处理不当相关的潜在安全漏洞至关重要。
动态分析
动态分析是一种测试方法,用于监控应用程序在真实设备或模拟器/虚拟机上的行为。此方法在发现仅在应用活跃运行时(例如,在应用与服务器交互的实例中)才显现的漏洞时特别有价值。 当应用程序运行时,动态分析会监控与文件系统(存储、数据库)、进程间通信(IPC)、内存访问和网络的所有交互,以识别有关敏感数据、会话管理、身份验证、授权过程以及数据传输分析的安全缺陷。 根据谷歌的统计数据,20% 的移动应用程序仍使用明文流量(clear text traffic)进行通信,41% 具有不正确或不安全的 TLS 配置。
交互式/行为分析
除了动态分析之外,行为测试会在主动运行测试的同时评估应用程序的行为。它使用 instrumentation(插桩)来跟踪和分析数据在应用内的流动情况,并标记出调用易受攻击的模块或使用危险参数的所有危险模式。
移动应用程序的插桩有多种技术,由移动应用安全测试人员根据其框架(原生操作系统 vs JavaScript vs .NET vs Flutter)选择正确的方法对应用程序进行插桩。
与设备的交互可以是手动的也可以是完全自动化的,尽管首选自动化,并且测试应最大化应用程序覆盖率以验证代码中的最大路径数量。
API/后端分析
API/后端分析对于移动应用安全测试至关重要。它侧重于扫描 API、后端和外部通信。 此分析评估与设备通信的后端服务器和数据交换的安全性。 后端分析的目的:
-
检查后端服务器上的安全缺陷。多家企业可能依赖其他工具来评估此部分,因为后端通常是移动和 Web 应用之间共享的。然而,从设备的角度验证它非常重要,因为某些假设可能由 Web 浏览器强制执行,但不会在移动应用中强制执行。 例如,在通过 Web 浏览器访问的网站中,应用了同源策略(
same-origin policy),该策略限制 Web 内容只能与同一域的后端服务器进行交互。这意味着网页中执行的JavaScript无法直接访问或操作不同域的数据。该策略提供了一层安全保护,以防止跨站脚本 (XSS)攻击和数据泄露。但是,在移动应用程序的上下文中,这种假设并不总是适用。移动应用具有更灵活的方式来共享和访问数据。例如,它们可以使用原生 JavaScript 接口、自定义 URL 方案(custom URL schemes)或特定 API,使它们能够绕过same-origin policy的限制。这种灵活性可能对应用功能有利,但也会引入潜在的安全风险。 -
检查从应用程序发送的数据的隐私性,因为应用程序在广告、分析(analytics)、监控(monitoring)等方面严重依赖第三方。从用户设备中提取的数据可能过于侵入性,甚至可能是违法的。 一个常见的用例是收集
设备 ID(device IDs)、设备位置和IP的分析库,这些被认为是个人身份信息 (PII),多项隐私立法保护用户免受此类做法的侵害。
自动化移动应用安全测试工具的类型
开源测试工具
开源工具为启动移动应用安全测试提供了一个宝贵的起点。 它们的成本效益、透明度和协作开发使组织能够有效地支持其数字防御。 这些工具由网络安全专业人员组成的全球社区维护,提供多功能性和可定制性,涵盖了广泛的安全测试需求。
尽管开源安全测试工具具有众多优势,但必须认识到潜在的缺点。这可能包括:
- 有限的支持:开源工具可能无法提供与商业工具同等水平的客户支持。用户通常依靠社区论坛和文档来获取帮助。
- 陡峭的学习曲线:一些开源工具可能设置和使用起来很复杂,用户需要经历较长的学习过程。
- 缺乏企业级功能:商业工具可能会提供专为企业环境量身定制的高级功能和集成选项,而这些可能是开源工具无法提供的。
- 质量参差不齐:开源工具的质量差异很大,并非所有工具都适合进行关键的安全评估。
- 维护挑战:组织必须确保定期更新和修补开源工具以解决安全漏洞。
- 手动工作:用于移动应用安全测试的开源工具往往需要大量手动工作来准备测试环境和设备以及执行测试。
- 法律和许可问题:用户必须了解使用开源工具时的许可条款和潜在法律注意事项。
源代码分析工具
多家企业依靠源代码分析(SAST)来覆盖其移动应用的安全测试。源代码分析工具提供对应用源代码深入全面的检查,实现潜在漏洞和安全弱点的早期检测。它们可以识别如不安全的数据存储(insecure data storage)、不正确的输入验证(improper input validation)和薄弱的身份验证机制等问题,帮助开发者在部署应用之前解决这些顾虑。此外,源代码分析工具通常与开发环境集成,方便开发者将安全检查纳入其工作流程。但是,这些工具可能无法捕获所有漏洞,特别是那些与运行时行为(runtime behaviors)或第三方依赖项相关的漏洞。为了最大限度地发挥源代码分析工具的优势,组织必须将它们与其他测试技术(如动态分析和 API 分析测试)结合起来,以实现全面的移动应用安全测试。
移动端专用的应用安全测试工具
为了涵盖移动应用独特的攻击面并确保对操作系统和框架特性的支持。建议选择专门的移动应用安全扫描器,在应用程序的开发和发布生命周期中对其执行所有三种主要类型的分析。移动应用安全扫描器提供用户友好的界面,安全专家和开发者均可访问。它们可以快速扫描移动应用中已知的各种漏洞,帮助组织高效地识别和修复问题。它们提供与 CI/CD 流水线的无缝集成,以减少使用摩擦。此外,它们通常提供定期更新以应对新出现的威胁,使应用免受不断演变的安全风险的影响。然而,扫描器可能无法发现应用程序特定的独特或自定义漏洞,并且可能会产生假阴性(False Negative),从而遗漏某些安全问题。这些工具的成本也可能是一个缺点,特别是对于小型组织而言。
Ostorlab 如何帮助您实施高效的移动应用安全测试方法?
Ostorlab 通过提供一套根据移动应用安全的独特需求量身定制的全面功能和服务,在实施高效的移动应用安全测试(Mobile Application Security Testing)方法中发挥着关键作用。
-
移动应用安全专业化:Ostorlab 专门致力于移动应用安全,专注于移动平台的挑战。这种专业化确保了功能和服务经过精细调整以应对以移动为中心的威胁。
-
自动化安全测试:Ostorlab 提供自动化安全测试功能,使组织能够将安全评估无缝集成到其开发流水线中。这种自动化确保了安全检查在整个 SDLC 中得到一致的应用。
-
快速且可操作的见解:Ostorlab 的工具提供对移动应用安全的快速评估,并提供可操作的见解和建议。这种速度和清晰度使开发团队能够迅速识别并解决安全漏洞。
-
SDLC 集成:Ostorlab 促进直接与 SDLC 集成,确保安全测试成为开发过程中不可或缺的一部分。这种集成最大限度地减少了对开发人员工作流程的干扰。
-
持续监控:Ostorlab 支持对应用程序的安全状况进行持续监控。此功能使团队能够跟踪不同构建版本之间安全状态的变化,迅速定位并修复在开发过程中引入的漏洞。
-
全面覆盖:Ostorlab 的解决方案涵盖了广泛的安全测试技术,确保对移动应用进行彻底的检查以发现潜在漏洞。
-
易于使用:Ostorlab 友好的用户界面和工具使安全专家和开发者都能够轻松使用,从而促进协作和高效的安全测试。
-
高质量的支持:Ostorlab 的支持团队可以随时为用户在移动应用程序开发的任何阶段可能遇到的所有问题和请求提供帮助、修复和建议。
通过利用 Ostorlab 的专业知识和工具,组织可以建立一种强大的移动应用安全测试(Mobile Application Security Testing)方法,保护其移动应用免受不断演变的威胁,同时无缝融入其开发过程。