Google, Pixel 10 baseband firmware’ine Rust getiriyor
(security.googleblog.com)Google, Pixel 10’un hücresel baseband (modem) firmware’ine bellek güvenli bir dil olan Rust tabanlı bir DNS parser ekledi.
Bu, uzaktan saldırı yüzeyi geniş olan baseband’de bellek güvenliği zafiyeti sınıfını azaltmaya yönelik proaktif bir adım.
Temel noktalar
- Pixel 9’da bellek güvenliği zafiyetlerini hafifletmeye yönelik önlemler uygulanmıştı; Pixel 10 ise bir adım daha ileri giderek Rust kodunu doğrudan gerçek baseband firmware’ine yerleştirdi.
- İlk uygulama hedefi DNS parser oldu. DNS yalnızca tarayıcıda değil, çağrı yönlendirme gibi mobil iletişimin temel işlevlerinde de kullanılıyor ve güvenilmeyen veriyi doğrudan parse ettiği için zafiyetlerin ortaya çıkmaya açık olduğu bir alan.
- Google, açık kaynak Rust DNS kütüphanesi
hickory-protoyu benimsedi. Bakım durumu, test kapsamı ve topluluk tarafından benimsenme düzeyi yüksek bulundu. - Ancak bare-metal ortam için gerekli
no_stddesteği yetersizdi; bu yüzden Google ilgili crate’lere ve bağımlılıklara doğrudanno_stddesteği ekleyip bunu upstream’e katkı olarak sundu. - Kod boyutu yaklaşık 371KB olarak ölçüldü. Bunun 350KB’si
hickory-protove bağımlılıkları, 17KB’sicore·alloc·compiler_builtins, 4KB’si ise modem ile bağlantıyı sağlayan shim kodundan oluşuyor. - Google, Cargo ile birden fazla bağımsız staticlib bağlama yaklaşımı yerine mevcut modem build sistemi (Pigweed/GN) içine Rust derleme adımını doğrudan entegre etmeyi seçti.
- Rust’ın bellek tahsis edicisi ve panic işleme mekanizması da mevcut modem firmware’inin allocator’ı ve crash backend’iyle FFI üzerinden bağlanarak entegre edildi.
- Link aşamasında
compiler_builtins, mevcut modemin optimizememcpy/memsetimplementasyonlarını ezerek performans düşüşüne neden oldu; bu sorun tek satırlık bir script ile kaldırılarak çözüldü. - Google, bu uygulamanın tek seferlik bir önlem olmadığını; ileride baseband içindeki diğer yüksek riskli parser’lara ve kodlara da bellek güvenli dilleri yaygınlaştırmak için bir temel oluşturduğunu belirtti.
Neden önemli
Hücresel baseband, dış dünyayla doğrudan temas eden düşük seviyeli bir yazılım olduğu için saldırganlar açısından yüksek değere sahip. Nitekim Project Zero geçmişte Pixel modem üzerinde internet üzerinden uzaktan kod çalıştırmayı göstermişti. Böyle bir ortamda C/C++ ağırlıklı kodun bellek güvenliği sorunları kolayca yapısal bir riske dönüşebiliyor.
Google’ın bu duyurusu, yalnızca “Rust kullandık” demenin ötesinde, mobil baseband gibi kısıtları fazla ve hassas firmware alanlarında da bellek güvenli dillerin gerçek dünyada devreye alınabileceğini göstermesi açısından önemli.
Teknik açıdan öne çıkan kısımlar
hickory-protoyu bare-metal üzerinde çalıştırmak içinno_stddesteği eklendi.- Rust ile mevcut C/C++ kodu arasındaki arayüz FFI ile kuruldu.
- Yanıt parse etme işini Rust üstlenirken, mevcut C bellek yapılarının güncellenmesinde mevcut C fonksiyon callback’leri yeniden kullanıldı.
- Harici crate sayısı 30’un üzerinde olduğu için, elle build kuralı yazmak yerine Fuchsia’nın
cargo-gnawaracıyla GN build kuralları üretildi.
Henüz yorum yok.