6 poin oleh GN⁺ 2026-01-29 | 1 komentar | Bagikan ke WhatsApp
  • WhatsApp, yang memiliki lebih dari 3 miliar pengguna, memperkenalkan lapisan keamanan berbasis Rust untuk memperkuat pertahanan terhadap ancaman malware
  • Library konsistensi media ditulis ulang dengan Rust dan didistribusikan ke miliaran perangkat serta browser, menyelesaikan validasi penggunaan nyata pada skala global
  • Sebanyak 160 ribu baris kode C++ lama digantikan dengan 90 ribu baris Rust, sekaligus meningkatkan performa dan efisiensi memori
  • Setelah kerentanan Stagefright pada 2015, perusahaan mendorong adopsi bahasa yang aman terhadap memori seperti Rust untuk meningkatkan keamanan pemrosesan file media
  • Perubahan ini menjadi titik balik yang memperbesar porsi bahasa aman memori dalam strategi keamanan WhatsApp·Messenger·Instagram secara keseluruhan

Strategi pemrosesan media WhatsApp

  • WhatsApp adalah layanan pesan terenkripsi end-to-end yang digunakan oleh lebih dari 3 miliar orang, dan terus mengembangkan strateginya untuk menghadapi ancaman keamanan yang berkelanjutan
    • Saat pengguna membagikan media seperti gambar dan video, ada kemungkinan media tersebut mengandung malware
    • Sebagian file dapat mengeksploitasi kerentanan yang belum ditambal pada sistem operasi atau aplikasi
  • Untuk mencegah hal ini, bahasa Rust diperkenalkan ke fitur berbagi media guna memastikan keamanan memori
    • Ini disebut sebagai salah satu kasus distribusi library berbasis Rust dengan skala terbesar di dunia

Kerentanan Android Stagefright 2015 dan responsnya

  • Kerentanan Stagefright di Android pada 2015 berada di library pemrosesan media tingkat OS, sehingga tidak dapat diperbaiki di level aplikasi
  • WhatsApp memperbarui library C++ miliknya, “wamedia”, agar dapat mendeteksi file yang tidak mengikuti standar MP4
    • Dengan begitu, pengguna dapat dilindungi tanpa harus menunggu pembaruan OS
  • Namun, karena wamedia secara otomatis memproses input yang tidak tepercaya, muncul kebutuhan untuk beralih ke bahasa yang aman terhadap memori

Transisi ke Rust: penulisan ulang skala besar dan hasilnya

  • WhatsApp mengembangkan versi Rust dari wamedia secara paralel dengan versi C++ yang sudah ada
    • Differential fuzzing, integration test, dan unit test digunakan untuk memverifikasi kompatibilitas antara kedua implementasi
  • Pada awalnya ada masalah ukuran biner yang membesar akibat standard library Rust dan kompatibilitas dengan sistem build, tetapi dukungan jangka panjang berhasil dibangun
  • Hasilnya, 160 ribu baris C++ → 90 ribu baris Rust, dengan peningkatan pada performa dan efisiensi penggunaan memori
  • Distribusi penuh versi Rust telah selesai ke semua platform seperti Android, iOS, Mac, Web, dan wearable
  • Setelah itu, sistem “Kaleidoscope” diperkenalkan untuk mendeteksi jenis file berisiko seperti PDF dan file executable, serta mengidentifikasi pemalsuan ekstensi dan MIME spoofing

Pendekatan keamanan WhatsApp

  • WhatsApp mengoperasikan berbagai lapisan keamanan seperti enkripsi end-to-end, backup terenkripsi, key transparency, dan fitur perlindungan panggilan
  • Risiko diidentifikasi melalui pengungkapan CVE, audit keamanan internal dan eksternal, fuzzing dan analisis statis, manajemen rantai pasok, serta analisis attack surface
  • Dengan memperluas program Bug Bounty, peneliti diberi Research Proxy agar dapat menganalisis protokol jaringan WhatsApp
  • Setelah memastikan bahwa banyak kerentanan utama berasal dari masalah keamanan memori di C/C++, tiga strategi dijalankan secara paralel
    1. Meminimalkan attack surface yang tidak perlu
    2. Memperkuat jaminan keamanan pada sisa kode C/C++
    3. Mengalihkan bahasa default untuk kode baru ke bahasa yang aman terhadap memori

Percepatan adopsi Rust dan arah ke depan

  • Rust memungkinkan WhatsApp mengembangkan library keamanan berperforma tinggi dan lintas platform
  • Perubahan ini memberi pengguna lapisan keamanan tambahan yang tidak terlihat, sebagai bagian dari strategi defense-in-depth
  • Tim keamanan WhatsApp dan Meta tengah memperluas area penerapan Rust dengan dampak tinggi, dan berencana mempercepat adopsi Rust di masa depan

