6 puan yazan GN⁺ 2026-01-29 | 1 yorum | WhatsApp'ta paylaş
  • WhatsApp, 3 milyardan fazla kullanıcısıyla, kötü amaçlı yazılım tehditlerine karşı savunmayı güçlendirmek için Rust tabanlı bir güvenlik katmanı devreye aldı
  • Medya tutarlılığı kütüphanesi Rust ile yeniden yazıldı ve milyarlarca cihaz ile tarayıcıya dağıtılarak küresel ölçekte gerçek kullanım doğrulaması tamamlandı
  • Mevcut 160 bin satırlık C++ kodu 90 bin satır Rust ile değiştirilirken hem performans hem de bellek verimliliği iyileştirildi
  • 2015’teki Stagefright açığı sonrasında medya dosyası işleme sürecinin güvenliğini artırmak için Rust gibi bellek güvenli dillerin benimsenmesi yönünde çalışılıyordu
  • Bu değişim, WhatsApp·Messenger·Instagram genelindeki güvenlik stratejisinde bellek güvenli dillere daha fazla ağırlık verilmesi açısından bir dönüm noktası niteliğinde

WhatsApp’ın medya işleme stratejisi

  • WhatsApp, 3 milyardan fazla kişinin kullandığı uçtan uca şifreli mesajlaşma hizmeti olarak, süregelen güvenlik tehditlerine karşı stratejisini sürekli geliştirdi
    • Kullanıcılar görsel, video ve benzeri medya paylaştığında bunların kötü amaçlı yazılım içermesi mümkün
    • Bazı dosyalar işletim sistemi veya uygulamadaki yaması yapılmamış açıkları istismar edebilir
  • Bunu önlemek için medya paylaşım özelliğine Rust dili entegre edilerek bellek güvenliği sağlandı
    • Bunun, küresel ölçekte en büyük Rust tabanlı kütüphane dağıtım örneklerinden biri olduğu belirtiliyor

2015 Android Stagefright açığı ve alınan önlemler

  • 2015’te Android’deki Stagefright açığı, işletim sistemi düzeyindeki medya işleme kütüphanesinde bulunuyordu ve uygulama tarafında düzeltilemezdi
  • WhatsApp, kendi C++ kütüphanesi “wamedia” üzerinde değişiklik yaparak MP4 standardına uymayan dosyaları tespit edecek şekilde geliştirdi
    • Böylece işletim sistemi güncellemesi olmadan da kullanıcılar korunabildi
  • Ancak wamedia’nın güvenilmeyen girdileri otomatik olarak işlemesi, bellek güvenli bir dile geçiş ihtiyacını ortaya koydu

Rust’a geçiş: büyük ölçekli yeniden yazım ve sonuçları

  • WhatsApp, mevcut C++ sürümüyle paralel olarak wamedia’nın Rust sürümünü geliştirdi
    • Differential fuzzing, entegrasyon testleri ve birim testleriyle iki uygulama arasındaki uyumluluk doğrulandı
  • Başlangıçta Rust standart kütüphanesinden kaynaklanan ikili dosya boyutu artışı ve build sistemi uyumluluğu sorunları yaşansa da uzun vadeli bir destek yapısı kuruldu
  • Sonuç olarak 160 bin satır C++ → 90 bin satır Rust dönüşümü gerçekleşti; hem performans hem de bellek kullanım verimliliği iyileşti
  • Android, iOS, Mac, Web ve giyilebilir cihazlar dahil tüm platformlarda Rust sürümünün tam dağıtımı tamamlandı
  • Sonrasında “Kaleidoscope” sistemi devreye alınarak PDF, yürütülebilir dosya gibi riskli dosya türleri tespit edilmeye, ayrıca uzantı sahteciliği ve MIME spoofing belirlenmeye başlandı

