Keamanan memori tidak terjamin
Bug keamanan memori, error dalam menangani memori dalam bahasa pemrograman native, adalah masalah yang paling umum di codebase Android. Kerentanan ini mencakup lebih dari 60% kerentanan keamanan tingkat keparahan tinggi dan jutaan error yang terlihat oleh pengguna.
Bug keamanan memori berdampak negatif pada kualitas dan stabilitas serta menyebabkan
sebagian besar error yang diamati di perangkat pengguna akhir. Oleh karena itu, kepadatan
bug keamanan memori yang tinggi secara langsung berkorelasi 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 dibiarkan, bug keamanan
memori akan meningkat seiring waktu. Oleh karena itu, menyediakan ekosistem kami
dengan alat dan teknologi yang dapat mendeteksi dan memitigasi bug tersebut
sangatlah penting untuk kesuksesan jangka panjang kami.
Selama beberapa tahun terakhir, kami telah bekerja sama dengan partner
hardware kami untuk mengembangkan teknologi hardware seperti Arm Memory Tagging dan telah
memperkenalkan Rust di codebase Android.
Teknologi ini akan mempercepat jalur kita menuju keamanan memori dan
akan membantu industri software yang lebih luas mengatasi area masalah utama.
Bug keamanan memori berdampak negatif pada kualitas
Bug keamanan memori laten dapat menyebabkan hasil yang tidak menentukan, 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 dan selaras dengan yang diamati kolega
Chrome kami (lihat hotlist bug GWP-ASan Chrome).
Bug keamanan memori berdampak negatif pada keamanan
Bug keamanan memori secara konsisten menjadi kontributor utama kerentanan keamanan Android, sejak rilis Android pertama.
Meskipun sangat menggembirakan mengetahui bahwa ini bukan hanya masalah Android
(lihat statistik Chrome
dan Microsoft
), kami perlu melakukan lebih banyak hal untuk keamanan pengguna.
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 secara aktif digunakan dalam
serangan terhadap pengguna. Bug keamanan memori (kerusakan memori dan use-after-free)
merupakan mayoritas yang sangat besar.
Bug keamanan memori meningkatkan biaya
Menjaga perangkat tetap menggunakan versi terbaru dengan perbaikan keamanan akan menjaga keamanan pengguna, tetapi ada biaya moneter untuk 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.
Riset 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
Mulai Android 12, kami telah melakukan perubahan sistemik untuk mengurangi kepadatan bug keamanan memori di 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 jalannya.
Persyaratan untuk mendukung keamanan memori
Android
Compatibility Definition Document (CDD) sangat merekomendasikan penggunaan
alat keamanan memori selama pengembangan.
Kami bekerja sama erat dengan ekosistem kami untuk meningkatkan penggunaan alat keamanan
memori dan mengintegrasikannya dalam proses integrasi dan pengujian
berkelanjutan.
Seiring waktu, kami ingin memastikan bahwa setiap perangkat lulus
menjalankan Compatibility Test Suite (CTS) secara penuh, menggunakan alat
keamanan memori, yang menunjukkan bahwa tidak ada bug yang ditemukan. Misalnya, platform Arm
v9 akan diwajibkan untuk menyediakan CTS yang berjalan dengan Memory Tagging diaktifkan,
sedangkan platform Arm v8 akan diminta untuk menyediakan CTS yang berjalan 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 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% 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 ini menampilkan taksonomi alat keamanan memori Android yang tersedia.
Alat kami mencakup berbagai skenario dan target deployment. Dokumentasi berikut menjelaskan setiap alat dan memberikan referensi untuk menggunakannya dalam produk Anda.