OWASP Mobile Top 10 是由非营利组织 Open Web Application Security Project 发布的移动应用程序十大最严重漏洞清单。该文档每隔几年根据安全社区的数据和真实事件进行更新。根据 OWASP Foundation(2024)的数据,超过 75% 的商业移动应用程序包含此列表中的至少一个漏洞。学习 Mobile Top 10 有助于开发人员和测试人员在架构设计阶段建立防护。 OWASP, 2024
要点
OWASP Mobile Top 10 是专门针对移动应用程序的最严重安全风险的标准化列表。与适用于 Web 应用程序的通用 OWASP Top 10 不同,移动版本考虑了平台的特性:设备上的本地存储、与传感器的交互、离线模式以及应用商店的特点。该文档自 2010 年起发布,每 2-4 年修订一次:2024 年的当前版本包括 M1(凭证使用不当)和 M8(安全配置错误)等类别。该项目得到全球 500 多名志愿者的社区支持。
最初 OWASP Top 10 只涵盖 Web 应用程序,但 2010 年代移动开发的增长需要一份单独的文档。第一个版本的 Mobile Top 10 于 2011 年发布,仅包含 7 个项目。到 2024 年,列表已扩展到 10 个类别,每个类别包含多个具体的攻击场景。该文档的主要目的是为开发人员和安全团队提供一种通用语言来讨论风险并确定修复的优先级。列表的定期更新反映了威胁格局的变化:新 API 的出现、操作系统(Android、iOS)的演进以及 Positive Technologies 和其他研究中心报告中描述的新攻击技术。
Mobile Top 10 的编制方法基于来自实际项目的数据:分析移动应用程序渗透测试的结果、事件报告和漏洞研究。每个类别根据两个参数进行评估:发生频率(Incidence Rate)和潜在技术影响(Technical Impact)。这些指标的组合形成最终排名。与主观列表不同,OWASP 使用开放数据:社区的任何成员都可以通过项目的 GitHub 存储库提交添加新类别的请求。对于 2024 年的当前版本,已经处理了来自 25 个国家的超过 30 万次安全测试,这使得统计数据对全球移动开发生态系统具有代表性。此外,OWASP 还发布了 MASVS(移动应用程序安全验证标准)——一套详细的安全要求,包括分布在 8 个类别中的 80 多项具体检查。MASVS 被用作应用程序认证的基础和渗透测试的检查清单:每个要求都引用 Mobile Top 10 中的一个类别,确保标准与风险列表之间的完全可追溯性。
让我们看看 OWASP Mobile Top 10 2024 中三个最严重的类别,它们涵盖了移动项目中所有安全事件的 70% 以上。每个类别包括具体的利用场景和保护建议。
该类别(M1)涵盖开发人员 未按预期用途 使用 API 和平台机制的情况。典型示例:Android 上的 Intent 注入、iOS 上的开放 Deep Link 处理器、Keychain 和 SharedPreferences 的错误使用。攻击者可以发送特制的 Intent 并获取其他应用程序或组件的数据。根据 NowSecure(2023)的报告,22% 的测试 Android 应用程序包含 Intent 重定向类型的漏洞。保护措施包括:严格验证输入数据、检查 Intent 来源以及为导出的组件使用权限。
不安全的数据存储(M2)是移动应用程序中最常见的问题。当敏感数据(访问令牌、密码、个人数据)以开放形式或保护不足的方式存储时就会出现。漏洞的典型来源:未加密的 SQLite 数据库、未使用 EncryptedSharedPreferences 的 SharedPreferences、调试模式下记录数据。根据 OWASP Foundation(2024)的数据,Google Play 上超过 60% 的免费应用程序以未加密形式存储至少一种类型的敏感数据。解决方案——使用 Android EncryptedSharedPreferences、iOS Keychain 以及在写入本地存储之前加密数据。
M3 类别——不安全的通信——包括应用程序与服务器之间数据传输通道的漏洞。缺乏 HTTPS、SSL 证书验证不正确、使用过时的 TLS 1.0/1.1 协议——所有这些问题都允许攻击者通过中间人攻击拦截流量。当应用程序通过不安全通道处理敏感数据(银行交易、医疗信息)时,情况尤其危险。2023 年,NCC Group 的研究人员发现 12% 的流行金融应用程序使用了错误的 TLS 配置。建议:强制使用带有证书固定的 HTTPS,并在生产构建中放弃 HTTP。
根据 OWASP 方法论 测试移动应用程序的安全性包括几个阶段:静态代码分析(SAST)、动态分析(DAST)和手动测试(渗透测试)。每个阶段旨在识别 Mobile Top 10 中的特定漏洞类别。
对于自动化分析,OWASP 建议使用 MobSF(移动安全框架)——一个开源工具。MobSF 对源代码和二进制文件进行静态分析,检查清单配置,分析权限并识别 Mobile Top 10 中的漏洞。对于动态分析,使用 Burp Suite(用于拦截流量的代理)和 Frida(运行时分析工具)。这些工具的组合覆盖了列表中 80% 以上的类别。在 CI/CD 管道中使用 MobSF 进行定期测试可以在开发的早期阶段发现漏洞,并将修复成本降低 60-70%。SAST 和 DAST 工具集成到管道中应通过 Gradle/Maven 插件或 iOS 构建中的 Fastlane 步骤进行自动化。
运行 MobSF 后,开发人员会收到带有颜色指示的报告:红色——严重漏洞,橙色——中等风险,黄色——低风险。每个警告都包含对相应 OWASP Mobile Top 10 类别的引用、问题描述和修复建议。重要的是不仅要消除红色警告,还要分析橙色警告:其中许多(例如,导出的 Activity 没有保护)组合起来可能为攻击者提供攻击向量。建议在每次发布前实现零红色警告和不超过 2-3 个橙色警告。MobSF 报告还包括应用程序权限分析:任何多余的权限(例如,计算器中的相机访问)都被记录为违反最小权限原则,应从清单中删除。对于 iOS 应用程序,MobSF 对 .ipa 文件进行类似分析,包括检查 Info.plist 中的 ATS 异常以及分析 Mach-O 二进制文件中不安全 API(如 NSAllowsArbitraryLoads)的使用。
让我们看一个使用 MobSF 对 Android 应用程序进行静态分析的示例,以识别 OWASP Mobile Top 10 中的漏洞。代码显示了一个典型错误——在 SharedPreferences 中不安全地存储令牌。
class InsecureStorage {
private val prefs = context.getSharedPreferences("my_app", Context.MODE_PRIVATE)
fun saveToken(token: String) {
prefs.edit().putString("auth_token", token).apply()
}
fun getToken(): String? {
return prefs.getString("auth_token", null)
}
}
MobSF 在分析此类代码时会发出关于不安全数据存储的警告(类别 M2 — Insecure Data Storage)。修正后的版本使用 AndroidX Security 库中的 EncryptedSharedPreferences。在存储级别正确实现数据加密符合 OWASP 建议,并防止在物理访问设备时令牌泄露。实施 EncryptedSharedPreferences 后,漏洞被消除,MobSF 报告中相应警告的消失证明了这一点。
class SecureStorage(context: Context) {
private val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
private val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun saveToken(token: String) {
securePrefs.edit().putString("auth_token", token).apply()
}
}
常见问题
OWASP Mobile Top 10 是移动应用程序中最常出现的十大最危险漏洞的列表。该文档帮助开发人员了解在创建安全应用程序时需要注意什么。
该列表大约每 2-4 年 更新一次。最新版本于 2024 年发布。更新考虑了移动平台的变化、新 API 的出现以及攻击方法的演进。
Mobile Top 10 考虑了移动平台的特性:本地数据存储、与传感器交互、Android Intent 系统、离线模式以及应用商店发布特点,这些在 Web 版本中是不存在的。
根据 OWASP Foundation 的统计数据,最常见的是 M2 — Insecure Data Storage(不安全的数据存储)。它在所有类别的测试移动应用程序中出现在超过 60%。
从安装 MobSF(一个免费的静态分析工具)开始。上传 APK 或应用程序的源代码,MobSF 将自动显示项目中存在哪些 Mobile Top 10 类别。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。