通过真实案例了解 OWASP Mobile 的 10 大风险

已发表: 2020-01-28

拥有开发 100% 防黑客应用程序的行业记录伴随着责任和基线保证,以我们的名义开发的任何数字解决方案都不会面临安全漏洞。

作为实现这一目标的一种方式,Appinventiv 的质量保证团队熟悉应用程序可能面临的所有可能的安全风险。 了解风险可以很容易地忽略陷阱并编写安全的应用程序。

全面了解OWASP 安全编码实践(开放 Web 应用程序安全项目)有助于我们在确保安全方面处于领先地位它是一个由安全专家组成的在线社区,他们开发了免费文档、学习材料和工具,用于构建安全的移动和 Web 应用程序。

除了其他内容外,他们还编制了一份OWASP Mobile 移动应用程序中的十大安全威胁列表。

虽然OWASP 安全实践文档相当清晰,但企业有时很难将其与实际案例联系起来。

在本文中,我们将为您提供 10 大移动安全风险的基本概述,并举例说明现实世界中每个风险的披露漏洞。 当我们处理您的应用程序时,它将让您深入了解我们在 Appinventiv 所做的准备工作。

在研究风险之前,让我们先看看统计数据。

NowSecure调查了 Google Play 商店中的应用,App Store 发现超过 85% 的应用违反了其中一项风险。

在这些应用程序中,50% 的数据存储不安全,并且相同数量的应用程序存在不安全的通信风险 这是一张图表,显示了OWASP 移动前 10 大风险的发生百分比

owasp mobile top 10 voilation rates

移动应用程序最常见的 10 种威胁列表以及避免它们的最佳实践

M1:平台使用不当

OWASP 安全测试的类别包括滥用设备功能或使用平台安全控制时的故障实例。 它可以包括平台权限、Android 意图、TouchID 的滥用、钥匙串等。

真实案例:

三个 iOS 应用程序:“健身平衡应用程序”、“心率监测器”和“卡路里跟踪器应用程序”因绕过 Apple 的 Touch ID 而曝光。 他们要求用户使用指纹来获取健身信息,同时使用指纹从 App Store 收费。

应避免的最佳做法:

  • 开发者不得允许通过服务器路由进行 Keychain 加密,并将密钥仅保存在一台设备中,以免在其他服务器或设备上被利用。
  • 开发人员必须通过 Keychain 保护应用程序,以存储具有专用访问控制列表的应用程序机密。
  • 开发人员必须获得许可来限制允许哪些应用程序与其应用程序通信。
  • 开发人员必须通过定义显式意图来控制 OWASP Mobile Top 10 列表中的第一个,从而阻止所有其他组件访问意图中存在的信息。

M2:不安全的数据存储

当有人访问丢失/被盗的移动设备或恶意软件或其他重新打包的应用程序开始代表对手行动并在移动设备上执行操作时,OWASP 将其视为威胁。

不安全的数据存储漏洞通常会导致以下风险:

  • 欺诈罪
  • 身份盗窃
  • 物质损失。
  • 声誉受损
  • 外部政策违规 (PCI)

真实案例

Tinder、OKCupid 和 Bumble 等约会应用程序因其不安全的数据存储做法而一再受到审查。 这些应用程序上存在的安全漏洞根据可行性、严重性和可行性而有所不同,除了其他个人帐户活动外,还可能暴露用户的姓名、登录详细信息、消息历史记录甚至位置。

应避免的最佳做法:

  • 对于 iOS, OWASP 安全实践建议使用特意制作的易受攻击的应用程序(如 iGoat)对其开发框架和应用程序进行威胁建模。 这将帮助ios 应用程序开发人员了解 API 如何处理应用程序流程和信息资产。
  • Android 应用程序开发人员可以使用 Android Debug Bridge shell 来检查目标应用程序文件权限和 DBMS 来检查数据库加密。 他们还应该使用内存分析工具和 Android 设备监视器来确保设备内存没有意外数据。

M3:不安全的通信

