MobSF扫描提示Firebase等谷歌库使用弱SHA-1算法如何修复?
安卓应用MobSF扫描SHA-1弱哈希告警修复方案
你当前使用的旧版本谷歌Firebase、Play Services依赖内部默认在安全场景使用了SHA-1算法,是触发告警的核心原因,按以下步骤修复:
升级依赖到安全版本
首先将项目中的谷歌相关依赖替换为以下已移除SHA-1安全场景使用的稳定版本:
注意:SafetyNet 已被谷歌正式淘汰,长期方案建议迁移到Play Integrity API,可彻底解决该库带来的所有安全告警// Firebase 相关 com.google.firebase:firebase-messaging:23.4.1 com.google.firebase:firebase-config:21.6.3 // Play Services 基础库 com.google.android.gms:play-services-base:18.4.0 // SafetyNet 库(已废弃,优先迁移到Play Integrity API,暂不迁移可升级到最后稳定版) com.google.android.gms:play-services-safetynet:18.0.1排查自身代码的SHA-1使用
搜索项目代码中是否有主动调用SHA-1的逻辑,通常是MessageDigest.getInstance("SHA-1")相关代码,所有安全相关场景(签名校验、数据完整性校验、密码哈希)必须替换为SHA-256及以上强度的哈希算法,示例:// 替换前 MessageDigest digest = MessageDigest.getInstance("SHA-1"); // 替换后 MessageDigest digest = MessageDigest.getInstance("SHA-256");清理依赖树中的旧版不安全组件
如果升级主依赖后仍有告警,执行./gradlew app:dependencies命令打印完整依赖树,排查是否存在其他间接引入的低版本Play Services、Firebase组件,可通过exclude语法强制使用安全版本,示例:implementation('com.google.firebase:firebase-messaging:23.4.1') { exclude group: 'com.google.android.gms', module: 'play-services-basement' } // 强制引入安全版本的basement组件 implementation 'com.google.android.gms:play-services-basement:18.3.0'验证修复与误报处理
重新打包应用后再次使用MobSF扫描,若告警仍存在,先核对告警指向的具体文件:如果对应文件是谷歌官方依赖内部文件,且上下文是不涉及安全的普通哈希场景(如缓存Key生成、资源标识计算),可判定为误报,走内部安全评估流程申请豁免即可。
内容的提问来源于stack exchange,提问作者Vijayanand Premnath
相关产品推荐
相关产品推荐

