6 puan yazan darjeeling 17 일 전 | Henüz yorum yok. | WhatsApp'ta paylaş

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_std desteği yetersizdi; bu yüzden Google ilgili crate’lere ve bağımlılıklara doğrudan no_std desteği ekleyip bunu upstream’e katkı olarak sundu.
  • Kod boyutu yaklaşık 371KB olarak ölçüldü. Bunun 350KB’si hickory-proto ve bağımlılıkları, 17KB’si core·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 optimize memcpy/memset implementasyonları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çin no_std desteğ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-gnaw aracıyla GN build kuralları üretildi.

Henüz yorum yok.

Henüz yorum yok.