- 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
Yaşasın Rust!
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.
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
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
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
Bilgisayar biliminde böyle yenilikler gerçekten çok nadir çıkı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
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ı
Derleyiciyle kavga etme süreci aslında gizli kalmış bug’ları önceden düzeltme süreci
Rust’ın düşünme biçimi zihninizi ele geçiriyor
Espri şu: O kadar kolay unutuluyor ki tekrar tekrar öğrenmek kolay oluyor
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
JVM tarafında kod olmadan uygulama yapmak zorlaşıyor
.sodosyası derleyip NDK’ya koymak mümkünAndroid’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
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
Sadece güvenli sistem araçları geliştirmek için seçeneklerin artmış olmasına seviniyorum
Sektör standardı hâlâ C/C++ merkezli olduğu için Rust’ın her şeyi tamamen değiştirmesi zor
Rollback oranının 4 kat farklı olması sarsıcı
Çoğu metrik zaten beklenen bir tabloydu ama bu yeniydi
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
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
Bu sadece eski kodun risk farkı da olabilir
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
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
Yeniden yazım ölçeğini silinen satır sayısına göre analiz etmek daha da ilginç olabilir
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
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ı
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
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