对热衷于手机 Root 的用户来说,Magisk 这款工具就是 Root 的代名词,作为 Android 平台上最成功的 root 工具,之所以大受欢迎的原因之一就是它能够掩盖使用者修改其设备的事实,甚至 Google 官方用于检测设备是否被修改的 SafetyNet API 也一直被它玩弄于股掌之间。不过这好日子马上就到头了,因为在近日 Google 对 SafetyNet 的大更新让它变得更难以被唬过。
对热衷于手机 Root 的用户来说,Magisk 这款工具就是 Root 的代名词,作为 Android 平台上最成功的 root 工具,之所以大受欢迎的原因之一就是它能够掩盖使用者修改其设备的事实,甚至 Google 官方用于检测设备是否被修改的 SafetyNet API 也一直被它玩弄于股掌之间。不过这好日子马上就到头了,因为在近日 Google 对 SafetyNet 的大更新让它变得更难以被唬过。
很多 Android 应用程序都会检测设备的 Root 状态,比如说游戏类、金融服务类等,其中有相当数量的应用程序皆采用了 Google 所提供的 SafetyNet API。基本上,SAfetyNet 会检查设备的 BootLoader 是否被解锁。一般来说,刷机的过程必须解锁 BootLoader 后才能允许用户刷入经过修改的各种 Recovery 、内核等,而 Magisk 为了隐藏自己,所以直接在内核中进行修改,让自己的权限高于 Google Play,在检测流程中建立一个假的安全环境以骗过 SafetyNet,这个方法简单而非常有效。
在之前的 Android 版本中,Google引进一项名为 Key Attestation 的功能,它可以提供设备的安全资讯,最近 Google 在 SafetyNet 导入的新硬件级检测认证就运用了这个功能。它基于证书链认证体系,如果想要骗过它就要从设备的硬件金钥库中拿到相关的密钥,而这又涉及到破解设备的可信执行环境(TEE),先不说后者坚固难以攻破,甚至有些设备直接采用专用的硬件安全模组,破解难度更高。
Magisk 的主力开发者 John Wu 过去几年中一直在与 Google 斗法,让 Magisk 能够存活至今可说是用尽全力,但这次似乎真的碰到铁板,他在 Twitter上面列举出了种种可能的招数,还是没有办法来克服这次 Google 的新安全措施,人人都说“道高一尺,魔高一丈”,或许不用很久又会有其他勇者技术应援,新的解法出现也不是不可能的事情。
So here we go, after years of fun messing around using Magisk, it seems that Google FINALLY decided to “fix” SafetyNet to something useful, and that is to use key attestation to verify device status (after 3 years since introduced to Android’s platform!)
— John Wu (@topjohnwu) March 11, 2020
◎资料来源:XDA Developers