跳过内容

MASTG-TEST-0067: 测试端点身份验证

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

请通过提交 PR 来帮助我们:MASTG v1->v2 MASTG-TEST-0067: 测试端点身份验证 (ios)

发送反馈

概述

静态分析

使用 TLS 通过网络传输敏感信息对于安全至关重要。然而,加密移动应用程序及其后端 API 之间的通信并非易事。开发人员通常会选择更简单但安全性较低的解决方案(例如,接受任何证书的解决方案)来促进开发过程,有时这些弱解决方案会进入生产版本,从而可能将用户暴露于 中间人 (MITM) 攻击。请参阅 "CWE-295:不正确的证书验证"

以下是一些应解决的问题:

  • 检查应用程序是否链接到早于 iOS 9.0 的 SDK。 在这种情况下,无论应用程序在哪个版本的操作系统上运行,ATS 都会被禁用。
  • 验证证书是否来自受信任的来源,即受信任的 CA(证书颁发机构)。
  • 确定端点服务器是否提供正确的证书。

确保正确验证主机名和证书本身。 Apple 官方文档中提供了示例和常见陷阱。

我们强烈建议通过动态分析来支持静态分析。如果您没有源代码或者应用程序难以逆向工程,那么拥有可靠的动态分析策略绝对会有所帮助。在这种情况下,您将不知道应用程序使用的是低级还是高级 API,但您仍然可以测试不同的信任评估场景(例如,“应用程序是否接受自签名证书?”)。

动态分析

我们的测试方法是逐步放松 SSL 握手协商的安全性,并检查启用了哪些安全机制。

  1. 将 Burp 设置为代理后,请确保没有将任何证书添加到信任存储 (设置 -> 通用 -> 描述文件),并且停用了 SSL Kill Switch 等工具。启动您的应用程序并检查您是否可以在 Burp 中看到流量。任何失败都将在“警报”选项卡下报告。如果您可以看到流量,则意味着根本没有执行证书验证。但是,如果您看不到任何流量并且您有关于 SSL 握手失败的信息,请按照下一步操作。
  2. 现在,安装 Burp 证书,如 Burp 的用户文档中所述。如果握手成功并且您可以在 Burp 中看到流量,则意味着证书已针对设备的信任存储进行验证,但未执行任何锁定。

如果执行上一步中的说明不会导致流量被代理,则可能意味着实际上已实施证书锁定,并且所有安全措施都已到位。但是,您仍然需要绕过锁定才能测试应用程序。请参阅 绕过证书锁定,了解有关此的更多信息。