Rust di Android: Bergerak Lebih Cepat dan Memperbaiki Masalah
(security.googleblog.com)- 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
Hidup Rust!
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++.
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
Tapi di hadapan data yang sejelas ini, sulit dipahami kenapa masih diabaikan
Saya sendiri belum pernah memakai Rust, tapi suatu hari pasti ingin mempelajarinya
Keamanan itu penting, tapi deploy tanpa rollback itulah yang benar-benar diinginkan developer
Menulis dengan Rust memberi rasa stabilitas seperti itu
Inovasi seperti ini benar-benar jarang muncul dalam ilmu komputer
Di 2025, nyaris tidak ada alasan memakai C++ selain memelihara codebase yang sudah ada
Semua yang baru seharusnya dibuat dengan Rust
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
Proses berdebat dengan compiler itu sebenarnya proses memperbaiki bug tersembunyi lebih awal
Cara berpikir Rust mulai menguasai kepala kita
Itu lelucon bahwa bahasa ini mudah dilupakan dan mudah dipelajari lagi
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
Sulit membuat aplikasi tanpa kode di sisi JVM
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
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 hanya senang karena pilihan untuk membuat alat sistem yang aman bertambah banyak
Standar industri masih berpusat pada C/C++, jadi sulit bagi Rust untuk sepenuhnya menggantikannya
Perbedaan tingkat rollback sampai 4 kali lipat itu mengejutkan
Kebanyakan angka lain sebenarnya sudah sesuai dugaan, tapi yang ini baru
Ini bukan berarti Rust sangat sempurna, melainkan bug di kode lama memang sebanyak itu
Mengesankan melihat data seperti ini muncul dari codebase berskala besar
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
mungkin ini hanya perbedaan risiko kode lama
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
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
Akan lebih menarik jika skala rewrite dianalisis berdasarkan jumlah baris yang dihapus
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
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
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
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