Rust er inkluderet blandt hovedsprogene til Android-platformudvikling

Google har annonceret inklusion af programmeringssproget Rust blandt de sprog, der er tilladt til udvikling af Android-platformen. Rust-sprogkompileren blev inkluderet i Android-kildetræet tilbage i 2019, men understøttelsen af ​​dette sprog forblev eksperimentel. Nogle af de første Rust-komponenter, der er planlagt til Android, inkluderer nye implementeringer af Binder-interproceskommunikationsmekanismen og Bluetooth-stakken.

Introduktionen af ​​Rust blev gennemført som en del af et projekt, der skal styrke sikkerheden, fremme sikre programmeringsteknikker og øge effektiviteten af ​​at identificere problemer, når man arbejder med hukommelse i Android. Det bemærkes, at omkring 70 % af alle farlige sårbarheder identificeret i Android er forårsaget af fejl, når man arbejder med hukommelse. Brug af Rust, som fokuserer på hukommelsessikkerhed og automatisk hukommelseshåndtering, vil reducere risikoen for sårbarheder forårsaget af hukommelsesfejl som efterfri adgang og bufferoverskridelser.

Rust håndhæver hukommelsessikkerhed ved kompilering gennem referencekontrol, objektejerskab og objektlevetidssporing (scopes) og ved at evaluere korrektheden af ​​hukommelsesadgange under kørsel. Rust giver også beskyttelse mod heltalsoverløb, kræver at variabelværdier initialiseres før brug, har bedre fejlhåndtering i standardbiblioteket, bruger konceptet med uforanderlige referencer og variabler som standard og tilbyder stærk statisk skrivning for at minimere logiske fejl.

I Android leveres hukommelsessikkerhed på de allerede understøttede sprog Kotlin og Java, men de er ikke egnede til udvikling af systemkomponenter på grund af høj overhead. Rust gør det muligt at opnå ydeevne tæt på C- og C++-sprogene, hvilket gør det muligt at bruge det til at udvikle dele af platformen på lavt niveau og komponenter til interaktion med hardware.

For at sikre C- og C++-kodens sikkerhed bruger Android sandkasseisolering, statisk analyse og fuzzing-test. Mulighederne for sandkasseisolering er begrænsede og har nået grænsen for deres evner (yderligere fragmentering i processer er upraktisk ud fra et ressourceforbrugssynspunkt). Begrænsninger ved brug af sandbox omfatter store overheadomkostninger og øget hukommelsesforbrug forårsaget af behovet for at skabe nye processer, samt yderligere forsinkelser forbundet med brugen af ​​IPC.

Sandbox eliminerer samtidig ikke sårbarheder i koden, men reducerer kun risici og komplicerer angrebet, da udnyttelse kræver identifikation af ikke én, men flere sårbarheder. Metoder baseret på kodetest er begrænset ved, at det for at identificere fejl er nødvendigt at skabe betingelser for, at problemet kan manifestere sig. Det er ikke muligt at dække alle mulige muligheder, så mange fejl går ubemærket hen.

For systemprocesser i Android overholder Google "to-reglen", ifølge hvilken enhver tilføjet kode ikke må opfylde mere end to af tre betingelser: arbejde med uvaliderede inputdata, ved at bruge et usikkert programmeringssprog (C/C++) og kører uden streng sandkasseisolering (med forhøjede rettigheder). Denne regel indebærer, at koden til behandling af eksterne data enten skal reduceres til minimale privilegier (isoleret) eller skrives i et sikkert programmeringssprog.

Google har ikke til formål at omskrive eksisterende C/C++-kode i Rust, men planlægger at bruge dette sprog til at udvikle ny kode. Det giver mening at bruge Rust til ny kode, fordi statistisk set optræder de fleste fejl i ny eller nyligt ændret kode. Især omkring 50 % af de opdagede hukommelsesfejl i Android opdages i kode skrevet for mindre end et år siden.

Rust er inkluderet blandt hovedsprogene til Android-platformudvikling


Kilde: opennet.ru

Tilføj en kommentar