7 puan yazan GN⁺ 2025-11-15 | 3 yorum | WhatsApp'ta paylaş
  • Android platformunda Rust'un benimsenmesinden sonra bellek güvenliği açıklarının oranı toplamın %20'sinin altına düştü; güvenlik ve geliştirme verimliliği aynı anda iyileşti
  • Rust kodunda, C/C++'a kıyasla bellek güvenliği açığı yoğunluğu 1000 kat daha düşük, geri alma oranı 4 kat daha az ve kod inceleme süresi %25 daha kısa
  • Rust kullanımının genişlemesi çekirdek, firmware ve 1st-party uygulamalara yayılarak sistem genelinde varsayılan güvenlik düzeyinin artmasına katkı sağlıyor
  • CrabbyAVIF'te tespit edilen Rust tabanlı ilk bellek güvenliği açığına dair “neredeyse gerçekleşen” vaka, Scudo allocator'ının ve güvenli unsafe kod eğitiminin önemini gösterdi
  • Rust'a geçiş, güvenliği güçlendirirken geliştirme hızını da artıran yeni bir yazılım geliştirme paradigması olarak değerlendiriliyor

Rust benimsenmesinin etkisi ve 2025 verileri

  • 2025 itibarıyla Android'de bellek güvenliği açıklarının oranı %20'nin altına geriledi; bu da Rust merkezli güvenlik stratejisinin etkili olduğunu kanıtlıyor
  • Rust, C/C++'a kıyasla bellek güvenliği açığı yoğunluğunu 1000 kat azaltıyor, geri alma oranı 4 kat daha düşük ve kod inceleme süresi %25 daha kısa
  • Rust'un benimsenmesi, yalnızca güvenlik iyileştirmesiyle sınırlı kalmayıp yazılım teslim hızında artışa da yol açıyor
  • Veriler, Android platformundaki C, C++, Java, Kotlin ve Rust genelinde 1st-party ve 3rd-party kod değişikliklerini kapsıyor

Sistem dili dönüşümü ve geliştirme verimliliği

  • Android, sistem programlama dili olarak Rust'u C/C++'a alternatif olarak benimsedi; benzer düzeyde kontrol sunarken riski azaltıyor
  • 1st-party kod temelinde Rust kodundaki artış C++'ı geçti ve iki dil arasında geliştirme metriklerinin karşılaştırılması mümkün hale geldi
  • DORA çerçevesi kullanılarak Throughput (teslim hızı) ve Stability (kararlılık) ölçüldü
    • Karşılaştırma, Rust ve C++ için kod boyutu, geliştirici havuzu ve zaman eğilimleri kontrol edilerek yapıldı

Throughput: kod inceleme verimliliğinde artış

  • Rust kodu, C++'a kıyasla %20 daha az revizyon gerektiriyor ve kod inceleme süresini %25 kısaltıyor
  • 2023 ile 2024 arasında Rust uzmanlığının artmasıyla inceleme verimliliği belirgin biçimde iyileşti
  • İnceleme ve yeniden çalışma ihtiyacının azalması üretkenliği artırıyor; burada kararlılıktaki iyileşme en büyük etki faktörü olarak öne çıkıyor

Stability: daha düşük geri alma oranı ve daha yüksek kalite

  • DORA ölçütlerine göre Rust'un geri alma oranı C++'a göre yaklaşık 4 kat daha düşük; bu fark özellikle orta ve büyük ölçekli değişikliklerde belirgin
  • Düşük geri alma oranı, derleme tekrarları, postmortem süreçleri ve ekip blokajları gibi ek maliyetleri azaltarak üretkenliğe doğrudan katkı sağlıyor
  • 2022 Google mühendis anketinde de Rust'un incelemesinin kolay ve doğruluğunun yüksek olduğu değerlendirilmişti
  • Veriler bu algıyı ampirik olarak destekliyor

Güvenlik ve üretkenlikte eşzamanlı iyileşme

  • Geçmişte güvenliği artırmak performans kaybına veya geliştirme gecikmesine yol açabiliyordu; ancak Rust'a geçiş güvenliği ve verimliliği aynı anda iyileştiriyor
  • Rust'un benimsenmesiyle güvenlik, geliştirme verimliliği ve ürün kararlılığı birlikte güçleniyor

