这是 Magisk 应用中一个针对漏洞 CVE-2024-48336 的利用程序,允许本地应用在未经用户同意的情况下静默获取 root 权限。
该漏洞最初由 @vvb2060 报告,并由 @canyie 编写了 PoC。该漏洞已在 Canary 27007 版本中修复。
利用此漏洞静默获取 root 权限并向任意应用授予 root 权限的演示视频:https://github.com/canyie/MagiskEoP/blob/main/screen-20220302-093745.mp4
复现此漏洞的步骤:
名称:Magisk 应用任意代码执行漏洞
别名:Magisk 权限提升漏洞
产品:Magisk
CVE:CVE-2024-48336
报告者:@vvb2060
首次报告日期:2024-08-01
补丁日期:2024-08-21
披露日期:2024-08-24
受影响版本:Manager v7.0.0 ~ Canary 27006
首次修复版本:Canary 27007
问题/错误报告:https://github.com/topjohnwu/Magisk/issues/8279
补丁提交:https://github.com/topjohnwu/Magisk/commit/c2eb6039579b8a2fb1e11a753cea7662c07bec02
引入漏洞的提交:https://github.com/topjohnwu/Magisk/commit/920b60da19212dd8d54d27ada77a30067ce50de6
漏洞类别:不安全的动态外部代码加载
弱点枚举:
在 Canary 27007 之前的 Magisk 应用中,ProviderInstaller.java 的 install() 函数在加载 GMS 应用前未进行验证,这使得本地不受信任的应用无需额外权限即可在 Magisk 应用内静默执行任意代码,并通过精心构造的软件包将权限提升至 root,即 Bug #8279。利用此漏洞无需用户交互。
旧版 Android 系统不支持某些算法。为了让 Magisk 在这些平台上正常工作,它尝试通过调用 createCallingContext() 从 GMS 加载 conscrypt。更多细节请查看此链接:https://t.me/vvb2060Channel/692
然而,GMS 并非在所有设备上预装。Magisk 假设从 GMS 加载代码始终是安全的,但攻击者可以创建一个具有相同包名的虚假恶意应用。当 Magisk 应用启动时,恶意代码将在 Magisk 应用内执行。由于 Magisk 应用始终被授予 root 访问权限,这使攻击者能够在未经用户同意的情况下静默获取 root 权限并以 root 身份执行任意代码。
注意:该问题在 Canary 27007 中通过确保 GMS 是系统应用后再加载得到修复。然而,在预装 GMS 但签名验证实现存在缺陷(例如 CorePatch)的设备上,仍可能利用此漏洞。
注意 2:尽管官方 Magisk 应用已对此问题进行了修复,但其他应用中仍存在许多类似代码实例且未得到妥善修复,例如 此处 和 此处。这可能允许在易受攻击的应用中执行任意代码,并可能让攻击者再次获得 root 权限(如果这些应用已被授予 root 权限)。