Keamanan memori

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 memengaruhi
  pengalaman pengguna, biaya, dan keamanan.
Gambar 1: Bug keamanan memori dan dampaknya yang negatif terhadap kualitas, keamanan, dan biaya

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.

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 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.

Bug keamanan memori berdampak negatif pada
  keamanan.
Gambar 3: Lanskap alat keamanan memori Android

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