Rust'un yayıldığı alanlar

  • Çekirdek: Android 6.12 Linux çekirdeğinde Rust desteği ve ilk Rust sürücüsü devreye alındı
    • Arm ve Collabora ile iş birliği içinde Rust tabanlı GPU sürücüsü geliştiriliyor
  • Firmware: Rust'un benimsenmesiyle yüksek ayrıcalıklı ve kısıtlı ortamlarda güvenlik güçleniyor; buna ilişkin eğitimler, öğreticiler ve kodlar yayımlandı
    • Arm ile birlikte Rusted Firmware-A projesi yürütülüyor
  • 1st-party uygulamalar:
    • Nearby Presence: Bluetooth tabanlı cihaz keşif protokolü Rust ile uygulandı ve Google Play Services içinde çalışıyor
    • MLS: RCS mesajlaşması için güvenli protokol Rust ile uygulandı; gelecekte Google Messages uygulamasına dahil edilmesi planlanıyor
    • Chromium: PNG, JSON ve web font parser'ları Rust ile değiştirildi; Rule of 2 ilkesine uymak kolaylaştı

Rust tabanlı ilk bellek güvenliği açığına dair “neredeyse gerçekleşen” vaka

  • CrabbyAVIF'te sevkiyattan hemen önce bir buffer overflow açığı (CVE-2025-48530) bulundu ve kamuya açıklanmadan önce düzeltildi
  • Scudo hardened allocator, guard page sayesinde açığı istismar edilemez (non-exploitable) hale getirdi
  • Scudo, Pixel gibi cihazlarda zaten varsayılan olarak kullanılıyor ve iş ortakları için de zorunlu hale getirilmesi hedefleniyor
  • Çökme raporlama iyileştirmeleri sayesinde overflow tespit sinyalleri daha net hale geldi

Unsafe kod yönetimi ve eğitimin güçlendirilmesi

  • OS geliştirmede kaçınılmaz olarak unsafe kod (C/C++ veya unsafe Rust) gerekiyor
  • Google, Comprehensive Rust eğitimine unsafe kod için ileri seviye bir modül ekledi
    • Bu modül; unsafe kodun soundness'ı, tanımsız davranış, güvenlik açıklamaları ve güvenli soyutlama teknikleri gibi konuları ele alıyor
  • unsafe Rust konusundaki anlayışın gelişmesi, Android ve genel açık kaynak ekosisteminde kod kalitesinin artmasına katkı sağlıyor

Açık yoğunluğu karşılaştırması

  • Android'deki yaklaşık 5 milyon satır Rust kodunda 1 potansiyel açık bulundu → Rust açık yoğunluğu 0.2/MLOC
  • C/C++ için tarihsel ortalama 1,000/MLOC; yani 1000 kattan fazla azalma söz konusu
  • Bellek güvenliği açığı yoğunluğundaki düşüş, genel güvenlik mimarisinin etkinliğini güçlendiriyor
  • Rust kodunun yaklaşık %4'ü unsafe{} bloklarından oluşsa da veriler, bunun C/C++'tan daha düşük hata olasılığına sahip olduğunu gösteriyor
    • Bunun nedenleri arasında güvenlik kontrollerinin korunması, kapsülleme ve ek inceleme süreçleri yer alıyor

Sonuç

  • Geçmişte güvenliği sağlamak için statik analiz, sandboxing ve patch gibi yüksek maliyetli önlemler gerekiyordu
  • Rust'a geçiş, güvenliği ve verimliliği aynı anda sağlamaya yönelik yeni bir yaklaşım sunuyor
  • Artık mesele “hızlı geliştirip sonra düzeltmek” değil, “hızlı geliştirirken aynı anda düzeltmek”
  • Güvenlik güçlendikçe performans ve üretkenliğin geri kazanılma olasılığı da artıyor

Teşekkür

  • CVE-2025-48530 analizi, Scudo iyileştirmeleri, unsafe Rust eğitiminin geliştirilmesi ve Rust kullanımına dair bilgi paylaşımı gibi katkılarda bulunan pek çok kişiden söz ediliyor
  • Android Rust ekibine ve Android organizasyonunun tamamına sürekli kalite iyileştirme çabaları için teşekkür ediliyor

3 yorum

 
brain1401 2025-11-16

Yaşasın Rust!

 
bus710 2025-11-16

