跳过内容

MASWE-0067: 未禁用可调试标志

Beta 版内容

此内容处于 beta 版,仍在积极开发中,因此随时可能发生变化(例如结构、ID、内容、URL 等)。

发送反馈

概述

移动应用程序通常包含一个配置标志,用于确定应用程序是否可调试。虽然此标志在开发过程中至关重要,但在生产环境中将其保持启用会带来严重的安全风险。可调试的应用程序允许攻击者附加调试器、检查内存、操纵执行流程并绕过客户端控制,即使在未获得root权限或未越狱的设备上也是如此。它还可能通过详细日志或开发人员工具暴露敏感信息,否则这些信息将无法访问。

影响

  • 读写内存:攻击者可以读写应用程序的内存空间,这可能导致敏感信息泄露,例如加密密钥、API 密钥、用户凭据或令牌,这些信息如果不是通过此方式,则由于未存在于应用程序代码中或未存储到磁盘上而无法访问。
  • 绕过安全控制:攻击者可以通过操纵应用程序的执行流程来绕过安全控制,例如身份验证和授权机制。
  • 执行未经授权的代码:攻击者可以在应用程序的上下文中注入并执行任意代码,从而导致对设备或应用程序数据的进一步利用。例如,攻击者可以将 Frida 等逆向工程工具注入应用程序,即使在未获得root权限或未越狱的设备上也是如此。
  • 访问敏感日志:攻击者可以访问可能包含敏感信息的日志,例如用户凭据、API 密钥或其他本应无法访问的敏感数据。这可能导致对应用程序或设备的进一步利用。

引入方式

  • 构建设置配置错误:配置错误的构建设置可能意外地使应用程序处于可调试状态,从而使其面临安全漏洞。这可能是由于构建变体选择不当、CI/CD 配置错误或将调试设置错误地应用于生产环境所致。

缓解措施

  • 确保应用程序配置文件中的可调试标志在生产构建中未启用。例如,通过使用构建变体或风味(flavours)来分离调试和发布配置,确保可调试标志仅在调试构建中启用。

测试

MASTG-TEST-0227: WebView 启用调试 MASTG-TEST-0226: AndroidManifest 中启用可调试标志 MASTG-TEST-0261: entitlements.plist 中启用可调试权限