在设计移动应用程序时,数据以客户端-服务器模型进行交换。 所以,数据传输时,首先要经过设备的运营商网络和互联网。 威胁代理可以在通过网络传输时利用漏洞并拦截敏感数据。 以下是存在的不同威胁代理:

  • 共享您的本地网络的对手 - 受损的 Wi-Fi
  • 网络或运营商设备——手机信号塔、代理、路由器等。
  • 移动设备上的恶意软件。

通过通信渠道拦截敏感数据最终会侵犯隐私,这可能导致:

  • 身份盗窃
  • 欺诈罪
  • 名誉受损。

真实案例:

Rapid7 安全公司披露了儿童智能手表附带的几个漏洞。 这些手表作为父母用于跟踪孩子并向他们发送消息或在他们的智能手表上拨打电话的手表销售。

这些手表本应通过白名单模式通过批准的联系号码联系,但该公司发现过滤器甚至无法正常工作。 手表甚至通过短信接受配置命令。 这意味着黑客可以更改手表设置并使儿童处于危险之中。

Rapid7 的物联网研究负责人 Deral Heiland 说:“您可以确定电话或孩子在哪里,您可以访问音频或给孩子打电话。”

应避免的最佳做法:

  • 开发人员不仅应该寻找应用程序和服务器之间通信的流量泄漏,还应该寻找保存应用程序和其他设备或本地网络的设备。
  • 在传输敏感信息和其他敏感数据时,将 TLS/SSL 应用于传输通道也是要考虑的移动应用安全最佳实践之一。

  • 使用受信任的 SSL 链验证提供的证书。
  • 不要通过彩信、短信或推送通知等替代渠道发送敏感数据。
  • 在提供给 SSL 通道之前,对敏感数据应用单独的加密层。

M4:不安全的身份验证

利用身份验证漏洞的威胁代理通过使用定制或可用工具的自动攻击来实现这一目标。

M4 的业务影响可以是:

  • 信息盗窃
  • 名誉受损
  • 未经授权访问数据。

真实案例

2019 年,一家美国银行遭到网络攻击者的黑客攻击,该攻击者利用该银行的网站漏洞绕过了为保护账户而实施的双因素身份验证。

攻击者通过窃取的受害者凭据登录系统,并在到达必须输入 PIN 或安全答案的页面后,攻击者在 Web URL 中使用了一个经过操纵的字符串,该字符串已将计算机设置为可识别的计算机。 这使他能够跨过舞台并启动电汇。

应避免的最佳做法:

  • 应用安全团队必须研究应用身份验证,并在离线模式下通过二进制攻击对其进行测试,以确定它是否可以被利用。
  • OWASP Web 应用程序测试安全协议必须与移动应用程序相匹配
  • 尽可能使用在线身份验证方法,就像使用 Web 浏览器一样。
  • 在服务器对用户会话进行身份验证之前,不要启用应用程序数据加载。
  • 最终使用本地数据的地方,确保通过从用户登录凭据派生的加密密钥对其进行加密。
  • 持久认证请求也必须存储在服务器上。
  • 安全团队应该小心应用程序中以设备为中心的授权令牌,因为如果设备被盗,应用程序可能会受到攻击。
  • 由于未经授权的设备物理访问很常见,因此安全团队必须从服务器端强制执行定期用户凭据身份验证。

M5:密码学风险不足

在这种情况下,威胁代理是那些对被错误加密的数据进行物理访问的人。 或者恶意软件代表对手行事。

损坏的密码学通常会导致以下情况:

  • 信息盗窃
  • 知识产权盗窃
  • 密码盗窃
  • 侵犯隐私权
  • 名誉受损。

真实案例

有时,DHS 工业控制系统的网络紧急响应小组和飞利浦咨询会发出警报,警告用户飞利浦 HealthSuite Health Android 应用程序可能存在漏洞

该问题被追溯到加密强度不足,将应用程序开放给黑客,他们可以访问用户的心率活动、血压、睡眠状态、体重和身体成分分析等。

应避免的最佳做法:

  • 为了解决这个最常见的OWASP 十大移动风险之一,开发人员必须选择现代加密算法来加密他们的应用程序。 算法的选择在很大程度上照顾了漏洞。
  • 如果开发人员不是安全专家,他们必须避免创建自己的加密代码。

M6:不安全的授权风险

