7 poin oleh GN⁺ 2025-11-15 | 3 komentar | Bagikan ke WhatsApp
  • Di platform Android, setelah adopsi Rust, proporsi kerentanan keamanan terkait memory safety turun menjadi di bawah 20% dari total, sehingga keamanan dan efisiensi pengembangan meningkat secara bersamaan
  • Dibandingkan C/C++, kode Rust memiliki kepadatan kerentanan memory safety 1000 kali lebih rendah, tingkat rollback 4 kali lebih rendah, dan waktu code review 25% lebih singkat
  • Perluasan penggunaan Rust meluas ke kernel, firmware, dan aplikasi 1st-party, sehingga berkontribusi pada peningkatan baseline keamanan di seluruh sistem
  • Melalui kasus hampir terjadinya kerentanan memory safety pertama berbasis Rust yang ditemukan di CrabbyAVIF, pentingnya allocator Scudo dan edukasi penulisan unsafe code yang aman kembali ditegaskan
  • Peralihan ke Rust dinilai sebagai paradigma baru pengembangan perangkat lunak yang sekaligus mencapai penguatan keamanan dan peningkatan kecepatan pengembangan

Dampak adopsi Rust dan data 2025

  • Pada 2025, proporsi kerentanan memory safety di Android turun menjadi kurang dari 20%, membuktikan efektivitas strategi keamanan yang berpusat pada Rust
  • Dibandingkan C/C++, Rust menunjukkan kepadatan kerentanan memory safety 1000 kali lebih rendah, tingkat rollback 4 kali lebih rendah, dan waktu code review 25% lebih singkat
  • Adopsi Rust tidak hanya meningkatkan keamanan, tetapi juga mempercepat delivery perangkat lunak
  • Data mencakup perubahan kode 1st-party dan 3rd-party di seluruh Android platform, meliputi C, C++, Java, Kotlin, dan Rust

Transisi bahasa sistem dan produktivitas pengembangan

  • Android mengadopsi Rust sebagai alternatif C/C++ untuk bahasa pemrograman sistem, dengan tingkat kontrol serupa tetapi risiko lebih rendah
  • Berdasarkan kode 1st-party, pertumbuhan kode Rust telah melampaui C++, sehingga perbandingan metrik pengembangan antar kedua bahasa menjadi memungkinkan
  • Dengan memanfaatkan framework DORA, Android mengukur Throughput dan Stability
    • Perbandingan dilakukan dengan mengendalikan ukuran kode, kumpulan developer, dan tren waktu pada Rust dan C++

Throughput: efisiensi code review meningkat

  • Dibandingkan C++, kode Rust membutuhkan 20% lebih sedikit revisi, dan waktu code review 25% lebih singkat
  • Antara 2023–2024, efisiensi review meningkat tajam seiring bertambahnya keahlian Rust
  • Penurunan review dan rework berujung pada peningkatan produktivitas, dengan peningkatan stabilitas sebagai faktor dampak terbesar

Stability: tingkat rollback turun dan kualitas meningkat

  • Menurut standar DORA, tingkat rollback Rust sekitar 4 kali lebih rendah dibanding C++, terutama menonjol pada perubahan berskala menengah hingga besar
  • Tingkat rollback yang rendah berkontribusi langsung pada produktivitas dengan mengurangi biaya sampingan seperti build ulang, postmortem, dan hambatan tim
  • Dalam survei engineer Google tahun 2022, Rust juga dinilai lebih mudah direview dan memiliki akurasi lebih tinggi
  • Data ini mendukung persepsi tersebut secara empiris

Keamanan dan produktivitas meningkat bersamaan

  • Dulu, penguatan keamanan sering menyebabkan penurunan performa atau keterlambatan pengembangan, tetapi transisi ke Rust meningkatkan keamanan dan efisiensi secara bersamaan
  • Adopsi Rust membentuk struktur yang meningkatkan keamanan, efisiensi pengembangan, dan stabilitas produk sekaligus

