Google şirkəti platformasına Rust proqramlaşdırma dilini əlavə edəcəyini açıqladı. AndroidRust dilinin kompilyatoru mənbə ağacına daxil edilmişdir. Android 2019-cu ildə, lakin bu dil üçün dəstək eksperimental olaraq qaldı. İlk Rust komponentlərinin bəzilərinin buraxılması planlaşdırılırdı Android, Binder proseslərarası rabitə mexanizminin və Bluetooth yığınının yeni tətbiqləridir.
Rust-ın tətbiqi təhlükəsizliyi gücləndirmək, təhlükəsiz proqramlaşdırma təcrübələrini təşviq etmək və yaddaş problemlərini müəyyən etməyin səmərəliliyini artırmaq layihəsinin bir hissəsidir. AndroidQeyd olunur ki, müəyyən edilmiş bütün təhlükəli zəifliklərin təxminən 70%-i Android, yaddaş səhvlərindən qaynaqlanır. Yaddaş təhlükəsizliyinə diqqət yetirən və avtomatik yaddaş idarəetməsini təmin edən Rust dilindən istifadə, yaddaş boşaldıqdan sonra ona daxil olmaq və buferin həddindən artıq yüklənməsi kimi yaddaş səhvlərinin yaratdığı zəifliklər riskini azaldacaq.
Rust, arayış yoxlanışı, obyekt sahibliyinin izlənilməsi və obyektin istifadə müddətinin (əhatə dairəsinin) uçotu, həmçinin icra müddətində yaddaşa girişin etibarlılığının qiymətləndirilməsi vasitəsilə tərtib zamanı yaddaşın təhlükəsizliyini təmin edir. Rust həmçinin tam ədədlərin daşmasına qarşı qoruma təmin edir, istifadə etməzdən əvvəl dəyişən dəyərlərin məcburi işə salınmasını, standart kitabxanada səhvlərin daha yaxşı idarə olunmasını tələb edir, defolt olaraq dəyişməz istinadlar və dəyişənlər konsepsiyasını həyata keçirir və məntiq səhvlərini minimuma endirmək üçün güclü statik yazma təklif edir.
В Android Yaddaş təhlükəsizliyi artıq dəstəklənən Kotlin və Java dilləri tərəfindən dəstəklənir, lakin onlar yüksək xərclərə görə sistem komponentlərinin hazırlanması üçün uyğun deyil. Rust, C və C++ dillərinə yaxın performans təklif edir və bu da onu aşağı səviyyəli platforma komponentləri və aparat qarşılıqlı əlaqə komponentlərinin hazırlanması üçün uyğun edir.
C və C++ kodlarının təhlükəsizliyini təmin etmək üçün Android Sandbox izolyasiyası, statik analiz və fuzzing testi istifadə olunur. Sandbox izolyasiya imkanları məhduddur və limitlərinə çatmışdır (proseslərə daha çox parçalanma resurs istehlakı baxımından praktik deyil). Sandbox-un məhdudiyyətlərinə yeni proseslərin yaradılması ehtiyacından qaynaqlanan yüksək yük və artan yaddaş istehlakı, eləcə də IPC istifadəsi ilə əlaqəli əlavə gecikmə daxildir.
Bununla belə, qum qutusu koddakı boşluqları aradan qaldırmır; o, sadəcə olaraq riskləri azaldır və hücumları çətinləşdirir, çünki istismar yalnız bir deyil, bir neçə zəifliyi müəyyən etməyi tələb edir. Kod testinə əsaslanan metodlar onunla məhdudlaşır ki, səhvləri müəyyən etmək problemin özünü göstərməsi üçün şərait yaratmağı tələb edir. Bütün mümkün ssenariləri əhatə etmək qeyri-mümkündür, buna görə də bir çox səhvlər aşkar edilmir.
Sistem prosesləri üçün Android Google, əlavə edilmiş hər hansı bir kodun üç şərtdən ikisindən çoxuna cavab verməməli olduğunu bildirən "iki qaydası"na riayət edir: etibarsız girişi idarə etmək, təhlükəli proqramlaşdırma dilindən (C/C++) istifadə etmək və ciddi sandbox olmadan işləmək (yüksək imtiyazlara malik olmaq). Bu qayda, xarici məlumatları emal edən kodun ya minimum imtiyazlara qədər azaldılmasını (təcrid olunmasını), ya da təhlükəsiz proqramlaşdırma dilində yazılmasını nəzərdə tutur.
Google mövcud C/C++ kodunu Rust dilində yenidən yazmağı hədəfləmir, lakin yeni kod hazırlamaq üçün dildən istifadə etməyi planlaşdırır. Yeni kod üçün Rust-dan istifadə etmək məntiqlidir, çünki statistik olaraq əksər səhvlər yeni və ya bu yaxınlarda dəyişdirilmiş kodda üzə çıxır. Xüsusilə, aşkar edilmiş yaddaş səhvlərinin təxminən 50%-i Android bir ildən az əvvəl yazılmış kodda tapılır.

Mənbə: opennet.ru