WhatsApp’ın güvenlik yaklaşımı

  • WhatsApp; uçtan uca şifreleme, şifrelenmiş yedekler, anahtar şeffaflığı ve arama koruma özellikleri dahil olmak üzere çeşitli güvenlik katmanları kullanıyor
  • Riskleri belirlemek için CVE açıklamaları, iç ve dış güvenlik denetimleri, fuzzing ve statik analiz, tedarik zinciri yönetimi ve saldırı yüzeyi analizi uygulanıyor
  • Bug Bounty programı genişletilerek araştırmacıların WhatsApp ağ protokolünü inceleyebilmesi için Research Proxy sunuldu
  • Birçok önemli açığın C/C++ bellek güvenliği sorunlarından kaynaklandığı görülünce üç strateji birlikte uygulanmaya başlandı
    1. Gereksiz saldırı yüzeyini en aza indirmek
    2. Kalan C/C++ kodunun güvenlik güvencesini artırmak
    3. Yeni kod için varsayılan dili bellek güvenli bir dil haline getirmek

Rust benimsemesinin hızlanması ve gelecek yönelim

  • Rust, WhatsApp’ın yüksek performanslı ve çapraz platform güvenlik kütüphaneleri geliştirmesini mümkün kılıyor
  • Bu değişim, kullanıcının fark etmediği ek bir güvenlik katmanı sağlıyor ve defense-in-depth stratejisinin bir parçası olarak konumlanıyor
  • WhatsApp ve Meta güvenlik ekipleri, Rust’ın yüksek etki sağlayacağı alanları genişletiyor ve gelecekte Rust benimsemesini hızlandırmayı planlıyor