Area penyebaran Rust

  • Kernel: dukungan Rust dan driver Rust pertama diperkenalkan di Linux kernel Android 6.12
    • Bekerja sama dengan Arm dan Collabora, pengembangan driver GPU berbasis Rust sedang berlangsung
  • Firmware: adopsi Rust memperkuat keamanan di lingkungan dengan hak akses tinggi dan keterbatasan ketat, disertai tutorial, pelatihan, dan kode yang dipublikasikan
    • Proyek Rusted Firmware-A dijalankan bersama Arm
  • Aplikasi 1st-party:
    • Nearby Presence: protokol penemuan perangkat berbasis Bluetooth diimplementasikan dengan Rust dan berjalan di Google Play Services
    • MLS: protokol keamanan untuk pesan RCS diimplementasikan dengan Rust dan direncanakan akan dimasukkan ke aplikasi Google Messages
    • Chromium: parser PNG, JSON, dan webfont diganti dengan Rust, sehingga lebih mudah memenuhi Rule of 2

Kasus “hampir terjadi” kerentanan memory safety pertama berbasis Rust

  • Di CrabbyAVIF, kerentanan buffer overflow (CVE-2025-48530) ditemukan tepat sebelum pengiriman dan sudah diperbaiki sebelum dipublikasikan
  • Scudo hardened allocator membuat kerentanan tersebut berada dalam kondisi non-exploitable berkat guard page
  • Scudo sudah digunakan secara default pada Pixel dan perangkat lain, dan sedang didorong untuk diwajibkan bagi partner
  • Perbaikan crash reporting juga membuat sinyal deteksi overflow lebih jelas

Pengelolaan unsafe code dan penguatan edukasi

  • Dalam pengembangan OS, unsafe code (C/C++ atau unsafe Rust) tetap tak terelakkan
  • Google menambahkan modul lanjutan unsafe code ke kurikulum Comprehensive Rust
    • Materinya mencakup soundness pada unsafe code, undefined behavior, safety annotation, dan teknik abstraksi yang aman
  • Peningkatan pemahaman terhadap unsafe Rust akan berujung pada peningkatan kualitas kode di Android dan ekosistem open source secara luas

Perbandingan kepadatan kerentanan

  • Dari sekitar 5 juta baris kode Rust di Android, ditemukan 1 potensi kerentanan → kepadatan kerentanan Rust 0.2/MLOC
  • Rata-rata historis C/C++ adalah 1,000/MLOC, yaitu penurunan lebih dari 1000 kali
  • Penurunan kepadatan kerentanan memory safety memperkuat efektivitas keseluruhan arsitektur keamanan
  • Sekitar 4% kode Rust menggunakan blok unsafe{}, tetapi berdasarkan data, kemungkinan bug-nya tetap lebih rendah dibanding C/C++
    • Alasannya antara lain tetap adanya pemeriksaan keamanan, enkapsulasi, dan review tambahan yang lebih ketat

Kesimpulan

  • Di masa lalu, untuk menjamin keamanan dibutuhkan respons mahal seperti analisis statis, sandboxing, dan patch
  • Transisi ke Rust adalah pendekatan baru yang mengamankan keamanan dan efisiensi secara bersamaan
  • Kini, bukan lagi soal “mengembangkan dengan cepat lalu memperbaiki nanti”, melainkan memasuki tahap “mengembangkan dengan cepat sambil sekaligus memperbaiki”
  • Semakin kuat keamanan, semakin besar pula kemungkinan pemulihan performa dan produktivitas

Ucapan terima kasih

  • Disebutkan banyak kontributor, termasuk untuk analisis CVE-2025-48530, peningkatan Scudo, pengembangan pelatihan unsafe Rust, dan penyediaan informasi pemanfaatan Rust
  • Juga disampaikan apresiasi kepada tim Android Rust dan seluruh organisasi Android atas upaya berkelanjutan dalam meningkatkan kualitas

3 komentar

 
brain1401 2025-11-16

Hidup Rust!

 
bus710 2025-11-16

