Halaman ini menjelaskan bug dan alat keamanan memori.
Ketidakamanan memori
Bug keamanan memori, error dalam menangani memori dalam bahasa pemrograman native, adalah masalah paling umum dalam codebase Android. Bug ini menyebabkan lebih dari 60% kerentanan keamanan tingkat keparahan tinggi dan jutaan error yang terlihat oleh pengguna.
Gambar 1. Bug keamanan memori dan dampak negatifnya terhadap kualitas, keamanan, dan biaya.
Bug keamanan memori berdampak negatif terhadap kualitas dan stabilitas serta menyebabkan a
sebagian besar error yang diamati di perangkat pengguna akhir. Oleh karena itu, kepadatan bug keamanan memori yang tinggi
berkorelasi langsung dengan pengalaman pengguna yang buruk.
Kode native, yang ditulis dalam bahasa yang tidak aman untuk memori seperti C, C++, dan Assembly, mewakili lebih dari 70% kode platform Android dan ada di sekitar 50% aplikasi Google Play Store.
Mengingat kompleksitas kode yang terus meningkat, jika tidak ditangani, bug keamanan
memori akan meningkat seiring waktu. Oleh karena itu, menyediakan alat dan teknologi yang dapat mendeteksi dan mengurangi bug tersebut bagi ekosistem kami
sangat penting untuk kesuksesan jangka panjang kami.
Selama beberapa tahun terakhir, kami telah bekerja sama dengan partner hardware
kami untuk mengembangkan teknologi hardware seperti pemberian tag memori Arm dan telah
memperkenalkan Rust dalam codebase Android.
Teknologi ini akan mempercepat jalur kami menuju keamanan memori dan
akan membantu industri software yang lebih luas mengatasi area masalah utama.
Bug keamanan memori berdampak negatif terhadap kualitas
Bug keamanan memori laten dapat menyebabkan hasil non-deterministik, bergantung pada status sistem. Perilaku yang tidak dapat diprediksi ini menyebabkan error dan gangguan bagi pengguna kami.
Setiap hari, kami mengamati jutaan error native dari perangkat pengguna akhir dan
dengan diperkenalkannya GWP-ASan, kami telah melacak sebagian besar error tersebut ke bug keamanan
memori.
Titik data ini memvalidasi korelasi antara kualitas
dan kepadatan bug keamanan memori serta sesuai dengan yang diamati oleh rekan Chrome
kami (lihat daftar bug penting GWP-ASan Chrome ).
Bug keamanan memori berdampak negatif terhadap keamanan
Bug keamanan memori secara konsisten menjadi kontributor utama kerentanan keamanan Android, sejak rilis Android pertama.
Gambar 2. Kontribusi bug keamanan memori terhadap kerentanan Android.
Meskipun kami senang mengetahui bahwa ini bukan hanya masalah Android
(lihat Chrome
dan Microsoft
statistik), kami perlu melakukan lebih banyak hal untuk keamanan pengguna kami.
Tim Project Zero
di Google melacak
eksploitasi zero-day yang telah digunakan dalam serangan nyata terhadap pengguna sebagai kerentanan zero-day. Ini bukan bug hipotetis, tetapi eksploitasi yang aktif digunakan dalam
serangan terhadap pengguna. Bug keamanan memori (kerusakan memori dan penggunaan setelah pembebasan)
merupakan mayoritas yang sangat besar.
Bug keamanan memori meningkatkan biaya
Memastikan perangkat selalu diupdate dengan perbaikan keamanan menjaga keamanan pengguna kami, tetapi menimbulkan biaya moneter bagi ekosistem kami.
Kepadatan bug keamanan memori yang tinggi dalam kode vendor tingkat rendah, yang sering kali memiliki modifikasi kustom, secara signifikan meningkatkan biaya perbaikan dan pengujian. Namun, mendeteksi bug ini lebih awal selama siklus pengembangan dapat menurunkan biaya ini.
Penelitian menunjukkan bahwa mendeteksi bug lebih awal dapat mengurangi biaya hingga enam kali lipat. Namun, mengingat kompleksitas ekosistem kami, jumlah rata-rata codebase yang dikelola oleh vendor, dan kompleksitas software yang terus meningkat, penghematan dapat lebih tinggi.
Keamanan memori
Android 12 dan yang lebih tinggi mencakup perubahan sistemik untuk mengurangi kepadatan bug keamanan memori dalam codebase Android. Kami memperluas alat keamanan memori Android dan memperkenalkan persyaratan baru yang mendorong ekosistem kami untuk mengatasi kategori bug ini. Seiring waktu, hal ini akan menghasilkan kualitas yang lebih tinggi dan keamanan yang lebih baik bagi pengguna kami serta biaya yang lebih rendah bagi vendor kami.
Keamanan memori kemungkinan akan menjadi pembeda untuk kualitas dan keamanan dalam beberapa tahun mendatang, dan Android berencana untuk memimpin.
Persyaratan untuk mendukung keamanan memori
Dokumen Definisi Kompatibilitas (CDD) Android sangat merekomendasikan penggunaan alat keamanan memori selama pengembangan.
Kami bekerja sama dengan ekosistem kami untuk meningkatkan penggunaan alat keamanan memori dan mengintegrasikannya dalam proses continuous integration dan pengujian.
Seiring waktu, kami ingin memastikan bahwa setiap perangkat lulus pengujian Compatibility Test Suite (CTS) lengkap, menggunakan alat keamanan memori, yang menunjukkan bahwa tidak ada bug seperti itu yang ditemukan. Misalnya, platform Arm v9 akan diwajibkan untuk menyediakan pengujian CTS dengan pemberian tag memori diaktifkan, sedangkan platform Arm v8 akan diminta untuk menyediakan pengujian CTS menggunakan HWASAN dan KASAN.
Rust sebagai bahasa pemrograman baru untuk kode platform
Android 12 memperkenalkan Rust sebagai bahasa platform. Rust menyediakan keamanan memori dan thread pada tingkat performa yang mirip dengan C/C++. Kami berharap Rust akan menjadi pilihan yang lebih disukai untuk sebagian besar project native baru. Namun, menulis ulang semua kode yang tidak aman untuk memori, yang saat ini mewakili lebih dari 70% dari kode platform Android, di Rust tidak memungkinkan. Ke depannya, Rust akan melengkapi alat keamanan memori.
Alat keamanan memori
Android mendukung berbagai alat yang membantu mendeteksi bug keamanan memori. Gambar di bawah menyajikan taksonomi alat keamanan memori Android yang tersedia.

Gambar 3. Lanskap alat keamanan memori Android.
Alat kami mencakup berbagai skenario dan target deployment. Dokumentasi di bagian ini menjelaskan setiap alat dan memberikan referensi untuk menggunakan mereka di produk Anda.