Keamanan Memori

Memori tidak aman

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

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

Bug keamanan memori berdampak negatif pada kualitas dan stabilitas dan merupakan penyebab signifikan dari kerusakan yang diamati pada perangkat pengguna akhir. Oleh karena itu, kepadatan tinggi bug keamanan memori berkorelasi langsung dengan pengalaman pengguna yang buruk.
Kode asli, yang ditulis dalam bahasa memori yang tidak aman seperti C, C++, dan Majelis mewakili lebih dari 70% kode platform Android dan hadir di sekitar 50% aplikasi Play Store.
Mengingat kompleksitas kode yang semakin meningkat, jika dibiarkan tanpa pengawasan, bug keamanan memori akan meningkat seiring waktu. Oleh karena itu, menyediakan ekosistem kami dengan alat dan teknologi yang dapat mendeteksi dan mengurangi bug tersebut sangat penting untuk kesuksesan jangka panjang kami.
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 area masalah utama.

Bug keamanan memori memengaruhi kualitas secara negatif

Bug keamanan memori laten dapat menyebabkan hasil non-deterministik, tergantung pada status sistem. Perilaku tak terduga ini menyebabkan crash dan gangguan bagi pengguna kami.

Setiap hari kami mengamati jutaan kerusakan asli dari perangkat pengguna akhir dan dengan diperkenalkannya GWP-ASan , kami telah melacak sebagian besar dari mereka ke bug keamanan memori.
Titik data ini memvalidasi korelasi antara kualitas dan kepadatan bug keamanan memori dan sejalan dengan apa yang diamati oleh rekan Chrome kami (lihat hotlist bug Chrome GWP-ASan ).

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

Bug keamanan memori meningkatkan biaya

Menjaga perangkat tetap up to date dengan perbaikan keamanan membuat pengguna kami tetap aman tetapi disertai dengan biaya moneter untuk 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 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 kita, jumlah rata-rata basis kode yang dikelola oleh vendor dan kompleksitas perangkat lunak yang semakin meningkat, penghematannya bisa lebih tinggi.

Keamanan memori

Dimulai dengan Android 12, kami telah membuat 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, ini harus diterjemahkan ke kualitas yang lebih tinggi dan keamanan yang lebih baik bagi pengguna kami dan biaya yang lebih rendah untuk vendor kami.

Keamanan memori kemungkinan akan menjadi pembeda kualitas dan keamanan di tahun-tahun mendatang, dan Android berencana untuk memimpin.

Persyaratan untuk mendukung keamanan memori

Android Compatibility Definition Document (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 ) penuh, menggunakan alat keamanan memori, yang menunjukkan bahwa tidak ada bug seperti itu yang ditemukan. Misalnya, platform Arm v9 akan diminta untuk menyediakan operasi CTS dengan Penandaan Memori yang diaktifkan, sedangkan platform Arm v8 akan diminta untuk menyediakan operasi CTS menggunakan HWASAN dan KASAN.

Rust sebagai bahasa pemrograman baru untuk kode platform

Android 12 memperkenalkan Rust sebagai bahasa platform . Rust menyediakan memori dan keamanan 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 mungkin dilakukan. Ke depan Rust akan melengkapi alat pengaman 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

Alat kami mencakup berbagai skenario dan target penerapan. Dokumentasi berikut menjelaskan setiap alat dan memberikan referensi untuk menggunakannya dalam produk Anda.