跳转至

Broadcast receiver dynamic registration

广播接收器动态注册

描述

应用程序的一个或多个广播接收器在代码中动态注册,并且未在 AndroidManifest.xml 文件中受到签名权限的保护。所有动态注册的接收器都会被导出。使用恶意应用程序,攻击者可以向导出的接收器广播任意数据,这可能导致调用应用程序的不同组件或执行代码。例如,许多广播接收器被编程为接收 SMS 消息或 GCM 消息。为了正常工作,这些接收器应始终被导出,以接收来自其他应用程序(如 SMS 应用程序或 GCM 框架)的数据。为了保护此类接收器,您应始终在调用 registerReceiver 方法期间声明适当的权限。广播接收器是一个可能被利用的组件,通常用于启动服务,因此强烈建议检查传递给它们的所有外部数据。为了实施最严格并因此最安全的策略,您应通过使用签名权限来最大限度地减少导出的 Intent 数量。

建议

确保您仅导出真正需要能够被任何第三方应用程序启动的广播接收器;或者在 AndroidManifest.xml 文件中创建一个带有 android:protectionLevel="signature" 的权限,并将其用于所有仅由您的应用程序启动的广播接收器,为所有完全不应由第三方应用程序启动的广播接收器设置 exported="false"

链接