BaseSpec: Comparative Analysis of Baseband Software and Cellular Specifications for L3 Protocols¶
Baseband firmware'inden L3 message structure'larını çıkarıp bunları 3GPP specification'a karşı diff'leyen statik bir metodoloji; mismatch'ler developer hatalarını ve parsing bug'larını işaret eder; bunların arasında iki kritik over-the-air RCE 0-day de vardır.
Mechanism¶
Note
Cellular baseband işlemcileri, 3GPP specification tarafından tanımlanan, attacker'ın erişebildiği Layer 3 (L3) signalling mesajlarını (MM/CC/RR/GMM/SM vb.) parse eder. Her mesaj tipinin standartlaştırılmış bir structure'ı vardır — mandatory field'lar, Information Element Identifier (IEI) ile anahtarlanan opsiyonel Information Element'lar (IE) ve length kuralları. BaseSpec'in temel içgörüsü, bu standart structure'ın ground truth olmasıdır: specification, her mesajın tam olarak nasıl decode edilmesi gerektiğini söyler, dolayısıyla firmware'in gömülü decoder table'larının spec ile uyuşmadığı her yer, aday bir bug'dır. Firmware'in spec'in izin verdiğinden daha uzun olarak ele aldığı bir field, bounds check'i eksik bir IE ya da decoder'ın validation olmadan güvendiği bir length, tam olarak malformed bir downlink mesajını bir memory-safety ihlaline çeviren türden bir mismatch'tir. L3 mesajları pek çok mesaj tipinde authentication'dan önce over-the-air geldiği için, buradaki bir parsing kusuru bir rogue base station tarafından uzaktan tetiklenebilir — bu da mismatch avcılığını, source code olmadan pre-auth baseband zafiyetleri bulmanın yüksek verimli bir yolu yapar.
Walkthrough¶
Kim, Kim, Park, Yun ve Kim (KAIST), NDSS 2021'den. BaseSpec comparative (diff tabanlı) bir analizdir: symbol'a ve source'a ihtiyaç duymaz, yalnızca ham firmware image'ine ve specification metnine.
- Tek seferlik manuel analiz. Hedef vendor'ın L3 message structure'larını firmware'e nasıl gömdüğünü belirleyin (decoder'ın table layout'u / structure encoding'i). Bu, vendor formatı başına bir kez yapılır ve sonra image'ler genelinde tekrar kullanılır.
- Firmware preprocessing. Baseband image'ini IDAPython loader'ı
(
load_ida.py) ile yükleyin: segment'leri doğru adreslere yerleştirmek için scatter-loading uygulayın, ardından fonksiyonları linear-sweep prologue tespiti ve pointer analizi ile recover edin. - Implemente edilen structure'ları çıkarın. Firmware'in gerçekte decode ettiği message/IE structure'larını recover edin (field tipleri, length'ler, optional ya da mandatory).
- Specification'ı parse edin. Standartlaştırılmış message structure'larını 3GPP L3 dokümanlarından karşılaştırılabilir bir gösterime çıkarın.
- Sözdizimsel ve semantik olarak karşılaştırın. Implemente edilen ile specify edilen structure'ları diff'leyin; insan triyajı için mismatch'leri (örn. CSV olarak) üretin.
- Mismatch'leri bug'lara triyaj edin. Her mismatch bir ipucudur: yanlış bir length, eksik bir bound ya da spec'in talep ettiğinden farklı ele alınan bir IE.
Raporlanan değerlendirme ve bulgular (paper'dan)
- Top-three vendor'lardan birine ait 9 model'i kapsayan 18 baseband firmware image'i değerlendirildi; yüzlerce mismatch bulundu.
- Bunlardan 9 hatalı case: 5 functional error ve 4 memory ile ilgili zafiyet — bunların 2'si kritik remote code execution (RCE) 0-day.
- Farklı bir top-three vendor'a ait 3 model'e uygulandığında, mismatch'ler bir buffer overflow bug'ına yol açtı.
Warning
BaseSpec, aday kusurları structural divergence ile bulur; her mismatch exploitable değildir ve tek seferlik manuel adım vendor-format'a özgüdür. L3 parsing katmanını statik olarak analiz eder — tek başına weaponize edilmiş uçtan uca bir over-the-air exploit üretmez ve herhangi bir mismatch'in reachability/exploitability'sini doğrulamak hâlâ dikkatli manuel takip gerektirir.
Detection¶
Bu, baseband bug'ları bulmaya yönelik offensive bir research tekniğidir; host-visible footprint'i olan saha içi bir saldırı değil. Savunma açısından, aynı spec'e-karşı-diff yaklaşımı kendisi bir tespit yöntemidir: vendor'lar ve denetçiler, 3GPP'den sapan decoder'ları işaretlemek için firmware revizyonları genelinde structural comparison çalıştırabilir. Eşlik eden dinamik araçlar (baseband'in emülasyonu/fuzzing'i), işaretlenen bir mismatch'in crash edip etmediğini doğrular.
Mitigation¶
- Vendor'lar: L3 decoder'larında specification'a uygun length ve bounds check'leri zorunlu kılın; decoder table'larını elle kodlamak yerine 3GPP structure'larına karşı üretin ya da validate edin.
- Tüm pre-authentication downlink mesajlarını untrusted input olarak ele alın; IE parsing loop'larını aşırı uzun ve out-of-range field'lara karşı sertleştirin.
- Baseband firmware update'lerini hızlıca dağıtın; açıklanan RCE 0-day'ler etkilenen vendor'a raporlandı ve onun tarafından fix'lendi.