Skip to content

Unburdened By What Has Been: Exploiting Radio Layer 2 for Baseband RCE on Samsung Exynos

taszk Labs, Radio Layer 2 RLC re-assembly path'ine saldırarak — uzun süre remote attack surface olamayacak kadar low-level sayılan bir katman — Samsung Shannon baseband'inde remote bir heap-overflow primitive'ine ulaştı; CVE-2023-41111 ve CVE-2023-41112'yi zincirleyerek baseband context'inde arbitrary code execution'a doğru ilerledi.

Mechanism

Note

Bir cellular baseband, bir real-time OS ve tam bir LTE/5G protokol stack'i çalıştıran ayrı bir processor'dür. Public baseband RCE araştırmalarının çoğu Layer 3 signaling'i (NAS/ESM/RRC) hedefler, çünkü o mesajlar zengin, text benzeri ve erken parse ediliyor. taszk'ın katkısı, stack'te aşağıyaLayer 2'ye, yani data PDU'larını segment'leyen, yeniden sıralayan ve daha yüksek katman frame'lerine re-assemble eden RLC (Radio Link Control) sublayer'ına — inmekti. Kırdıkları invariant: handset'in RLC kodu, network'ün kontrol ettiği Layer-2 PDU'ların içindeki segmentation / length field'larına güvenir ve fragment'ları, sonucu tam olarak sınırlamadan per-radio-bearer buffer'lara re-assemble eder.

Re-assembly logic'indeki iki ayrı hata, güçlü bir primitive'de birleşir:

  • CVE-2023-41111 — Samsung RLC kodunun re-assembly için sıraya aldığı LLC / data-frame fragment'larını izlemek için kullandığı fixed-size descriptor array'ini overflow eden bir logic bug ile bir out-of-bounds access. Descriptor count'unu array bound'unun ötesine sürmek, o yapının sonunun ötesine saldırgan-kontrollü fragment metadata yazar.
  • CVE-2023-41112 — re-assembly copy loop'larındaki klasik önce-kopyala, sonra-çıkış-koşulunu-kontrol-et pattern'ından kaynaklanan bir heap buffer overflow: loop bir fragment'ı destination buffer'a kopyalar ve ancak sonra exit condition'ı test eder, dolayısıyla son iteration heap chunk'ının sonunun ötesine yazar.

Neden bir trust boundary'yi geçtiği: zararlı bir base station (ya da ele geçirilmiş bir network element) camp etmiş bir handset'e crafted L2 PDU'ları over-the-air iletebilir. Hiçbir user interaction ve payload'un valide edilmiş bir L3 authentication'ı gerekmez, dolayısıyla remote bir saldırgan modem üzerinde — Android application processor'ün altında — code execution'a ulaşabilir; orada trafiği intercept edebilir ya da pivot yapabilir. Overflow baseband heap'ine düştüğü için, iki bug birlikte, saldırgan heap shaping'e hâkim olduğunda kontrol edilebilir bir heap-overflow primitive verir.

Walkthrough

Defensive olarak sunuldu, tamamen taszk'ın public, patch'lenmiş disclosure'ları üzerine kuruldu. Conceptual zincir:

1. L2 re-assembly path'ine ulaş. Radio tarafını kontrol eden saldırgan, bir bearer için RLC data PDU'larından oluşan bir stream gönderir; böylece Shannon RLC re-assembly routine'i fragment descriptor'larını sıraya alır ve fragment payload'larını per-bearer bir heap buffer'a kopyalar.

2. Descriptor-array overflow'unu tetikle (CVE-2023-41111). Crafted bir fragment sequence, descriptor count'unu fixed array bound'unun ötesine sürer (logic bug) ve out-of-bounds access'i exercise eder; bitişik baseband state'i saldırgan-etkili descriptor içeriğiyle bozar.

3. Re-assembly heap overflow'unu tetikle (CVE-2023-41112). Önce-kopyala / sonra-kontrol et şeklinde yazılmış bir copy loop, bir fragment fazla kopyalar ve destination heap chunk'ını overflow eder. taszk, overflow olan chunk'ın "her zaman overflow olduktan hemen sonra free edildiğini" belirtir; bu layout'u kısıtlar ama back-end allocator'a karşı işlenebilir.

4. Heap'i shape et. taszk, Shannon'ın heap'inin front-end ve back-end allocator'lara sahip olduğunu tarif eder ve back-end allocator'a karşı klasik bir heap-exploit tekniği uygular (komşu allocation'ları groom'layarak, overflow'un seçilmiş bir victim object / freelist metadata'sını bozmasını sağlar); baseband'in heap mitigation'larını aşar.

5. Code execution'a dönüştür. Shape edilmiş corruption, bir function pointer / saved state'in kontrolüne escalate edilir ve baseband runtime'ında çalışan bir payload'a yönlendirilir — modem üzerinde tam arbitrary RCE.

Warning

Yalnızca yetkili araştırma için. Lisanslı cellular spectrum üzerinde transmit etmek ya da rogue bir base station işletmek, shielded bir RF chamber'da test licence'ı olmadan çoğu yargı bölgesinde yasadışıdır. Etkilenen cihazlar geniş bir Samsung telefon yelpazesini kapsar, o zamanki en yeni Exynos chipset'ler dahil; resmi Samsung Security Update etkiyi muhafazakâr biçimde "bir telefonun abnormal termination'ına yol açabilir" olarak değerlendirirken, taszk baseband'de arbitrary code execution'a ulaştığını gösterir.

Detection

  • Patch level: cihazın fix'leri içeren Samsung firmware'ini taşıdığını doğrula — Samsung bunları CVE-2023-41111 / CVE-2023-41112 olarak izledi, atamayı 6 Kasım 2023'te yayınladı ve fix'leri Ekim 2023'ten itibaren OTA image'larında shipped etti, 7 Aralık 2023'te bir semiconductor security bulletin ile.
  • Anormal L2 davranışı / crash'ler: tek bir cell'e camp etmişken tekrar eden baseband reset'leri veya "abnormal termination", overflow girişimlerine işaret edebilir; RLC re-assembly routine'lerinde fault gösteren baseband ramdump'ları/crash log'ları (mevcut olduğunda) güçlü bir göstergedir.
  • Rogue-cell göstergeleri: IMSI-catcher / fake-base-station detector'ları ve bilinmeyen bir cell'e beklenmedik forced attach, over-the-air L2 saldırılarının önünde gelir.

Mitigation

  • RLC descriptor handling'e bounds check ekleyen ve copy-loop exit ordering'i düzelten Samsung baseband security güncellemelerini (Ekim–Aralık 2023 ve sonrası) uygula.
  • Re-assembly parser'larını sertleştir: descriptor array'ini index'lemeden önce fragment count'larını valide et; her copy iteration'ından önce exit condition'ı kontrol et.
  • AP/baseband isolation'ını (IOMMU-confined shared memory) sürdür; böylece ele geçirilmiş bir modem doğrudan application-processor memory'sine ulaşamasın.
  • Threat model izin verdiğinde, saldırgan-erişebilir L2 surface'ini azaltmak için legacy RAT'leri devre dışı bırak ve fallback'i kısıtla.

References