Google telah mengumumkan bahwa mereka akan menambahkan bahasa pemrograman Rust ke platform mereka. AndroidCompiler bahasa Rust telah disertakan dalam pohon kode sumber. Android Pada tahun 2019, dukungan untuk bahasa ini masih bersifat eksperimental. Beberapa komponen Rust pertama yang direncanakan untuk dirilis pada Android, merupakan implementasi baru dari mekanisme komunikasi antarproses Binder dan tumpukan Bluetooth.
Implementasi Rust merupakan bagian dari proyek untuk memperkuat keamanan, mempromosikan praktik pemrograman yang aman, dan meningkatkan efisiensi dalam mengidentifikasi masalah memori. AndroidPerlu dicatat bahwa sekitar 70% dari semua kerentanan berbahaya yang teridentifikasi di Android, disebabkan oleh kesalahan memori. Menggunakan bahasa Rust, yang berfokus pada keamanan memori dan menyediakan manajemen memori otomatis, akan mengurangi risiko kerentanan yang disebabkan oleh kesalahan memori, seperti mengakses memori setelah dibebaskan dan buffer overrun.
Rust menegakkan keamanan memori pada waktu kompilasi melalui pemeriksaan referensi, kepemilikan objek, dan pelacakan seumur hidup objek (cakupan), dan dengan mengevaluasi kebenaran akses memori saat runtime. Rust juga memberikan perlindungan terhadap integer overflow, mengharuskan nilai variabel diinisialisasi sebelum digunakan, memiliki penanganan kesalahan yang lebih baik di perpustakaan standar, menggunakan konsep referensi dan variabel yang tidak dapat diubah secara default, dan menawarkan pengetikan statis yang kuat untuk meminimalkan kesalahan logika.
В Android Keamanan memori didukung oleh bahasa yang sudah ada seperti Kotlin dan Java, tetapi keduanya tidak cocok untuk mengembangkan komponen sistem karena overhead-nya yang tinggi. Rust menawarkan kinerja yang mendekati C dan C++, sehingga cocok untuk mengembangkan komponen platform tingkat rendah dan komponen interaksi perangkat keras.
Untuk memastikan keamanan kode C dan C++ di Android Isolasi sandbox, analisis statis, dan pengujian fuzzing digunakan. Kemampuan isolasi sandbox terbatas dan telah mencapai batasnya (fragmentasi lebih lanjut ke dalam proses tidak praktis dari sudut pandang konsumsi sumber daya). Keterbatasan sandboxing meliputi overhead yang tinggi dan peningkatan konsumsi memori yang disebabkan oleh kebutuhan untuk membuat proses baru, serta latensi tambahan yang terkait dengan penggunaan IPC.
Pada saat yang sama, kotak pasir tidak menghilangkan kerentanan dalam kode, tetapi hanya mengurangi risiko dan mempersulit serangan, karena eksploitasi memerlukan identifikasi bukan hanya satu, tetapi beberapa kerentanan. Metode berdasarkan pengujian kode terbatas karena untuk mengidentifikasi kesalahan, perlu diciptakan kondisi agar masalah dapat terwujud. Tidak mungkin untuk mencakup semua opsi yang memungkinkan, sehingga banyak kesalahan yang luput dari perhatian.
Untuk proses sistem di Android Google menganut "aturan dua," yang menyatakan bahwa setiap kode tambahan tidak boleh memenuhi lebih dari dua dari tiga kondisi: menangani input yang tidak tepercaya, menggunakan bahasa pemrograman yang tidak aman (C/C++), dan berjalan tanpa sandboxing ketat (memiliki hak akses yang lebih tinggi). Aturan ini menyiratkan bahwa kode yang memproses data eksternal harus dikurangi hak aksesnya hingga minimum (terisolasi) atau ditulis dalam bahasa pemrograman yang aman.
Google tidak bertujuan untuk menulis ulang kode C/C++ yang sudah ada dalam Rust, tetapi berencana untuk menggunakan bahasa tersebut untuk mengembangkan kode baru. Menggunakan Rust untuk kode baru masuk akal, karena secara statistik, sebagian besar bug muncul pada kode baru atau yang baru saja dimodifikasi. Secara khusus, sekitar 50% dari kesalahan memori yang terdeteksi pada Android ditemukan dalam kode yang ditulis kurang dari setahun yang lalu.

Sumber: opennet.ru
