Keamanan memori

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.

 Bug keamanan memori memengaruhi
  pengalaman pengguna, biaya, dan keamanan.

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.

Bug keamanan memori berdampak negatif pada keamanan.

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.

Bug keamanan memori berdampak negatif pada keamanan.

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.