LSPromise:Android 17 本地应用至 Root/内核权限提升漏洞利用链
内容提要
该文章介绍了一个名为LSPromise的Android 17本地提权漏洞利用链,可从非特权应用提升至root权限。它结合了Telecom服务中的0-day漏洞(CVE-2026-49881)和内核DirtyFrag漏洞(CVE-2026-43284),在Pixel 10上测试成功。利用过程包括在system_server中执行代码,进而控制网络栈进程,最终通过修补库文件实现内核代码执行,并激活KernelSU以获取root权限。
延伸解读
漏洞利用链的可靠性
该利用链不依赖内存破坏或竞态条件,因此无需进行堆喷射或绕过KASLR、MTE、CFI等缓解措施,在受影响设备上成功率可达100%。这显著降低了利用门槛,使得非特权应用能够稳定提权至root。
漏洞影响范围
利用链在Pixel 10(Android 17初始版本)上测试成功,但Pixel 6a不受影响。此外,其他运行6.1.xxx-android14内核树的设备可能因另一个内核bug而受影响。用户应关注设备是否在受影响范围内。
修复时间线
Telecom服务漏洞(CVE-2026-49881)于2026年7月23日报告,但被标记为重复,且因Google将安全公告改为季度发布,导致漏洞在Android 17发布后3个月仍未修复,直到2026年9月才被修复。这凸显了安全更新延迟的风险。
Q&A
LSPromise是什么?它实现了什么目标?
LSPromise是一个针对Android 17的本地提权漏洞利用链,能够将权限从非特权应用提升至root/内核级别。它结合了Telecom服务中的0-day漏洞(CVE-2026-49881)和内核DirtyFrag漏洞(CVE-2026-43284),在Pixel 10上测试成功。
LSPromise利用链由哪些漏洞组成?
LSPromise由两个漏洞组成:一个是Telecom服务中的0-day漏洞(CVE-2026-49881),另一个是内核1-day漏洞DirtyFrag(CVE-2026-43284)。
LSPromise在哪些设备上测试成功?在哪些设备上不工作?
LSPromise在运行Android 17初始版本的Pixel 10上测试成功,但在Pixel 6a上不工作,可能也影响其他运行6.1.xxx-android14内核树的设备。
LSPromise利用链的第一步是什么?如何进入system_server?
第一步是利用Telecom服务中的逻辑漏洞(CVE-2026-49881),该漏洞允许通过Context.CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY加载任意应用的代码,从而在system_server进程中执行任意Java代码。
为什么需要进入network_stack进程?如何实现?
因为system_server受SELinux限制,无法加载本地库或映射可执行内存,而network_stack进程可以加载APK中的本地代码,并且有足够权限利用DirtyFrag漏洞。通过ActivityManager获取IApplicationThread句柄,向com.android.networkstack发送命令,强制其加载恶意代码。
LSPromise如何实现内核代码执行?
利用DirtyFrag漏洞覆盖只读文件,如libc.so、libc++.so和libstagefright_aidl_bufferpool2.so。通过修补这些库,在init进程和vendor_modprobe域中执行代码,最终加载恶意内核模块,从而获得内核代码执行能力。
LSPromise利用链的最终目标是什么?
最终目标是激活KernelSU,从而允许用户授予其他应用root权限。
LSPromise的利用链是否涉及内存破坏或竞争条件?
不涉及。LSPromise不依赖内存破坏或竞争条件,因此无需进行堆喷或绕过KASLR、MTE、CFI等缓解措施,在易受攻击的设备上成功率可达100%。