Android Firebase 消息传递 SDK 如何防范 Intent 欺骗?

fro*_*tto 3 android firebase firebase-cloud-messaging

我使用 Firebase Messaging 创建了一个简单的项目,并使用以下依赖项。

implementation 'com.google.firebase:firebase-messaging:20.0.0'
Run Code Online (Sandbox Code Playgroud)

我已经构建了该应用程序并检查了其合并的AndroidManifest.xml 文件。Firebase Messaging SDK 唯一导出的组件是以下接收器:

<receiver
    android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

我找不到该权限的定义com.google.android.c2dm.permission.SEND,即使我已经解码了 Google Play Services APK 的 AndroidManifest.xml 并在那里找不到任何内容。除了它的定义之外,它无法阻止恶意应用程序use-permission并广播伪造的意图。另外,由于 Intent 是通过 传递的system_server,接收方无法检查发送方的身份。

Firebase Messageing SDK 如何应对这种威胁?

Dou*_*son 7

从 Play 商店安装的恶意应用程序无法使用任何以“com.google.android”开头的权限。这些是为系统特权应用程序保留的。

Play 服务“后端”应用程序安装在每个具有 Play 商店的设备上,实际上直接处理传入的 FCM 消息。它是一款特权应用程序,并且是唯一使用这些权限将数据发送到您的应用程序的应用程序。

如果您设法root您的设备并安装具有系统权限的恶意应用程序,那么您可能会遇到问题。但这就是当您绕过设备内置的安全措施时所面临的风险。