type
status
date
slug
summary
tags
category
icon
password
 

漏洞信息

💡
漏洞信息:
Product: Magisk
CVE: N/A (not yet assigned)
Reporter: @vvb2060
Initial Report Date: 2024-08-01
Patch Date: 2024-08-21
Disclosure Date: 2024-08-24
Affected Versions: Manager v7.0.0 ~ Canary 27006
First Patched Versions: Canary 27007
Issue/Bug report: topjohnwu/Magisk#8279
Bug Class: Unsafe Dynamic External Code Loading
Weakness Enumerations:
 
易受攻击的设备
  • 未预装 GMS 的设备
  • 签名验证实现损坏的设备(例如被 CorePatch 禁用)
注意:此问题已在 Canary 27007 中修复,方法是在加载 GMS 之前确保它是系统应用。但是,在预装了 GMS 但签名验证实现已损坏的设备上(例如 CorePatch),仍有可能利用此问题。

漏洞分析

Magisk 是一套用于定制 Android 的开源软件。在 canary 27007 版本之前,在安装 ProviderInstaller.java时,由于缺少验证,存在一种将任意代码加载到 Magisk 应用程序中的方法。这可能导致本地权限提升,从而使攻击者无需额外权限即可获得 root 访问权限。利用此漏洞无需用户交互。
Magisk原本在app/shared/src/main/java/com/topjohnwu/magisk/ProviderInstaller.java 的代码逻辑如下。当一个应用程序调用 createPackageContext 方法并传入 CONTEXT_IGNORE_SECURITY 和 CONTEXT_INCLUDE_CODE 标志,然后调用 getClassLoader() 获取类加载器时,可能会导致代码执行漏洞。攻击者可以通过冒充一个未被占用的包名(包名抢注)来利用这个漏洞。com.google.android.gms.common.security.ProviderInstallerImpl 是 Google Play 服务的一部分,用于确保 Android 应用程序使用最新的安全提供程序。具体来说,它用于更新设备上的安全提供程序(如 SSL/TLS 提供程序),以确保应用程序能够使用最新的安全协议和修复已知的安全漏洞。如果设备并没有安装google服务或签名验证损坏的情况下,可以通过安装一个恶意App,其中包括伪造的GMS包,只需要实现ProviderInstallerImpl 即可加载执行任意代码。
Magisk 假设从GMS加载代码始终是安全的,但攻击者可以创建具有相同软件包名称的虚假恶意应用程序。启动Magisk应用程序时,恶意代码将在Magisk应用程序中执行。由于Magisk应用程序始终被授予root访问权限,因此攻击者可以悄悄获得 root 访问权限并以root权限执行任意代码,而无需用户同意。
查看POCProviderInstallerImpl实现如下,即由Magisk本身执行su进行提权,然后通过Parcel将读写ParcelFileDescriptor 传递回去。
装入恶意App,然后强行停止Magisk和恶意App,重新先后打开Magisk和恶意App即可实现本地提权。
notion image

漏洞修复

综上,对应的修复方法就是验证GMS是否为系统应用,是则允许加载,否则不允许。
app/shared/src/main/java/com/topjohnwu/magisk/ProviderInstaller.java 中添加对GMS包是否是系统应用的校验,仅当为系统应用时才允许加载类。
notion image
相关文章
基于eBPF实现一个简单的隐蔽脱壳工具-eBPFDexDumper
Lazy loaded image
LakeCTF At your Service 题解
Lazy loaded image
Frida Interceptor Hook实现原理图
Lazy loaded image
SystemUI As EvilPiP
Lazy loaded image
Android 悬浮窗覆盖攻击
Lazy loaded image
CVE-2024-31317 Zygote命令注入提权system分析
Lazy loaded image
Android 悬浮窗覆盖攻击CVE-2024-31317 Zygote命令注入提权system分析
Loading...
LLeaves
LLeaves
Happy Hacking
最新发布
基于eBPF实现一个简单的隐蔽脱壳工具-eBPFDexDumper
2025-1-9
LakeCTF At your Service 题解
2024-12-13
PendingIntent-security
2024-12-1
Android grantUriPermission与StartAnyWhere
2024-11-30
eBPF实践之修改bpf_probe_write_user以对抗某加固Frida检测
2024-11-10
CVE-2024-31317 Zygote命令注入提权system分析
2024-11-10
公告