Rust Android platformasini ishlab chiqish uchun asosiy tillar qatoriga kiritilgan

Google Android platformasini ishlab chiqish uchun ruxsat berilgan tillar qatoriga Rust dasturlash tili kiritilganini e'lon qildi. Rust tili kompilyatori 2019 yilda Android manba daraxtiga kiritilgan, ammo bu tilni qo‘llab-quvvatlash eksperimental bo‘lib qoldi. Android uchun rejalashtirilgan Rust birinchi komponentlaridan ba'zilari Binder protsesslararo aloqa mexanizmi va Bluetooth stekining yangi ilovalarini o'z ichiga oladi.

Rust-ning joriy etilishi xavfsizlikni mustahkamlash, xavfsiz dasturlash texnikasini targ'ib qilish va Android-da xotira bilan ishlashda muammolarni aniqlash samaradorligini oshirish loyihasi doirasida amalga oshirildi. Qayd etilishicha, Android’da aniqlangan barcha xavfli zaifliklarning taxminan 70 foizi xotira bilan ishlashdagi xatolar tufayli yuzaga keladi. Xotira xavfsizligi va xotirani avtomatik boshqarishga qaratilgan Rust-dan foydalanish bepul kirish va buferdan oshib ketish kabi xotira xatolaridan kelib chiqadigan zaifliklar xavfini kamaytiradi.

Rust kompilyatsiya vaqtida xotira xavfsizligini mos yozuvlarni tekshirish, ob'ektga egalik qilish va ob'ektning ishlash muddatini kuzatish (ko'lamlar) va ish vaqtida xotiraga kirishning to'g'riligini baholash orqali amalga oshiradi. Rust shuningdek, butun sonlarning to'lib ketishidan himoya qiladi, foydalanishdan oldin o'zgaruvchan qiymatlarni ishga tushirishni talab qiladi, standart kutubxonada xatolarni yaxshiroq boshqarishga ega, sukut bo'yicha o'zgarmas havolalar va o'zgaruvchilar tushunchasidan foydalanadi va mantiqiy xatolarni minimallashtirish uchun kuchli statik yozishni taklif qiladi.

Android-da xotira xavfsizligi allaqachon qo'llab-quvvatlanadigan Kotlin va Java tillarida taqdim etilgan, ammo ular yuqori xarajatlar tufayli tizim komponentlarini ishlab chiqish uchun mos emas. Rust C va C++ tillariga yaqin ishlashga erishish imkonini beradi, bu esa uni platformaning past darajadagi qismlarini va apparat bilan oʻzaro aloqada boʻlish komponentlarini ishlab chiqishda foydalanish imkonini beradi.

C va C++ kodlarining xavfsizligini ta'minlash uchun Android sinov muhitini izolyatsiyalash, statik tahlil va fuzzing testidan foydalanadi. Qum qutisini izolyatsiya qilish imkoniyatlari cheklangan va ularning imkoniyatlari chegarasiga yetgan (resurs iste'moli nuqtai nazaridan jarayonlarga keyingi qismlarga ajratish amaliy emas). Sandboxdan foydalanish cheklovlari katta qo'shimcha xarajatlarni va yangi jarayonlarni yaratish zarurati tufayli xotira sarfini oshirishni, shuningdek, IPCdan foydalanish bilan bog'liq qo'shimcha kechikishlarni o'z ichiga oladi.

Shu bilan birga, sandbox koddagi zaifliklarni yo'q qilmaydi, faqat xavflarni kamaytiradi va hujumni murakkablashtiradi, chunki ekspluatatsiya qilish bir emas, balki bir nechta zaifliklarni aniqlashni talab qiladi. Kodni tekshirishga asoslangan usullar cheklangan, chunki xatolarni aniqlash uchun muammoning o'zini namoyon qilishi uchun sharoit yaratish kerak. Barcha mumkin bo'lgan variantlarni qamrab olish mumkin emas, shuning uchun ko'p xatolar e'tiborga olinmaydi.

Android tizimidagi tizim jarayonlari uchun Google "ikkita qoidasiga" amal qiladi, unga ko'ra har qanday qo'shilgan kod uchta shartdan ikkitadan ko'p bo'lmasligi kerak: tasdiqlanmagan kiritilgan ma'lumotlar bilan ishlash, xavfli dasturlash tilidan (C/C++) foydalanish va qattiq sandbox izolyatsiyasisiz ishlaydi (yuqori imtiyozlarga ega). Ushbu qoida tashqi ma'lumotlarni qayta ishlash uchun kod minimal imtiyozlarga (izolyatsiya qilingan) qisqartirilishi yoki xavfsiz dasturlash tilida yozilishi kerakligini anglatadi.

Google Rust-da mavjud C/C++ kodini qayta yozishni maqsad qilgan emas, lekin yangi kodni ishlab chiqish uchun ushbu tildan foydalanishni rejalashtirmoqda. Yangi kod uchun Rust-dan foydalanish mantiqan to'g'ri keladi, chunki statistik ma'lumotlarga ko'ra, ko'pchilik xatolar yangi yoki yaqinda o'zgartirilgan kodda paydo bo'ladi. Xususan, Android-da aniqlangan xotira xatolarining taxminan 50 foizi bir yildan kamroq vaqt oldin yozilgan kodda aniqlanadi.

Rust Android platformasini ishlab chiqish uchun asosiy tillar qatoriga kiritilgan


Manba: opennet.ru

a Izoh qo'shish