Kira-kira 21% daripada kod terkumpul baharu dalam Android 13 ditulis dalam Rust

Jurutera daripada Google merumuskan hasil pertama memperkenalkan sokongan untuk pembangunan dalam bahasa Rust ke dalam platform Android. Dalam Android 13, kira-kira 21% daripada kod terkumpul baharu yang ditambahkan ditulis dalam Rust dan 79% dalam C/C++. Repositori AOSP (Android Open Source Project), yang membangunkan kod sumber platform Android, mengandungi kira-kira 1.5 juta baris kod Rust yang dikaitkan dengan komponen baharu seperti stor kunci kriptografi Keystore2, timbunan untuk cip UWB (Ultra-Wideband) , pelaksanaan protokol DNS-over-HTTP3, rangka kerja maya AVF (Android Virtualization Framework), tindanan percubaan untuk Bluetooth dan Wi-Fi.

Kira-kira 21% daripada kod terkumpul baharu dalam Android 13 ditulis dalam Rust

Selaras dengan strategi yang digunakan sebelum ini untuk mengurangkan risiko kelemahan yang disebabkan oleh ralat dalam bekerja dengan memori, bahasa Rust kini digunakan terutamanya dalam pembangunan kod baharu dan secara beransur-ansur mengukuhkan keselamatan komponen perisian yang paling terdedah dan penting. Tiada matlamat umum untuk memindahkan keseluruhan platform kepada Rust dan kod lama kekal dalam C/C++, dan perjuangan menentang ralat di dalamnya dijalankan melalui penggunaan ujian kabur, analisis statik dan penggunaan dalam pembangunan teknik yang serupa dengan menggunakan jenis MiraclePtr (mengikat pada penunjuk mentah, melakukan pemeriksaan tambahan untuk mengakses kawasan memori yang dibebaskan), sistem peruntukan memori Scudo (penggantian selamat untuk malloc/percuma) dan mekanisme pengesanan ralat apabila bekerja dengan memori HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN dan KFENCE.

Bagi statistik mengenai sifat kelemahan dalam platform Android, diperhatikan bahawa apabila kod baharu yang berfungsi secara tidak selamat dengan memori berkurangan, terdapat penurunan dalam bilangan kelemahan yang disebabkan oleh ralat semasa bekerja dengan memori. Sebagai contoh, bahagian kelemahan yang disebabkan oleh masalah ingatan menurun daripada 76% pada 2019 kepada 35% pada 2022. Dalam jumlah mutlak, 2019 kelemahan berkaitan memori telah dikenal pasti pada 223, 2020 pada 150, 2021 pada 100 dan 2022 pada 85 (semua kelemahan yang dinyatakan adalah dalam kod C/C++; dalam kod Rust, tiada masalah yang sama setakat ini tidak dijumpai). 2022 adalah tahun pertama di mana kelemahan berkaitan ingatan tidak lagi menguasai.

Kira-kira 21% daripada kod terkumpul baharu dalam Android 13 ditulis dalam Rust

Memandangkan kelemahan berkaitan memori biasanya paling berbahaya, statistik keseluruhan juga menunjukkan penurunan dalam bilangan isu kritikal dan isu yang boleh dieksploitasi dari jauh. Pada masa yang sama, dinamik mengenal pasti kelemahan yang tidak berkaitan dengan bekerja dengan ingatan kekal pada tahap yang lebih kurang sama untuk 4 tahun lepas - 20 kelemahan setiap bulan. Bahagian masalah berbahaya antara kelemahan yang disebabkan oleh ralat semasa bekerja dengan ingatan juga kekal (tetapi memandangkan bilangan kelemahan sedemikian berkurangan, bilangan masalah berbahaya juga berkurangan).

Kira-kira 21% daripada kod terkumpul baharu dalam Android 13 ditulis dalam Rust

Statistik juga menjejaki korelasi antara jumlah kod baharu yang berfungsi secara tidak selamat dengan memori dan bilangan kelemahan berkaitan memori (limpahan penimbal, akses kepada memori yang telah dibebaskan, dsb.). Pemerhatian ini mengesahkan andaian bahawa tumpuan semasa melaksanakan teknik pengaturcaraan selamat hendaklah pada mengalih keluar kod baharu dan bukannya menulis semula kod sedia ada, memandangkan sebahagian besar kelemahan yang dikenal pasti berada dalam kod baharu.

Kira-kira 21% daripada kod terkumpul baharu dalam Android 13 ditulis dalam Rust


Sumber: opennet.ru

Tambah komen