Google izstrādā Android daļas Rust, lai uzlabotu drošību

click fraud protection

Google raksta un pārraksta Android daļas Rust, lai uzlabotu visas OS drošību salīdzinājumā ar C un C++. Lasiet tālāk, lai uzzinātu vairāk!

Android kā pilnīgs OS risinājums ietver daudz kustīgu daļu. Ļoti plaši runājot, šīs daļas ir lietotņu ekosistēma un pēc tam pati OS. Kā izstrādātājam jūsu izvēlētā programmēšanas valoda atšķiras atkarībā no tā, ar kuru Android daļu strādājat. Programmu izstrādātājiem Java un Kotlin ir populāras iespējas. Izstrādātājiem, kas strādā ar operētājsistēmu un tās zemākajiem līmeņiem, C un C++ līdz šim ir bijusi populāra izvēle. Šodien Google pievieno trešo opciju OS izstrādātājiem, jo ​​Android Open Source Project tagad atbalsta Rust programmēšanas valodu pašas OS izstrādei.

C un C++ ierobežojumi

Zemākiem Android OS līmeņiem ir nepieciešamas sistēmu programmēšanas valodas, piemēram, C un C++. Šīs valodas izstrādātājiem nodrošina kontroli un paredzamību, kas ir svarīgi, piekļūstot zema līmeņa sistēmas resursiem un aparatūrai.

Diemžēl C un C++ nespēj nodrošināt atmiņas drošības garantijas, padarot tās pakļautas kļūdām un drošības ievainojamībām. Izstrādātājs ir atbildīgs par atmiņas kalpošanas laika pārvaldību šajās valodās, taču sarežģītās un daudzpavedienu kodu bāzēs to ir vieglāk pateikt, nekā izdarīt.

C un C++ kopā veido desmitiem miljonu koda rindu Android platformā. Šīs atmiņas drošības kļūdas kļūst par visgrūtāk novēršamo koda nepareizības avotu, kas ir aptuveni 70% no Android ļoti nopietnām drošības ievainojamībām. Ar šo kļūdu novēršanu vien nepietiek, lai atrisinātu problēmu, un labāka pieeja būtu tās novērst.

Atmiņas drošības trūkums liek izstrādātājiem palaist Android procesus stingri ierobežotās un nepiešķirtās smilšu kastēs. Taču smilškastes ir dārgas resursu ziņā, patērē papildu izmaksas un ievieš latentumu. Smilškaste arī pilnībā nenovērš koda ievainojamības, un tā efektivitāte ir samazināta lielā kļūdu blīvuma dēļ, tādējādi ļaujot uzbrucējiem sasaistīt vairākas ievainojamības.

Vēl viens ierobežojums, kas nav unikāls C un C++, bet attiecas uz visām atmiņas drošības problēmām, ir tāds, ka kļūdainajam stāvoklim faktiski ir jāaktivizē instrumentālā kodā, lai to noteiktu. Tātad, pat ja jūsu kodam ir lieliska pārbaude, faktiskā kļūda var palikt neatklāta. Ja tiek atrastas kļūdas, to novēršana ir vēl viens uzdevums, kas ietver ilgu un dārgu procesu, kas ne vienmēr var novest pie pareizas labošanas. Tādējādi kļūdu noteikšana kļūst neuzticama, un kļūdu novēršana ir labāka pieeja, ņemot vērā šos ierobežojumus.

Šeit parādās pāreja uz atmiņai drošu valodu, piemēram, Rust.

Rūsa un tās priekšrocības

Rust nodrošina atmiņas drošības garantijas, izmantojot kompilēšanas laika pārbaužu kombināciju, lai nodrošinātu objekta kalpošanas laiku/īpašumtiesības, un izpildlaika pārbaudes, lai nodrošinātu, ka piekļuve atmiņai ir derīga. Šī drošība tiek panākta, nodrošinot līdzvērtīgu veiktspēju C un C++. Rūsa arī samazina vajadzību pēc smilškastes, ļaujot izstrādātājiem vairāk vietas, lai ieviestu jaunas funkcijas, kas ir drošākas un mazāk izmanto resursus.

Lai gan Rust patiešām ir savas priekšrocības, nav iespējams vienas nakts laikā pārslēgt visu Android OS uz Rust. Un tas, iespējams, pat nav vajadzīgs, jo lielākā daļa Android atmiņas kļūdu rodas jaunā vai nesen modificētā kodā, un aptuveni 50% no tiem ir mazāk nekā gadu veci. Google uzskata, ka tās atmiņai drošas valodas centieni vislabāk ir vērsti uz jauniem notikumiem, nevis uz nobrieduša C un C++ koda pārrakstīšanu.

Rust arī koncentrējas uz kļūdu novēršanu, nevis lielā mērā paļaujas uz kļūdu noteikšanu, tādējādi uzlabojot koda pareizību. Tam ir vairākas galvenās funkcijas, piemēram, atmiņas drošība, datu vienlaicīgums, izteiksmīgāka tipa sistēmas, nemainīgs atsauces un mainīgie pēc noklusējuma, drošāka veselu skaitļu apstrāde, labāka kļūdu apstrāde standarta bibliotēkās un daudz kas cits vairāk.

Ko Android ierīcēm nozīmē pāreja uz Rust?

Google saka, ka pēdējo 18 mēnešu laikā tā ir pievienojusi Rust atbalstu Android atvērtā pirmkoda projektam. Taču jaunas valodas pievienošana Android platformai ir milzīgs darbs. Ir jāuztur dažas rīku ķēdes un atkarības, jāatjaunina testēšanas infrastruktūra un rīki, kā arī jāapmāca izstrādātāji.

Uzņēmumam Google ir daži agrīno lietotņu projekti, kurus viņi kopīgos nākamajos mēnešos. Bet pat tādā gadījumā tiek skaidri pateikts, ka Rust atbalsta mērogošana lielākai OS daļai ir vairāku gadu projekts.

No tā, ko mēs redzam, Google jau izmanto Rust dažās vietās. Android jaunā Bluetooth steka pārrakstīšana ar koda nosaukumu "Gabeldorsche" tiek rakstīts Rust. Darbs pie Gabeldorsche tika sākts aptuveni operētājsistēmas Android 11 laikā, taču tas joprojām netiek izmantots. Android Keystore 2.0 modulis ir rakstīts valodā Rust, tāpat kā saistvielas, Android IPC draivera, userspace daļa. Lai gan tas nav saistīts ar Android, Fuksijair jauns netstack tiek rakstīts arī Rust.

Lietojumprogrammu izstrādātājiem slēdzis neko nemaina attiecībā uz to, kā jūs kā lietotņu izstrādātājs rakstāt lietotnes vai kā darbojas ietvara API. Šis slēdzis ietekmē tikai OS rakstīšanas veidu. Saskaņā ar Android izstrādātāju attiecību komandas biedru, Google arī šobrīd neplāno izdot Rust NDK. Programmu izstrādes atbalstītās valodas joprojām būs Kotlin, Java, C un C++.