Keamanan Memori

Ketidakamanan memori

Bug keamanan memori, kesalahan dalam menangani memori dalam bahasa pemrograman asli, adalah masalah paling umum dalam basis kode Android. Hal ini menyebabkan lebih dari 60% kerentanan keamanan tingkat tinggi dan jutaan kerusakan yang terlihat oleh pengguna.

Bug keamanan memori berdampak pada pengalaman pengguna, biaya, dan keamanan.
Gambar 1 : Bug keamanan memori dan dampak negatifnya terhadap kualitas, keamanan, dan biaya

Bug keamanan memori berdampak negatif pada kualitas dan stabilitas dan menyebabkan sebagian besar kerusakan yang terjadi pada perangkat pengguna akhir. Oleh karena itu, tingginya kepadatan bug keamanan memori berkorelasi langsung dengan pengalaman pengguna yang buruk.
Kode asli, yang ditulis dalam bahasa yang tidak aman untuk memori seperti C, C++, dan Majelis mewakili lebih dari 70% kode platform Android dan terdapat di sekitar 50% aplikasi Play Store.
Mengingat kompleksitas kode yang semakin meningkat, jika dibiarkan, bug keamanan memori akan meningkat seiring waktu. Oleh karena itu, menyediakan alat dan teknologi bagi ekosistem kita yang dapat mendeteksi dan memitigasi bug tersebut sangat penting bagi keberhasilan jangka panjang kita.
Selama beberapa tahun terakhir, kami telah bekerja sama dengan mitra perangkat keras kami untuk mengembangkan teknologi perangkat keras seperti Arm Memory Tagging dan telah memperkenalkan Rust di basis kode Android.
Teknologi ini akan mempercepat jalan kita menuju keamanan memori dan akan membantu industri perangkat lunak yang lebih luas mengatasi masalah utama.

Bug keamanan memori berdampak negatif pada kualitas

Bug keamanan memori laten dapat menyebabkan hasil non-deterministik, bergantung pada keadaan sistem. Perilaku tak terduga ini menyebabkan kerusakan dan gangguan bagi pengguna kami.

Setiap hari kami mengamati jutaan error asli 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 pengamatan rekan Chrome kami (lihat daftar 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.

Bug keamanan memori berdampak negatif pada keamanan.
Gambar 2 : Kontribusi bug keamanan memori terhadap kerentanan Android

Meskipun menggembirakan mengetahui bahwa ini bukan hanya masalah Android (lihat statistik Chrome dan Microsoft ), kami perlu berbuat lebih banyak demi keselamatan 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 namun eksploitasi yang secara aktif digunakan dalam serangan terhadap pengguna. Bug keamanan memori (kerusakan memori dan penggunaan setelah bebas) merupakan mayoritas.

Bug keamanan memori meningkatkan biaya

Menjaga perangkat tetap mutakhir dengan perbaikan keamanan akan menjaga keamanan pengguna, namun menimbulkan kerugian finansial bagi ekosistem kami.

Kepadatan tinggi bug keamanan memori dalam kode vendor tingkat rendah, yang sering kali memiliki modifikasi khusus, secara signifikan meningkatkan biaya perbaikan dan pengujian. Namun, mendeteksi bug ini sejak dini 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 kita, jumlah rata-rata basis kode yang dikelola oleh vendor, dan kompleksitas perangkat lunak yang semakin meningkat, penghematan yang bisa kita peroleh bisa lebih besar.

Keamanan memori

Dimulai dengan Android 12, kami telah melakukan perubahan sistemik untuk mengurangi kepadatan bug keamanan memori di basis kode 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 kualitas dan keamanan di tahun-tahun mendatang, dan Android berencana untuk memimpin hal tersebut.

Persyaratan untuk mendukung keamanan memori

Dokumen Definisi Kompatibilitas Android (CDD) sangat menyarankan penggunaan alat keamanan memori selama pengembangan.
Kami bekerja sama 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 melewati rangkaian Uji Kompatibilitas ( CTS ) secara penuh, menggunakan alat keamanan memori, yang menunjukkan bahwa tidak ada bug yang ditemukan. Misalnya, platform Arm v9 akan diminta untuk menyediakan proses CTS dengan Memory Tagging yang diaktifkan, sedangkan platform Arm v8 akan diminta untuk menyediakan proses CTS menggunakan HWASAN dan KASAN.

Rust sebagai bahasa pemrograman baru untuk kode platform

Android 12 memperkenalkan Rust sebagai bahasa platform . Rust memberikan keamanan memori dan thread pada tingkat kinerja yang mirip dengan C/C++. Kami berharap Rust menjadi pilihan utama untuk sebagian besar proyek asli baru. Namun, menulis ulang semua kode memori yang tidak aman, yang saat ini mewakili lebih dari 70% kode platform Android, di Rust tidak dapat dilakukan. Ke depannya Rust akan melengkapi alat keamanan memori.

Alat keamanan memori

Android mendukung berbagai macam 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

Peralatan kami mencakup beragam skenario dan target penerapan. Dokumentasi berikut menjelaskan setiap alat dan memberikan referensi untuk menggunakannya di produk Anda.