Qualcomm Mobile Station Modem (MSM/QMI) heap overflow CVE-2020-11292¶
Qualcomm'un MSM modem firmware'indeki bir QMI voice-service handler'ı, bir TLV payload'undaki attacker-supplied "number of calls" count'una güvenir; bu da fixed bir modem-heap allocation'ı overflow eder ve baseband içinde kod yürütmeyi mümkün kılar.
Mechanism¶
Unbounded count field scaled into a fixed allocation
Qualcomm MSM Interface (QMI), application processor ile MSM modem arasındaki
control protocol'üdür. Vulnerable handler,
qmi_voicei_srvcc_call_config_req, TLV-format bir request parse eder ve
modem heap'inde fixed bir 0x5B90-byte buffer allocate eder. Ardından
payload'dan bir number of calls field'ı okur ve per-call record'ları
buffer'a offset 0x10'da, call başına 0x160 byte ile kopyalar:
alloc 0x5B90 on modem heap
n = payload.number_of_calls # attacker-controlled, up to 0xFF
for i in 0..n: copy 0x160 bytes at 0x10 + i*0x160
n'in buffer'a sığıp sığmadığına dair hiçbir check yok. n = 0xFF ile
write 0x10 + 0x160*0xFF'e kadar gider ve 0x5B90 buffer'ını kabaca
0x10320 byte overflow eder (büyüklük mertebesi tahmini). Kırılan invariant: "record count, allocation
ile bound'lanmıştır." Bu, modem'in kendi address space'inde çalıştığından,
başarı Android OS'in altında kod yürütme sağlar — OS savunmalarına görünmez,
call/SMS/network trafiğine erişimle.
Check Point Research tarafından raporlandı; Qualcomm tarafından fix'lendi ve OEM'lere Aralık 2020'de gönderildi. CVE-2020-11292.
Walkthrough¶
Public Check Point research'ünden defansif olarak belgelendi; weaponized bir chain olarak reprodüksiyonu yapılmamıştır.
Conceptual reach (per the public writeup):
1. A malicious Android app with access to the QMI interface (e.g. via the
modem's diag/QMI sockets reachable on rooted/qualified devices) crafts a
srvcc_call_config_req TLV.
2. Set the "number of calls" field to 0xFF.
3. qmi_voicei_srvcc_call_config_req() copies 0x160 * 0xFF bytes into the
0x5B90 modem-heap buffer -> heap overflow in the modem.
Vulnerable bir modem'de beklenen sonuç: baseband'de heap corruption; adjacent heap metadata/object'lerin kontrolüyle, MSM modem içinde kod yürütme ve modem'i trafiği açığa çıkaracak şekilde patch'leme yeteneği.
Detection¶
- Modem-side corruption'ı OS'ten gözlemlemek zordur; QMI voice request'lerini takip eden modem crash/reset'ler (subsystem restart) bir sinyaldir.
- QMI request issue edebilen process'leri kısıtlayın ve izleyin.
Mitigation¶
- Aralık 2020 Qualcomm security bulletin fix'ini uygulayın
(
qmi_voicei_srvcc_call_config_req'te call count'u bounds-check edin). - Modem'e QMI/diag access'ini yalnızca privileged component'lere sınırlayın.