如何修改com.google.firebase.iid.FirebaseInstanceIdReceiver权限
解决MobSF上报com.google.firebase.iid.FirebaseInstanceIdReceiver权限异常问题
该异常的触发原因是你集成的Firebase Messaging组件中,内置的FirebaseInstanceIdReceiver广播接收器未配置正确的权限限制,存在被恶意应用伪造广播触发应用逻辑的风险,因此被MobSF判定为安全问题。
修复步骤
- 优先升级Firebase Messaging依赖到最新稳定版
谷歌在Firebase BOM 28.0.0及以上版本已经正式废弃FirebaseInstanceIdReceiver,改用默认配置合规的FirebaseMessagingReceiver替代,无需手动修改清单配置即可解决该异常。你可以直接修改Gradle依赖,将com.google.firebase:firebase-messaging升级到23.0.0及以上版本,或者更新Firebase BOM版本即可。 - 若必须使用旧版Firebase Messaging,手动修改AndroidManifest.xml配置
如果业务兼容原因无法升级依赖,可以在AndroidManifest.xml中添加如下配置,覆盖SDK默认的接收器声明:
<manifest ... xmlns:tools="http://schemas.android.com/tools"> ... <application ...> <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="false" android:permission="com.google.android.c2dm.permission.SEND" tools:replace="android:exported,android:permission"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="${applicationId}" /> </intent-filter> </receiver> </application> </manifest>
配置说明:
- 添加
android:permission="com.google.android.c2dm.permission.SEND"限制后,只有系统FCM服务有权限向该接收器发送广播,拦截第三方应用的恶意调用 - 明确设置
android:exported="false",禁止第三方应用访问该组件,适配Android 12及以上版本的组件导出规则 - 加上
tools:replace属性避免清单合并时你的配置被SDK默认值覆盖 - 验证修复结果
打包APK后用Android Studio自带的Apk Analyzer打开APK,检查AndroidManifest.xml中的FirebaseInstanceIdReceiver配置是否符合上述要求,确认配置生效后重新运行MobSF扫描即可消除该异常上报。
内容的提问来源于stack exchange,提问作者Eleonora Rocchi
相关产品推荐
相关产品推荐

