Skip to content

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.

References