The Road to Qualcomm TrustZone Apps Fuzzing (QSEE trustlet exploitation)¶
Check Point Research, Qualcomm'un secure-world OS'unu reverse-engineer etti, signed trustlet'leri normal world'e taşıdı ve emülasyon altında feedback-fuzzing ile çalıştırdı — Samsung, LG ve Motorola cihazlarındaki trustlet'lerde memory-handling bug'ları buldu.
Mechanism¶
Sınır neden kırılıyor
Qualcomm'un QSEE'si (Qualcomm Secure Execution Environment) en yaygın deploy edilmiş Android TEE'lerinden biridir. Trustlet'leri, QSEE'nin secure-world OS'u (QSEOS) tarafından load anında authenticate edilip integrity-check'ten geçirilen signed ELF binary'leridir; sonra hassas asset'ler üzerinde yüksek privilege ile çalışırlar — DRM, key storage, biometric/attestation akışları. Normal-world Android tarafı bunlara yalnızca TrustZone sınırı boyunca uzanan dar bir command interface üzerinden erişir. Bu araştırmanın hedef aldığı bug class'ı trustlet command handler'larındaki memory-handling açıkları'dır: bir trustlet, sınırın trusted tarafında otururken normal world'den gelen attacker-influenced input'u parse ettiği için, oradaki bir parsing ya da bounds bug'ı secure-world state'i corrupt edebilir.
Bu tür bug'ları bulmanın kavramsal engeli, secure world'ün bir black box olmasıdır — debugger yok, coverage yok, ne çalışabileceği üzerinde signature enforcement var. Araştırmanın temel fikri trustlet'i secure world'den koparmak: QSEOS'u bir trustlet'i normal world'e (ya da emülasyona) taşıyacak, beklediği syscall servislerini karşılayacak kadar iyi anlamak ve sonra sıradan coverage-guided fuzzing uygulamak. Stres altına alınan trust assumption şudur: trustlet integrity verification artı secure-world isolation, trustlet input handling'ini bir dış aktör için denetlenemez kılar — ki çalışma bunun yeterli reverse engineering ile yanlış olduğunu gösteriyor. Komşu secure-world saldırı çalışmaları için bkz. trust-issues-exploiting-trustzone-tees.md, trustzone-kernel-privilege-escalation.md, and breaking-samsung-s-arm-trustzone.md.
Walkthrough¶
Public Check Point Research write-up'undan (Slava Makkaveev, 2019) high-level reconstruction; yalnızca metodoloji.
- QSEOS'u reverse-engineer et. Ekip, trustlet'lerin nasıl load edildiğini, verify edildiğini ve servise alındığını anlamak için Qualcomm'un secure-world OS'unu analiz etti — birini native ortamının dışında çalıştırmanın ön koşulu.
- Trustlet'i taşı. Trustlet'ler cihazlardan dump edilir ve code/data'ları normal world'de çalışabilecek şekilde adapte edilir; bağlı oldukları secure-world servisleri (syscall'lar) stub'lanır ya da emüle edilir.
- Feedback-based fuzzing. Taşınan trustlet'ler emülasyon altında bir coverage-guided fuzzer ile (AFL-style) çalıştırılır; trustlet command handler'larına karşı input üretir ve yeni path'lere yönelmek için coverage kullanır.
- Cross-vendor erişim. Trustlet'ler OEM'e göre değiştiğinden, harness Samsung, LG ve Motorola cihazlarından çekilen trustlet'lere karşı kullanıldı ve birkaçında bug ortaya çıkardı.
Trustlet'i neden taşıyalım ki
Kavramsal olarak engel ve onu açan şey:
on-device: signed trustlet -> QSEOS verifies -> runs in secure world (opaque)
research: dump trustlet -> patch/relocate -> run in normal-world emulator
-> AFL coverage feedback
Bu taşıma (relocation), instrumente edilemeyen bir secure-world binary'sini sıradan bir fuzzing target'ına dönüştüren şeydir.
Açıklanan sonuç
Araştırma, birden çok Qualcomm trustlet'inde memory-handling güvenlik açığı açıkladı (public olarak takip ediliyor, ör. CVE-2019-10574), Qualcomm'a raporlandı ve onun tarafından patch'lendi. Bu, defensive research olarak sunuluyor; burada hiçbir exploit chain ya da offset yeniden üretilmiyor.
Detection¶
- Trustlet crash'leri / secure-world reset'leri: Normal world'den tetiklenen bir trustlet command handler'ındaki fault'lar — belirli command input'larıyla korele olan anormal secure-monitor dönüşleri ya da TEE reset'leri — gözlemlenebilir sinyaldir.
- Anormal trustlet load'ları: Değiştirilmiş ya da downgrade edilmiş trustlet'leri load etme girişimleri ya da load anındaki signature-verification başarısızlıkları, QSEOS load-time check'leri ve audit logging ile tespit edilebilir.
- Malformed command input'ları: Oversized ya da malformed trustlet command'leri gönderen normal-world client'ları, instrumente edilmiş client-side driver'larda görünür.
Mitigation¶
- Vendor patch'lerini uygula: Qualcomm, açıklanan trustlet güvenlik açıklarını düzeltti; OEM'ler (Samsung/LG/Motorola) bunları secure-world component update'leri ile dağıtır — TEE firmware'i güncel tutmak birincil mitigation'dır.
- Trustlet input handling'ini sertleştir: Trustlet geliştiricileri her normal-world-supplied parametreyi bounds-check ve validate etmeli, tüm command input'unu hostile olarak ele almalıdır.
- Load integrity ve anti-rollback'i zorla: Sıkı signature verification ve version anti-rollback'i koru ki patch'lenmiş ya da downgrade edilmiş trustlet'ler yeniden load edilemesin (bkz. TrustZone downgrade-attack class'ı).
- Trusted footprint'i azalt: Yerleşik trustlet'lerin ve onların açtığı command'lerin setini minimal tut ve şu gibi privilege-reduction tasarımlarını değerlendir: rezone-disarming-trustzone-with-tee-privilege-reduction.md — bir trustlet compromise olursa blast radius'u sınırlamak için.