Rust termasuk di antara bahasa utama untuk pengembangan platform Android

Google telah mengumumkan penyertaan bahasa pemrograman Rust di antara bahasa yang diizinkan untuk mengembangkan platform Android. Kompiler bahasa Rust disertakan dalam pohon sumber Android pada tahun 2019, tetapi dukungan untuk bahasa ini masih bersifat eksperimental. Beberapa komponen Rust pertama yang direncanakan untuk Android mencakup implementasi baru mekanisme komunikasi antarproses Binder dan tumpukan Bluetooth.

Pengenalan Rust dilakukan sebagai bagian dari proyek untuk memperkuat keamanan, mempromosikan teknik pemrograman yang aman, dan meningkatkan efisiensi dalam mengidentifikasi masalah saat bekerja dengan memori di Android. Perlu dicatat bahwa sekitar 70% dari semua kerentanan berbahaya yang teridentifikasi di Android disebabkan oleh kesalahan saat bekerja dengan memori. Menggunakan Rust, yang berfokus pada keamanan memori dan manajemen memori otomatis, akan mengurangi risiko kerentanan yang disebabkan oleh kesalahan memori seperti akses setelah bebas dan buffer overruns.

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.

Di Android, keamanan memori disediakan dalam bahasa Kotlin dan Java yang sudah didukung, namun tidak cocok untuk mengembangkan komponen sistem karena overhead yang tinggi. Rust memungkinkan untuk mencapai kinerja yang mendekati bahasa C dan C++, yang memungkinkannya digunakan untuk mengembangkan bagian platform tingkat rendah dan komponen untuk berinteraksi dengan perangkat keras.

Untuk memastikan keamanan kode C dan C++, Android menggunakan isolasi sandbox, analisis statis, dan pengujian fuzzing. Kemampuan isolasi sandbox terbatas dan telah mencapai batas kemampuannya (fragmentasi lebih lanjut ke dalam proses tidak praktis dalam hal konsumsi sumber daya). Keterbatasan penggunaan sandbox mencakup biaya overhead yang besar dan peningkatan konsumsi memori yang disebabkan oleh kebutuhan untuk menelurkan proses baru, serta penundaan 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 mematuhi "aturan dua", yang menyatakan bahwa setiap kode yang ditambahkan harus memenuhi tidak lebih dari dua dari tiga kondisi: bekerja dengan data masukan yang tidak divalidasi, menggunakan bahasa pemrograman yang tidak aman (C/C++), dan berjalan tanpa isolasi kotak pasir yang ketat (memiliki hak istimewa yang lebih tinggi). Aturan ini menyiratkan bahwa kode untuk memproses data eksternal harus direduksi menjadi hak istimewa minimal (terisolasi) atau ditulis dalam bahasa pemrograman yang aman.

Google tidak bertujuan untuk menulis ulang kode C/C++ yang ada di Rust, tetapi berencana menggunakan bahasa ini untuk mengembangkan kode baru. Masuk akal untuk menggunakan Rust untuk kode baru karena, secara statistik, sebagian besar bug muncul dalam kode baru atau yang baru saja diubah. Secara khusus, sekitar 50% kesalahan memori yang terdeteksi di Android terdeteksi dalam kode yang ditulis kurang dari setahun yang lalu.

Rust termasuk di antara bahasa utama untuk pengembangan platform Android


Sumber: opennet.ru

Tambah komentar