1 komentar

 
GN⁺ 2026-01-29
Komentar Hacker News
  • WhatsApp adalah messenger yang digunakan oleh 3 miliar orang setiap hari
    Di AS memang tidak terlalu dipakai, tetapi secara global sudah menjadi infrastruktur komunikasi yang mendasar
    Jika ingin membangun produk untuk pasar global, kita harus memahami pola pikir dan kebiasaan para pengguna ini

    • Sebagai orang Eropa, saya masih menolak memasang WhatsApp
      Masih ada setidaknya puluhan orang independen seperti ini
      Tolong jangan ikut membuat WhatsApp jadi semakin tak terhindarkan
    • Di Malawi, tempat saya tinggal, WhatsApp dipakai jauh lebih luas daripada email
      Kebanyakan orang hampir tidak pernah memeriksa email
      Saya mengelola komunitas developer, dan sering terbentur batas anggota grup (1024 orang)
      Walaupun mencoba pindah ke Discord atau Slack, akhirnya selalu kembali ke WhatsApp
      Karena berkat bundle data operator, WhatsApp pada praktiknya gratis
    • Di pasar tempat WhatsApp sudah mapan, kualitasnya sudah menurun karena iklan dan spam makin banyak
      Artikel tentang spam pesan bisnis sudah beberapa kali dimuat di TechCrunch, tetapi kenyataannya hampir tidak ada yang berubah
      UX fitur komunitasnya juga kurang bagus
      Pada akhirnya, masalahnya adalah ketergantungan yang makin dalam pada ekosistem Facebook
    • Sejujurnya, angka 3 miliar itu terasa dibesar-besarkan
      Saya sudah 10 tahun tidak memakai WhatsApp, dan sebagian besar teman serta keluarga saya juga sudah pindah ke Signal
      Di Eropa masih ada wilayah yang tetap memakai Viber
    • Di antara pengguna Amerika Utara atau Eropa, mungkin hanya sekitar 200 juta yang benar-benar menghasilkan pendapatan
  • Disebut sebagai deployment library berbasis Rust terbesar, tetapi sebenarnya Fontations mungkin lebih besar
    Karena sudah masuk ke Chromium, dan jika menghitung dependensinya, basis instalasinya bisa jadi lebih luas
    Dari kutipannya, tampaknya WhatsApp tidak langsung memakai libsignal

    • Sebagai referensi, Wamedia disertakan dalam aplikasi-aplikasi utama Meta dan didistribusikan di iOS, Android, Desktop, dan Web
    • Chromium sendiri sudah menyertakan beberapa library Rust
      Contoh: image-png, CrabbyAvif, qr_code, icu4x
  • Menurunnya jumlah kode dari 160 ribu baris ke 90 ribu baris memang bagus, tetapi yang lebih menarik adalah strategi rollout paralel
    Menjalankan versi Rust dan C++ secara bersamaan lalu memverifikasi kesetaraannya lewat differential fuzzing terasa sangat realistis
    Di klien mobile, ukuran biner itu penting, jadi investasi pada tooling build juga mengesankan

    • Saya penasaran apakah mereka memakai no_std atau menyusun ulang standard library
      Bisa jadi itu optimasi yang hanya mungkin di nightly build
  • Bagian tersulit dari rewrite seperti ini bukan implementasi Rust-nya sendiri, melainkan menjaga kompatibilitas bug parser lama
    File media di dunia nyata sering kali formatnya rusak, jadi kalau parsing terlalu ketat, data pengguna bisa rusak
    differential fuzzing pada praktiknya adalah satu-satunya pendekatan yang benar-benar praktis

    • Wamedia tampaknya memang dirancang tanpa sengaja menargetkan kompatibilitas bug
    • Saya jadi merasa ini seperti komentar yang ditulis AI
  • Pernyataan bahwa WhatsApp melakukan deployment Rust terbesar kemungkinan karena ia berjalan di lebih banyak perangkat daripada Windows 11
    Meski begitu, tetap diragukan apakah WhatsApp benar-benar memakai libsignal secara langsung

    • WhatsApp tidak memakai libsignal
      Android sendiri sudah memuat banyak kode berbasis Rust, dan di perangkat embedded juga digunakan secara luas
    • Jika melihat video Microsoft is Getting Rusty, adopsi Rust terutama berlangsung di sisi Azure,
      sementara Windows masih tetap berpusat pada C/C++
  • Disebutkan bahwa adopsi standard library Rust menyebabkan peningkatan ukuran biner, tetapi tidak dijelaskan bagaimana itu diatasi

    • Mungkin mereka memakai no_std di tempat-tempat yang memungkinkan
      Commit terkait: commit1, commit2
    • Mereka mungkin rela menerima overhead sekitar 300KB
      Masalah utamanya bukan ukuran itu sendiri, melainkan dependensi Rust yang terduplikasi
      Dalam build campuran C++ dan Rust, masing-masing membawa libstd sendiri, jadi diperlukan sistem build terpadu seperti Bazel
    • Faktanya, mereka berinvestasi besar pada optimasi sistem build
      Awalnya mereka menerima overhead sekitar 200KiB, tetapi dengan migrasi ke Buck2 ukuran dan waktu build sama-sama turun
      Ini berkat optimasi clang terbaru dan peningkatan LTO
    • Sebagai referensi, ada juga pendekatan seperti min-sized-rust
    • Secara keseluruhan, tulisannya terasa lebih seperti materi PR daripada pembahasan teknis mendalam
  • Saya penasaran apakah Signal juga melakukan hal serupa
    libsignal memang diimplementasikan dalam Rust, tetapi untuk bagian lainnya saya kurang tahu

  • Ada kalimat yang menyebut “secara default memberikan end-to-end encryption kepada 3 miliar orang”, tetapi pernah juga ada berita bahwa pesan-pesannya bisa dibaca

    • Kata “default” tampaknya yang paling penting
      Skype juga terenkripsi secara default, tetapi bisa dinonaktifkan tergantung konfigurasi server
    • Semua enkripsi pada akhirnya bergantung pada siapa yang berada di ujungnya
      Pertanyaannya adalah apakah kita bisa mempercayai bahwa Meta tidak mengintip data itu
  • Ironis bahwa Meta begitu giat dalam hal lain, tetapi tidak menghentikan phishing atau penipuan kartu prabayar

  • Menarik bahwa jumlah bug banyak berkurang setelah adopsi Rust

    • Keamanan Rust bukan semata-mata karena mencegah error memori
      C++ memiliki banyak sekali undefined behavior (UB), sedangkan Rust memblokirnya secara struktural
      Berkat sistem tipe yang kuat, keandalannya meningkat besar