作者:Moshe Kol
从 unstrusted_app 出发的 Android Binder 漏洞(CVE-2022-20421)权限提升利用代码。该漏洞已在 2022 年 10 月的 Android 安全公告中修复。漏洞利用程序适用于运行内核版本 5.4.x 和 5.10.x 的设备,并可获得完整的内核读写原语。对于 Google Pixel 6,还能实现完全 root 和绕过 SELinux。
完整的分析文章可在此处找到。
src/ 目录下执行 make push 编译 libbadspin.so 库。该操作还会将库推送到 /data/local/tmp。adb shell。LD_PRELOAD=/data/local/tmp/libbadspin.so sleep 1。这将加载库并启动漏洞利用。src/ 目录下执行 make push 编译 libbadspin.so。该操作会将库复制到演示 Android 应用的 assets 目录。app/ 目录中的演示 Android 应用。(可能需要 Android Studio 来完成。)adb logcat -s BADSPIN 查看日志。可以向 make 传递以下变量:
VERBOSE=1 增加详细输出。TEST_VULN=1 仅测试漏洞而不执行利用。$ make list
0: Samsung Galaxy S22, Android 12 (6/2022), kernel 5.10.81
1: Samsung Galaxy S21 Ultra, Android 12 (3/2022), kernel 5.4.129
2: Google Pixel 6, Android 12 (5/2022), kernel 5.10.66
3: Google Pixel 6, Android 13 (9/2022), kernel 5.10.107
适配漏洞利用程序以支持新设备并不困难。
确保你的新设备运行内核版本 5.4.x 或 5.10.x,并且 Android 安全补丁级别低于 2022 年 10 月。
在 dev_config.h 中添加你的设备属性。
指定两个函数指针:
kimg_to_lm():将内核镜像虚拟指针转换为线性映射。find_kbase():从泄漏的 anon_pipe_buf_ops 指针中查找内核基址。你可以使用已经提供的函数来完成。(如果你的厂商不是三星并且不确定,请使用与 Pixel 6 相同的函数。)
编译并运行。
如果成功,请提交一个 pull request。