The Way to Android Root: Exploiting Your GPU on Smartphone (Black Hat USA 2024)¶
GPUAF: Qualcomm Adreno
kgsldriver bug'ları üzerinden iki exploitation chain'i; page seviyesindeki bir use-after-free'i physical-memory arbitrary read/write'a ve zero-permission bir app'ten root'a çevirir.
Mechanism¶
Note
Xiling Gong, Eugene Rodionov ve Xuan Xing tarafından sunulan "GPUAF", GPU driver
bug'larını slab-object'e ait olanlar yerine page seviyesinde lifetime ihlalleri olarak
yeniden çerçeveler. Adreno kgsl driver'ı userspace'in GPU memory'yi map'lemesine ve
yönetmesine izin verir; bir race/refcount açığı, kernel'in hâlâ sahip olunduğuna inandığı
bir page'in (örneğin bir kernel page table'ı veya hassas bir object'i backing eden) attacker
tarafından reclaim edilip yeniden sahiplenilmesine olanak tanır. Kırılan invariant şudur:
bir physical page'in sahibi ile onun GPU/CPU mapping'leri tutarlı kalmalıdır — bunlar
desync olduğunda attacker kernel'in hâlâ güvendiği memory'yi kontrol eder.
Chain'ler üç açıklanmış Adreno bug'ı üzerine kurulur:
- CVE-2024-23380 —
kgsldriver'ında VBO (virtual buffer object) memory mapping'inde bir race condition (bkz. CVE-2024-23380 VBO mapping race). - CVE-2024-23373 — bir
kgslmemory-management açığı (bkz. CVE-2024-23373 kgsl memory management). - GPU memory management'ta bir reference-counting hatası.
Araştırmacılar, üst üste binen thread'leri orkestrasyona sokarak "memory and page table inconsistencies" oluşturur ve page seviyesinde bir use-after-free / PUAF primitive elde eder.
Walkthrough¶
Kamuya açık Black Hat USA 2024 / DEF CON 32 slide'larına ve kapsamına dayanan yüksek seviyeli anlatım. İki post-PUAF stratejisi gösterildi; ikisi de free edilmiş page'leri reclaim edip onları data-only bir arbitrary-R/W primitive'ine dönüştürür.
-
Page seviyesindeki UAF'yi tetikle. VBO mapping race'ini (CVE-2024-23380) ve/veya refcount bug'ını kazan; böylece GPU/kernel hâlâ referans verirken bir physical page free edilir.
-
Method A — page-table reclaim (data-only). Free edilmiş page'in bir kernel page table olarak yeniden allocate edilmesi için spray yap. Bir page-table page'ine sahip olmak, page table entry'leri üzerinde doğrudan kontrol verir — dirty-pagetable data-only attack deseni — böylece arbitrary physical address'ler remap edilir, SELinux devre dışı bırakılır ve privileged bir process'e injection yapılır.
-
Method B — pipe_buffer forgery. Free edilmiş page'i bir
pipe_bufferolarak reclaim et ve pipe operasyonlarını (pipe-buffer hijack deseni) kullanarak security state dahil arbitrary kernel memory'yi oku ve overwrite et.
Conceptual flow
- Escalate et. Her iki method da "physical memory seviyesinde" (AARW) arbitrary address read/write verir; bu da physical-address ASLR'ı yenmek, SELinux/DEFEX'i devre dışı bırakmak ve zero-permission bir app'i root'a yükseltmek için kullanılır — Snapdragon tabanlı Samsung Galaxy S (Exynos olmayan), Honor, Xiaomi ve Vivo cihazlarında raporlandı.
Detection¶
- GPU ioctl telemetrisi: unprivileged app'lerin, sıkı multi-threaded iç içe geçme (VBO
race imzası) ile yüksek hızda Adreno
kgslmapping ioctl'ları yayınlaması, free edilmiş page'leri reclaim etmek için kullanılan yoğun page-allocator hareketiyle ilişkili. - Reclaim-spray sezgileri: page-table boyutunda allocation patlamaları veya GPU
submission'larına göre zamanlanmış
pipe/pipe2+fcntl(F_SETPIPE_SZ)aktivitesi. - Integrity sinyalleri: beklenmedik SELinux-permissive geçişleri, policy güncellemesi olmadan credential değişiklikleri veya RKP/KNOX integrity ihlalleri.
- Crash artifact'ları: başarısız denemeler sırasında
kgslpath'lerinde SLUB/page UAF oops'ları veya KASAN raporları.
Mitigation¶
- Patch: CVE-2024-23380 ve CVE-2024-23373'ü (2024) düzelten Qualcomm Security Bulletin güncellemelerini uygula ve Android security patch level'ını doğrula.
- Root cause fix'leri: VBO mapping serialization'ını (race) ve GPU refcount accounting'ini düzelt; böylece free edilen page'ler hâlâ map'liyken reclaim edilemesin.
- Hardening / defense-in-depth: dedicated/segregated cache'ler ve cross-cache hardening, page-table korumaları (örneğin hypervisor destekli RKP / KNOX), SELinux enforcement ve untrusted app'ler için GPU device-node erişiminin kısıtlanması. Page seviyesindeki reclaim birçok slab-only mitigation'ı yener, dolayısıyla burada en çok page-allocator ve PTE-integrity savunmaları önem taşır.