Rust ir iekļauta starp galvenajām Android platformas izstrādes valodām

Google ir paziņojusi par Rust programmēšanas valodas iekļaušanu starp valodām, kas atļautas Android platformas izstrādei. Rust valodas kompilators tika iekļauts Android avota kokā 2019. gadā, taču šīs valodas atbalsts palika eksperimentāls. Daži no pirmajiem Rust komponentiem, kas plānoti operētājsistēmā Android, ietver jaunas Binder starpprocesu komunikācijas mehānisma un Bluetooth skursteņa implementācijas.

Rust ieviešana tika veikta kā daļa no projekta, lai stiprinātu drošību, veicinātu drošas programmēšanas metodes un palielinātu problēmu identificēšanas efektivitāti, strādājot ar atmiņu operētājsistēmā Android. Tiek atzīmēts, ka aptuveni 70% no visām Android identificētajām bīstamajām ievainojamībām rodas kļūdu dēļ, strādājot ar atmiņu. Izmantojot Rust, kas koncentrējas uz atmiņas drošību un automātisku atmiņas pārvaldību, samazināsies ievainojamību risks, ko izraisa atmiņas kļūdas, piemēram, pēcbrīva piekļuve un bufera pārtēriņš.

Rust nodrošina atmiņas drošību kompilēšanas laikā, pārbaudot atsauces, objektu īpašumtiesības un objekta mūža izsekošanu (tvērumus), kā arī novērtējot atmiņas piekļuves pareizību izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa, lai mainīgās vērtības būtu inicializētas pirms lietošanas, standarta bibliotēkā ir labāka kļūdu apstrāde, pēc noklusējuma tiek izmantots nemainīgu atsauces un mainīgo jēdziens un tiek piedāvāta spēcīga statiskā rakstīšana, lai samazinātu loģiskās kļūdas.

Operētājsistēmā Android atmiņas drošība tiek nodrošināta jau atbalstītajās valodās Kotlin un Java, taču tās nav piemērotas sistēmas komponentu izstrādei lielo pieskaitāmo izmaksu dēļ. Rust ļauj sasniegt veiktspēju tuvu C un C++ valodām, kas ļauj to izmantot zema līmeņa platformas daļu un komponentu izstrādei mijiedarbībai ar aparatūru.

Lai nodrošinātu C un C++ koda drošību, Android izmanto smilškastes izolāciju, statisko analīzi un izplūdušo testēšanu. Smilškastes izolācijas iespējas ir ierobežotas un sasniegušas savu iespēju robežu (turpmāka sadrumstalotība procesos no resursu patēriņa viedokļa ir nepraktiska). Smilškastes izmantošanas ierobežojumi ietver lielas pieskaitāmās izmaksas un palielinātu atmiņas patēriņu, ko izraisa nepieciešamība radīt jaunus procesus, kā arī papildu aizkaves, kas saistītas ar IPC izmantošanu.

Tajā pašā laikā smilškaste nenovērš koda ievainojamības, bet tikai samazina riskus un sarežģī uzbrukumu, jo ekspluatācijai ir jāidentificē nevis viena, bet vairākas ievainojamības. Metodes, kuru pamatā ir koda testēšana, ir ierobežotas ar to, ka, lai identificētu kļūdas, ir jārada apstākļi, lai problēma varētu izpausties. Nav iespējams aptvert visas iespējamās iespējas, tāpēc daudzas kļūdas paliek nepamanītas.

Sistēmas procesiem operētājsistēmā Android Google ievēro "divu noteikumu", saskaņā ar kuru jebkuram pievienotajam kodam jāatbilst ne vairāk kā diviem no trim nosacījumiem: darbs ar nevalidētiem ievades datiem, nedrošas programmēšanas valodas (C/C++) izmantošana un darbojas bez stingras smilškastes izolācijas (ar paaugstinātām privilēģijām). Šis noteikums nozīmē, ka ārējo datu apstrādes kods ir jāsamazina līdz minimālajām privilēģijām (izolēts), vai arī jāraksta drošā programmēšanas valodā.

Google mērķis nav pārrakstīt esošo C/C++ kodu Rust, bet plāno izmantot šo valodu, lai izstrādātu jaunu kodu. Jaunam kodam ir jēga izmantot Rust, jo statistiski lielākā daļa kļūdu parādās jaunā vai nesen mainītā kodā. Jo īpaši aptuveni 50% no atklātajām atmiņas kļūdām operētājsistēmā Android tiek atklātas kodā, kas rakstīts mazāk nekā pirms gada.

Rust ir iekļauta starp galvenajām Android platformas izstrādes valodām


Avots: opennet.ru

Pievieno komentāru