Embassy ile firmware geliştirmeyi biraz kurcalayınca
Dilin sağladığı güvenlik de iyi ama... araç ekosistemi o kadar iyi ki, C/C++ kullandığım zamana kıyasla üretkenlik ezici biçimde daha yüksek.

 
GN⁺ 2025-11-15
Hacker News yorumları
  • 5 milyon satır Rust kodunda yalnızca tek bir bellek güvenliği açığı bulunmuş
    Yani Rust, milyon satır başına 0,2 açık oranına sahip
    Buna karşılık C/C++ tarafında bu sayı milyon satır başına yaklaşık 1.000; aradaki fark ezici

    • İnternette hâlâ yalnızca “Rust ile yeniden yazalım” denmesi bile linç yemeye yeten yerler var
      Ama bu kadar net veriler ortadayken bunun neden hâlâ görmezden gelindiğini anlamak zor
      Ben kendim henüz Rust kullanmadım ama bir gün mutlaka öğrenmeyi düşünüyorum
    • Benim için bu yazıda daha etkileyici olan nokta “kod incelemesinin kolaylaşması ve rollback sayısının azalması” oldu
      Güvenlik önemli ama geliştiricinin gerçekten istediği şey rollback’siz dağıtım
      Rust ile yazınca böyle bir güven hissi oluşuyor
    • Rust gerçek bir mühendislik atılımı
      Bilgisayar biliminde böyle yenilikler gerçekten çok nadir çıkıyor
    • Eğer bu istatistikler doğruysa C++’ın geleceği karanlık görünüyor
      2025’te C++ kullanmak için mevcut kod tabanını korumak dışında neredeyse hiçbir sebep yok
      Yeni yapılan her şeyin Rust’a gitmesi lazım
    • Yine de bu, yeni kod ile eski kodun karşılaştırması; o yüzden tamamen adil değil
      Yeni projeler en güncel test düzeni ve net hedeflerle başlıyor
      Buna rağmen Rust’ın C++’tan zihinsel olarak daha sağlıklı bir dil olduğunu inkâr etmek zor
  • Rust öğrenmek gerçekten acı vericiydi; diğer dillere göre çok daha karmaşıktı
    Ama derleyiciyle birkaç kez boğuştuktan sonra, kod çalıştığında neredeyse sorun çıkmayacağından emin oluyorsunuz
    Ruby, JS/TS ve Python’dan Rust’a gelince “derleniyorsa %80-90 hazırdır” hissi veriyor
    Üstelik hızlı

    • Rust’ta en sevdiğim özellik runtime hatalarını compile time’da yakalaması
      Derleyiciyle kavga etme süreci aslında gizli kalmış bug’ları önceden düzeltme süreci
    • Bir noktadan sonra derleyiciyle kavga etmiyor, onunla iş birliği yapıyorsunuz
      Rust’ın düşünme biçimi zihninizi ele geçiriyor
    • Rust öğrenmek kolay mı? Ben de 4-5 kez yeniden öğrendim
      Espri şu: O kadar kolay unutuluyor ki tekrar tekrar öğrenmek kolay oluyor
    • TypeScript’te de bu güven hissini yaşamadınız mı diye merak ediyorum
      Ruby, JS ve Python için katılıyorum ama TS’nin biraz farklı olduğunu düşünüyorum
  • Google hâlâ Android userspace’te Rust’ı resmen desteklemiyor
    NDK ve Android Studio hâlâ yalnızca C/C++ destekliyor
    Rust kullanmak için topluluğun araçları kendisinin üretmesi gerekiyor

    • Aslında Google, NDK’nın kendisini zamanla ortadan kaldırma yönünde ilerliyor
      JVM tarafında kod olmadan uygulama yapmak zorlaşıyor
    • Yine de Rust ile .so dosyası derleyip NDK’ya koymak mümkün
      Android’in ABI’si, kurallara uyulduğu sürece dilden bağımsız
  • Bu, C++’ı batıran bir bomba gibi bir olay
    Artık “Rust da unsafe” ya da “C++ da iyi kullanılırsa güvenlidir” gibi mazeretler daha zor savunulur hale geliyor

    • Rust’ın avantajı sadece güvenlik değil; cargo, sözdizimi, modül yönetimi ve genel ekosistem de bunun parçası
      Güvenli kod yazmak zahmetli ama bir kez geçince çok iş parçacıklı ortamlarda bile özgüven veriyor
      Android uygulamalarını da Rust ile yapmak isterdim
    • Dil savaşlarıyla ilgilenmiyorum
      Sadece güvenli sistem araçları geliştirmek için seçeneklerin artmış olmasına seviniyorum
    • Rust derleyicisi de sonuçta LLVM ve GCC üzerine kurulu
      Sektör standardı hâlâ C/C++ merkezli olduğu için Rust’ın her şeyi tamamen değiştirmesi zor
    • Sonuçta uygunluk, ne tür bir yazılım yaptığınıza göre değişiyor
  • Rollback oranının 4 kat farklı olması sarsıcı
    Çoğu metrik zaten beklenen bir tabloydu ama bu yeniydi

    • Rust’ın güvenli olduğunu herkes biliyordu ama 1000 kat fark şaşırtıcı
      Bu, Rust’ın olağanüstü kusursuz olmasından çok mevcut kodun ne kadar hatalı olduğunu gösteriyor
      Büyük ölçekli kod tabanlarından böyle veri çıkması etkileyici
    • Çoğu kod tabanında erken test tasarımı yetersiz
      En baştan modül seviyesinde bir acceptance test sistemi kurarsanız, Rust’ın yaptığı doğrulamaların yerini testlerle doldurabilirsiniz
      Böylece sadece bellek sızıntılarını değil performans düşüşlerini de izleyebilirsiniz
    • Yeni kod Rust’ta, eski kod C++’ta tutulduysa
      Bu sadece eski kodun risk farkı da olabilir
    • Kod boyutu farkına rağmen rollback oranının sabit kalması ilginç
  • Bir arkadaşım Rust ile yeniden yazma projesini aldı ve
    “Bununla 3 yıllık maaş garanti,” diye şaka yaptı
    Esprili strateji şu: yeniden yazım → bellek güvenliği → istikrarlı maaş döngüsü
    Rust derleyicisi yavaş yavaş derlerken eski kodu okuyup sakin sakin çalışabiliyorsun

  • Bu verilerde karıştırıcı değişkenler kontrol edilmemiş
    Genelde yeniden yazılan hedefler zaten iyi anlaşılmış kodlar oluyor; bu yüzden inceleme hızlı, rollback az oluyor
    Buna karşılık karmaşık legacy kodlarda inceleme uzun sürüyor ve rollback daha fazla oluyor

    • Ama ilk grafik sadece bununla açıklanamaz
      Yalnızca kolay kodlar yeniden yazılmış olsaydı, bellek güvenliği açığı oranı farklı çıkardı
      Pratikte sorunlu kodlar daha çok Rust ile yeniden yazılma eğiliminde
      Kusursuz bir deney değil ama bunu gerçek etki olarak görmek daha makul
    • Bu yazı büyük ölçüde yeni kod yazımı hakkında
    • Değişiklik boyutuna (S/M/L) göre kıyaslama yaparak karışıklığı azaltmaya çalışmışlar
      Yeniden yazım ölçeğini silinen satır sayısına göre analiz etmek daha da ilginç olabilir
    • Test kapsamı yüksek, karmaşık projeler
      aslında yeniden yazım için daha elverişli bir ortam yaratabilir
      Rust’ın avantajlarına inanıyorum ama bunu bilimsel kanıttan çok güçlü ampirik dayanak olarak görüyorum
  • İleride Rust benimsenmesinin bellek güvenliği dışındaki bug’lara da nasıl etki edeceğini merak ediyorum

  • Ben oyun geliştirmede Rust kullanıyorum (Bevy değil)
    Sağladığı kararlılık ve throughput sayesinde başka dillere dönmeyi düşünmüyorum

    • Bevy olmadan Rust ile oyun yapmak ilginçmiş
      Hangi crate kombinasyonlarını ve mimariyi kullandığını merak ettim
      Ben de hobi olarak oyun yapıyorum ama Bevy bana biraz fazla büyük gelmişti
  • Artık Rust’ın çekirdek sistem kodunda da yeterince yerleştiğini hissediyorum
    Bu artık bir uphill battle değil
    “Rust ile yeniden yazın” sözü bir meme olmaktan çıkıp gerçek kanıtlara dayanmaya başladı

    • Phoronix üzerindeki Rust yazılarına bakarsanız
      yorumların %80’i hâlâ Rust düşmanlarından geliyor
      “C++ da iyi kullanılırsa güvenlidir”, “Rust’ta da bug var” gibi aynı iddialar tekrarlanıyor
      Bu eleştiriler cahilce; artık komikten çok üzücü geliyor
    • Buradaki yaklaşım, “mevcut kodu yeniden yazmak” değil; yeni kodu Rust ile yazmak stratejisi
    • Rust, Android gibi çekirdeği ve yazılımı doğrudan yöneten ortamlarda mükemmel uyuyor
      Ama her yere uygulamaya çalışmak aşırı olur
      Rust’ın ownership modeli geliştirme hızını düşürüyor ve dilin kendisi de hâlâ evrim geçiriyor
      Ağ gecikmesinin yüksek olduğu servislerde Python ya da Node daha verimli olabilir
      Yani Rust harika ama her sorunun cevabı değil