在这种情况下,威胁代理通常能够通过使用定制或可用工具的自动攻击来访问其他人的应用程序。

它可能导致以下问题:

  • 信息盗窃
  • 名誉受损
  • 欺诈罪

真实案例

Pen Test Partners 的信息安全专家入侵了智能汽车报警系统Pandora 从理论上讲,该应用程序用于跟踪汽车,如果被盗则切断发动机并将其锁定直到警察到达。

另一方面,黑客可以劫持帐户并访问所有数据和智能警报功能。 此外,他们可以:

  • 跟踪车辆运动
  • 启用和禁用警报系统
  • 锁定和解锁车门
  • 切断发动机
  • 以 Pandora 为例,黑客可以通过防盗系统的麦克风访问车内讨论的所有内容。

应避免的最佳做法:

  • QA 团队必须通过为敏感命令运行低权限会话令牌来定期测试用户权限。
  • 开发者必须注意,用户授权方案在离线模式下会出错。
  • 防止这种风险的最佳方法是在服务器而不是移动设备上对经过身份验证的用户的权限和角色运行授权检查。

M7:代码质量差的风险

在这些情况下,实体将不受信任的输入传递给在移动代码中进行的方法调用。 这样做的影响可能是技术问题,这些问题可能导致性能下降、内存使用量大和前端架构工作不佳。

真实案例

WhatsApp去年修补了一个漏洞,黑客利用该漏洞在智能手机上安装名为 Pegasus Spyware 的监控恶意软件。 他们所要做的就是在目标电话号码上进行 WhatsApp 音频通话。

只需几个简单的步骤,黑客就能够进入用户的设备并远程访问它。

应避免的最佳做法:

  • 根据OWASP 安全编码实践,代码应该在移动设备中重写,而不是在服务器端修复它们。 开发人员必须注意,服务器端的糟糕编码与客户端级别的糟糕编码非常不同。 意思是,弱服务器端控件和客户端控件都应该单独注意。
  • 开发人员必须使用第三方工具进行静态分析,以识别缓冲区溢出和内存泄漏。
  • 团队必须创建第三方库列表并定期检查更新版本。
  • 开发人员应该将所有客户端输入视为不受信任并验证它们,无论它们来自用户还是应用程序。

M8:代码篡改风险

通常,在这种情况下,攻击者通过第三方应用商店中托管的应用的恶意形式来利用代码修改。 他们还可能通过网络钓鱼攻击诱骗用户安装应用程序。

应避免的最佳做法:

  • 开发人员必须确保应用程序能够在运行时检测代码更改。
  • 必须检查 build.prop 文件是否存在 Android 中的非官方 ROM,并确定设备是否已植根。
  • 开发人员必须使用校验和并评估数字签名以查看是否发生了文件篡改。
  • 一旦发现篡改,编码人员可以确保删除应用程序密钥、代码和数据。

M9:逆向工程风险

攻击者通常会从应用商店下载目标应用,并使用一套不同的工具在其本地环境中对其进行分析。 之后,他们可以更改代码并使应用程序功能不同。

真实案例

Pokemon Go最近发现用户对应用程序进行了逆向工程以了解 Pokemon 的附近并在几分钟内捕捉到它们,因此最近面临安全漏洞的关注。

应避免的最佳做法:

  • 根据OWASP 移动安全,保护应用免受风险的最佳方法是使用与黑客用于逆向工程相同的工具。
  • 开发人员还必须混淆源代码,使其难以阅读,然后进行逆向工程。

M10:无关功能风险

通常,黑客会查看移动应用程序中的无关功能,以便发现后端系统中的隐藏功能。 攻击者将在没有任何最终用户参与的情况下利用他们自己系统中的无关功能。

真实案例

Wifi File Transfer 应用程序的想法是在 Android 上打开端口并允许来自计算机的连接。 问题 没有诸如密码之类的身份验证,这意味着任何人都可以连接到设备并获得其完全访问权限。

应避免的最佳做法:

  • 确保最终构建中没有测试代码
  • 确保配置设置中没有隐藏开关
  • 日志不得包含任何后端服务器进程描述
  • 确保 OEM 不会将完整的系统日志暴露给应用程序
  • API 端点必须有据可查。