Achilles: Qualcomm Hexagon DSP vulnerabilities (CVE-2020-11201/11202/11206/11207/11208/11209)¶
Check Point'in "Achilles" araştırması, Qualcomm Hexagon DSP'sini ve onun SDK-generated kodunu fuzz ederek, privilege'siz bir Android app'in daha düşük güven seviyesindeki DSP coprocessor'üne saldırmak için ulaşabileceği flaw'ları buldu.
Mechanism¶
Note
Modern Qualcomm Snapdragon SoC'ler bir Hexagon DSP ile gelir — audio, camera/multimedia, şarj ve diğer real-time workload'ları ana application (CPU) core'larından offload etmek için kullanılan bir digital signal processor. DSP, Android kernel'den ayrı olarak kendi firmware'ini ve kendi kodunu çalıştırır.
Söz konusu trust boundary, Android user ortamı ile DSP arasındadır. App'ler DSP servislerine Qualcomm'un remote-procedure mekanizması (FastRPC) üzerinden ulaşır; bu mekanizma çağrıları CPU tarafından DSP üzerinde çalışan koda marshal eder. DSP tarafındaki handler'lar kısmen Hexagon SDK'dan generate edilir: geliştirici bir servis yazar ve SDK, DSP üzerinde marshal edilmiş argümanları unpack eden "skeleton"/stub glue kodunu üretir. Check Point'in kilit gözlemi şuydu: pek çok bug compile time'da SDK'nın kendisi tarafından ekleniyordu — aksi halde dikkatli DSP kodu yazan bir geliştirici için bile zafiyetli stub kodu üretiliyordu; ekosistem genelinde çok sayıda (araştırma 400+'dan bahsediyor) zafiyetli kod pattern'inin ortaya çıkmasının nedeni budur.
DSP istekleri app'ler adına işlediği için ve SDK glue'su marshal edilmiş input'ları sağlam şekilde validate etmediği için, kötü niyetli veya ele geçirilmiş bir Android app — özel izinler olmadan — FastRPC path'ini crafted veriyle sürebilir ve kusurlu DSP tarafı koduna ulaşabilir. App sandbox'ından DSP koduna geçiş, attacker'ın OS'in trusted kabul ettiği bir coprocessor içinde çalışmasına olanak tanır; bu da gizli (stealthy), kaldırılması zor foothold'lar sağlar.
Walkthrough¶
Check Point, kapalı firmware'i analiz etmenin zorluğunun üstesinden gelerek aksi halde "black box" olan DSP'ye sızmak için fuzz-testing kullandı ve flaw'ları Qualcomm'a raporladı. Atanan altı identifier şunlardır:
Kavramsal olarak reachability zinciri şöyledir:
[unprivileged Android app]
| FastRPC call (crafted marshalled args)
v
[Hexagon DSP skeleton/stub generated by Hexagon SDK]
| insufficient validation of unpacked arguments
v
[memory corruption / fault inside DSP code]
Reported impact (from the disclosure)
Check Point, DSP'ye ulaşarak bir attacker'ın telefonu bir casusluk aracına dönüştürebileceğini anlatıyor — fotoğrafları, videoları, çağrı kayıtlarını, real-time mikrofon verisini ve GPS/konumu exfiltrate ederek — telefonu kalıcı olarak yanıt veremez (DoS) hale getirerek ve malware'in aktivitesini gizlemesine ve kaldırılmaya direnmesine izin vererek; senaryolarında tüm bunlar kullanıcı etkileşimi olmadan gerçekleşir.
Warning
Check Point, geniş çaplı vendor mitigation'ı beklerken açıklama anında tam teknik detayları (kesin root cause'lar, offset'ler ve çalışan bir exploit) bilinçli olarak yayınlamadı. Başka yerlerde gördüğünüz herhangi bir spesifik exploitation adımına, Qualcomm'un kendi advisory'lerine dayanmadıkça şüpheyle yaklaşın.
Mitigation¶
Qualcomm'un yanıtı dikkat çekici biçimde yapısaldı: flaw'lar büyük ölçüde DSP kodunun derlenmesi sırasında eklendiği için, Qualcomm yeni bir compiler ve güncellenmiş bir Hexagon SDK ile ek workaround'lar yayınladı; böylece yeni build edilen DSP kodu artık zafiyetli stub pattern'lerini miras almıyor. Kullanıcılar için pratik mitigation, cihazı güncel Qualcomm/OEM security patch seviyelerinde tutmak ve FastRPC path'ini sürebilecek güvenilmeyen app'leri yüklemekten kaçınmaktır.