1 yorum

 
GN⁺ 2026-01-29
Hacker News yorumları
  • WhatsApp, günde 3 milyar kişinin kullandığı bir mesajlaşma uygulaması
    ABD'de pek kullanılmasa da, dünya genelinde temel bir iletişim altyapısı haline gelmiş durumda
    Küresel pazara yönelik bir ürün yapmak istiyorsanız, bu kullanıcıların düşünce yapısını ve alışkanlıklarını anlamanız gerekir

    • Bir Avrupalı olarak ben hâlâ WhatsApp kurmayı reddediyorum
      Böyle bağımsız insanlardan hâlâ birkaç düzine var
      Lütfen WhatsApp'ı daha da kaçınılmaz hale getirecek işlere katkıda bulunmayın
    • Yaşadığım Malavi'de WhatsApp, e-postadan çok daha yaygın kullanılıyor
      Çoğu insan e-postasını neredeyse hiç kontrol etmiyor
      Bir geliştirici topluluğu yürütüyorum ve sık sık grup üye sınırına (1024 kişi) takılıyoruz
      Discord ya da Slack'e taşımaya çalışsak da sonunda tekrar WhatsApp'a dönüyoruz
      Çünkü operatör veri paketleri sayesinde WhatsApp fiilen ücretsiz
    • WhatsApp'ın yerleşik olduğu pazarlarda reklam ve spam zaten artıyor, kalite de düşüyor
      İşletme mesajı spam'iyle ilgili haberler TechCrunch'ta defalarca çıktı ama pratikte neredeyse hiçbir şey değişmedi
      Topluluk özelliklerinin UX'i de pek iyi değil
      Sonuçta sorunun Facebook ekosistemine bağımlılığın derinleşmesi olduğunu düşünüyorum
    • Açıkçası 3 milyar sayısı bana abartılı geliyor
      Ben 10 yıldır WhatsApp kullanmıyorum ve arkadaşlarımın ya da ailemin çoğu da Signal'e geçti
      Avrupa'da hâlâ Viber kullanılan bölgeler var
    • Kuzey Amerika ya da Avrupa'daki kullanıcılar arasında gerçekten gelir üreten kişi sayısı muhtemelen 200 milyon civarındadır
  • Rust ile yazılmış kütüphaneler arasında en büyük dağıtım denmiş ama gerçekte Fontations daha büyük olabilir
    Chromium'a dahil ve bağımlılıkları da hesaba katılınca kurulu tabanı daha geniş olabilir
    Alıntıya bakılırsa WhatsApp, libsignal'ı doğrudan kullanmıyor gibi görünüyor

    • Bilgi olarak, Wamedia Meta'nın ana uygulamalarına dahil ve iOS, Android, Desktop ve Web genelinde dağıtılıyor
    • Chromium'da zaten birden fazla Rust kütüphanesi bulunuyor
      Örneğin: image-png, CrabbyAvif, qr_code, icu4x
  • Kodun 160 bin satırdan 90 bin satıra düşmesi güzel ama paralel rollout stratejisi daha da ilginç
    Rust ve C++ sürümlerini aynı anda çalıştırıp differential fuzzing ile eşdeğerliği doğrulamaları son derece gerçekçi bir yaklaşım
    Mobil istemcilerde binary boyutu önemliyken, build tooling'e yatırım yapmış olmaları etkileyici

    • Acaba no_std kullandılar mı ya da standart kütüphaneyi yeniden mi yapılandırdılar diye merak ediyorum
      Bu sadece nightly build'de mümkün olan bir optimizasyon da olabilir
  • Böyle bir yeniden yazımda en zor kısım, Rust uygulamasının kendisinden çok mevcut parser'ın hatalarıyla uyumluluğu korumak
    Gerçek medya dosyaları çoğu zaman biçim olarak hatalı oluyor; fazla katı parse ederseniz kullanıcı verisi bozulur
    differential fuzzing fiilen tek pratik yaklaşım

    • Wamedia'nın tasarımında özellikle hata uyumluluğunu koruma hedeflenmemiş gibi görünüyor
    • Bu yorum bana biraz AI tarafından yazılmış gibi geldi
  • WhatsApp'ın Rust ile en büyük dağıtımı yaptığı söyleniyorsa, muhtemelen Windows 11'den daha fazla cihazda çalıştığı içindir
    Yine de WhatsApp'ın libsignal'ı doğrudan kullanıp kullanmadığı belirsiz

    • WhatsApp libsignal kullanmıyor
      Android'in kendisinde zaten epey Rust tabanlı kod var ve gömülü cihazlarda da yaygın biçimde kullanılıyor
    • Microsoft is Getting Rusty videosuna bakılırsa, Rust benimsenmesi daha çok Azure tarafında ilerliyor
      Windows ise hâlâ büyük ölçüde C/C++ merkezli
  • Rust standart kütüphanesinin eklenmesiyle binary boyutunda artış olduğu söyleniyor ama bunun nasıl çözüldüğü açıkça belirtilmiyor

    • Muhtemelen uygun olan yerlerde no_std kullanmışlardır
      İlgili commit'ler: commit1, commit2
    • Yaklaşık 300KB'lık bir ek yükü kabul etmiş olabilirler
      Asıl sorun boyutun kendisinden çok tekrarlanan Rust bağımlılıkları
      C++ ve Rust'ın karıştığı build'lerde her biri kendi libstd'sini dahil ediyor, bu yüzden Bazel gibi birleşik bir build sistemi gerekiyor
    • Gerçekte build sistemi optimizasyonuna ciddi yatırım yapmışlar
      Başlangıçta yaklaşık 200KiB ek yükü kabul ettiler ama Buck2'ye geçişle hem boyutu hem de build sürelerini azalttılar
      Bu, en güncel clang optimizasyonları ve LTO iyileştirmeleri sayesinde oldu
    • Referans olması açısından min-sized-rust gibi yaklaşımlar da var
    • Genel olarak yazı bana teknik ayrıntıdan çok PR niteliği taşıyor gibi geldi
  • Signal'in de benzer bir şey yapıp yapmadığını merak ediyorum
    libsignal Rust ile uygulanmış durumda ama geri kalan kısımlar hakkında pek bilgim yok

  • “3 milyar kişiye varsayılan olarak uçtan uca şifreleme sağlıyor” ifadesi vardı ama gerçekte mesajları okuyabildiğine dair haberler de çıkmıştı

    • Buradaki kilit kelime muhtemelen “varsayılan (default)”
      Skype da varsayılan olarak şifreliydi ama sunucu ayarına göre bu devre dışı bırakılabiliyordu
    • Tüm şifreleme sonuçta uç noktanın kim olduğuna bağlı
      Asıl mesele, Meta'nın verileri gözetlemediğine güvenip güvenemeyeceğiniz
  • Meta'nın phishing ya da ön ödemeli kart dolandırıcılığını engellemezken başka işlere bu kadar heves göstermesi ironik

  • Rust kullanımının çok sayıda hatayı azaltmış olması etkileyici

    • Rust'ın güvenilirliği yalnızca bellek hatalarını önlemesinden kaynaklanmıyor
      C++'ta sayısız tanımsız davranış (UB) var ama Rust bunları yapısal olarak engelliyor
      Güçlü tip sistemi sayesinde güvenilirlik ciddi ölçüde artıyor