對熱衷於手機 Root 的用戶來說,Magisk 這款工具就是 Root 的代名詞,作為 Android 平台上最成功的 root 工具,之所以大受歡迎的原因之一就是它能夠掩蓋使用者修改其設備的事實,甚至 Google 官方用於檢測設備是否被修改的 SafetyNet API 也一直被它玩弄於股掌之間。不過這好日子馬上就到頭了,因為在近日 Google 對 SafetyNet 的大更新讓它變得更難以被唬過。
Google 對 Root 工具 Magisk 出手,新版 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