Setelah sedikit mencoba pengembangan firmware dengan Embassy
Stabilitas bahasanya memang bagus, tetapi.... karena tooling-nya sangat baik, produktivitasnya jauh lebih unggul dibanding saat menggunakan C/C++.

 
GN⁺ 2025-11-15
Komentar Hacker News
  • Dari 5 juta baris kode Rust, hanya ditemukan satu kerentanan keselamatan memori
    Artinya, Rust menunjukkan rasio 0,2 kerentanan per sejuta baris kode
    Sebaliknya, C/C++ berada di kisaran 1.000 per sejuta baris, jadi perbedaannya sangat mencolok

    • Di internet masih ada tempat yang langsung membanjiri kritik hanya karena ada yang bilang “mari rewrite ke Rust”
      Tapi di hadapan data yang sejelas ini, sulit dipahami kenapa masih diabaikan
      Saya sendiri belum pernah memakai Rust, tapi suatu hari pasti ingin mempelajarinya
    • Secara pribadi, yang lebih mengesankan dari tulisan ini adalah poin bahwa “code review jadi lebih mudah dan rollback berkurang”
      Keamanan itu penting, tapi deploy tanpa rollback itulah yang benar-benar diinginkan developer
      Menulis dengan Rust memberi rasa stabilitas seperti itu
    • Rust adalah terobosan rekayasa yang sesungguhnya
      Inovasi seperti ini benar-benar jarang muncul dalam ilmu komputer
    • Kalau statistik ini benar, masa depan C++ terlihat suram
      Di 2025, nyaris tidak ada alasan memakai C++ selain memelihara codebase yang sudah ada
      Semua yang baru seharusnya dibuat dengan Rust
    • Namun ini adalah perbandingan kode baru vs kode lama, jadi tidak sepenuhnya adil
      Proyek baru dimulai dengan sistem pengujian yang lebih mutakhir dan tujuan yang jelas
      Meski begitu, sulit dibantah bahwa Rust adalah bahasa yang lebih sehat secara mental daripada C++
  • Belajar Rust benar-benar menyakitkan, jauh lebih rumit daripada bahasa lain
    Tapi setelah beberapa kali bergulat dengan compiler, muncul keyakinan bahwa saat kodenya jalan, hampir tidak ada masalah
    Setelah memakai Ruby, JS/TS, dan Python lalu pindah ke Rust, rasanya seperti “kalau sudah bisa compile, 80–90% sudah selesai”
    Dan juga cepat

    • Fitur Rust yang paling saya suka adalah menangkap runtime error pada compile time
      Proses berdebat dengan compiler itu sebenarnya proses memperbaiki bug tersembunyi lebih awal
    • Pada titik tertentu, kita tidak lagi melawan compiler, melainkan berkolaborasi dengannya
      Cara berpikir Rust mulai menguasai kepala kita
    • Rust mudah dipelajari? Saya sendiri sudah 4–5 kali belajar ulang
      Itu lelucon bahwa bahasa ini mudah dilupakan dan mudah dipelajari lagi
    • Apakah TypeScript juga tidak memberi rasa aman seperti ini?
      Untuk Ruby, JS, dan Python saya setuju, tapi TS menurut saya agak berbeda
  • Google masih belum mendukung Rust secara resmi di userspace Android
    NDK dan Android Studio masih hanya mendukung C/C++
    Kalau ingin memakai Rust, komunitaslah yang harus membuat tool-nya sendiri

    • Sebenarnya Google juga bergerak ke arah menghilangkan NDK itu sendiri secara bertahap
      Sulit membuat aplikasi tanpa kode di sisi JVM
    • Meski begitu, tetap memungkinkan membangun file .so dengan Rust lalu memasukkannya ke NDK
      ABI Android tidak bergantung pada bahasa selama aturannya dipatuhi
  • Ini seperti kejadian yang menjadi bom penenggelam C++
    Sekarang alasan seperti “Rust juga unsafe” atau “C++ juga aman kalau dipakai dengan benar” makin sulit dipertahankan

    • Keunggulan Rust bukan cuma soal keamanan, tapi juga cargo, sintaks, dan manajemen modul secara keseluruhan
      Menulis kode yang aman memang merepotkan, tapi setelah lolos, kita jadi percaya diri bahkan di lingkungan multithread
      Saya juga ingin membuat aplikasi Android dengan Rust
    • Saya tidak tertarik pada perang bahasa
      Saya hanya senang karena pilihan untuk membuat alat sistem yang aman bertambah banyak
    • Compiler Rust pada akhirnya juga berdiri di atas LLVM dan GCC
      Standar industri masih berpusat pada C/C++, jadi sulit bagi Rust untuk sepenuhnya menggantikannya
    • Pada akhirnya, kecocokan Rust bergantung pada jenis software yang dibuat
  • Perbedaan tingkat rollback sampai 4 kali lipat itu mengejutkan
    Kebanyakan angka lain sebenarnya sudah sesuai dugaan, tapi yang ini baru

    • Semua orang tahu Rust aman, tapi selisih 1000 kali tetap mengejutkan
      Ini bukan berarti Rust sangat sempurna, melainkan bug di kode lama memang sebanyak itu
      Mengesankan melihat data seperti ini muncul dari codebase berskala besar
    • Kebanyakan codebase kekurangan desain pengujian awal
      Jika sejak awal dibuat sistem acceptance test per modul, sebagian verifikasi yang dilakukan Rust bisa digantikan oleh pengujian
      Bukan cuma kebocoran memori, penurunan performa pun bisa diawasi
    • Jika kode baru dipertahankan di Rust dan kode lama tetap di C++,
      mungkin ini hanya perbedaan risiko kode lama
    • Menarik bahwa tingkat rollback tetap konsisten meskipun ukuran kode berbeda-beda
  • Seorang teman mendapat proyek rewrite ke Rust,
    lalu bercanda, “gaji tiga tahun ke depan sudah aman”
    Ini strategi bercanda berupa loop rewrite → jaminan keselamatan memori → gaji stabil
    Sambil menunggu compiler Rust yang lambat selesai compile, dia bisa santai membaca kode lama

  • Data ini tidak mengendalikan variabel pengganggu
    Biasanya target rewrite adalah kode yang sudah dipahami dengan baik, jadi review lebih cepat dan rollback lebih sedikit
    Sebaliknya, kode legacy yang kompleks butuh review lebih lama dan lebih sering rollback

    • Tapi grafik pertama tidak bisa dijelaskan hanya dengan fenomena itu
      Kalau yang di-rewrite hanya kode yang mudah, rasio kerentanan keselamatan memori pasti akan terlihat berbeda
      Dalam praktiknya, justru kode yang paling bermasalah cenderung ditulis ulang ke Rust
      Ini memang bukan eksperimen sempurna, tapi lebih masuk akal dilihat sebagai efek nyata
    • Tulisan ini sebagian besar membahas penulisan kode baru
    • Mereka mencoba mengurangi bias dengan membandingkan berdasarkan ukuran perubahan (S/M/L)
      Akan lebih menarik jika skala rewrite dianalisis berdasarkan jumlah baris yang dihapus
    • Semakin kompleks proyek dengan cakupan testing tinggi,
      justru semakin menjadi lingkungan yang mudah untuk rewrite
      Saya percaya pada kelebihan Rust, tapi ini lebih tepat dilihat sebagai bukti empiris yang kuat ketimbang bukti ilmiah
  • Ke depan, saya penasaran bagaimana adopsi Rust akan memengaruhi bug non-keselamatan memori

  • Saya memakai Rust untuk pengembangan game (bukan Bevy)
    Karena stabilitas dan throughput-nya, saya tidak berniat kembali ke bahasa lain

    • Menarik juga membuat game dengan Rust tanpa Bevy
      Saya penasaran kombinasi crate dan arsitektur seperti apa yang dipakai
      Saya juga membuat game sebagai hobi, dan Bevy terasa agak berlebihan
  • Sekarang saya merasa Rust sudah benar-benar mapan bahkan untuk kode sistem inti
    Ini bukan lagi uphill battle
    “Tulis ulang ke Rust” bukan lagi meme; sekarang ada dasar nyata yang terus menumpuk

    • Kalau melihat tulisan terkait Rust di Phoronix,
      80% komentar masih berasal dari pembenci Rust
      Isinya cuma pengulangan klaim seperti “C++ juga aman kalau dipakai dengan benar” atau “Rust juga punya bug”
      Kritik yang lahir dari ketidaktahuan, dan sekarang lebih menyedihkan daripada lucu
    • Pendekatan ini bukan “rewrite kode lama”, melainkan strategi menulis kode baru dengan Rust
    • Rust sangat cocok di lingkungan seperti Android, di mana kernel dan software dikelola langsung
      Tapi mendorongnya untuk semua tempat itu berlebihan
      Model ownership Rust memperlambat kecepatan pengembangan, dan bahasanya sendiri juga masih terus berevolusi
      Untuk layanan dengan latensi jaringan tinggi, Python atau Node bisa lebih efisien
      Jadi, Rust memang hebat, tapi bukan jawaban untuk semua masalah