Google hat oankundige dat it de programmeartaal Rust taheakje sil oan har platfoarm. AndroidDe Rust-taalkompiler is opnommen yn 'e boarnebeam. Android werom yn 2019, mar stipe foar dizze taal bleau eksperiminteel. Guon fan 'e earste Rust-komponinten waarden pland foar frijlitting yn Android, binne nije ymplemintaasjes fan it Binder-ynterproseskommunikaasjemeganisme en de Bluetooth-stack.
De ymplemintaasje fan Rust is ûnderdiel fan in projekt om feiligens te fersterkjen, feilige programmearpraktiken te befoarderjen en de effisjinsje fan it identifisearjen fan ûnthâldproblemen te ferbetterjen yn ... AndroidIt wurdt opmurken dat sawat 70% fan alle gefaarlike kwetsberheden dy't identifisearre binne yn Android, feroarsake troch ûnthâldflaters. It brûken fan 'e Rust-taal, dy't him rjochtet op ûnthâldfeiligens en automatysk ûnthâldbehear leveret, sil it risiko op kwetsberheden ferminderje dy't feroarsake wurde troch ûnthâldflaters, lykas tagong ta ûnthâld nei't it frijjûn is en bufferoerrin.
Rust hanthavenet ûnthâld feiligens by it gearstallen tiid troch referinsje kontrôle, objekt eigendom en objekt lifetime tracking (omfang), en troch evaluearje de korrektheid fan ûnthâld tagong by runtime. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket dat fariabele wearden wurde inisjalisearre foar gebrûk, hat in bettere flaterhanneling yn 'e standertbibleteek, brûkt standert it konsept fan ûnferoarlike referinsjes en fariabelen, en biedt sterke statyske typen om logyske flaters te minimalisearjen.
В Android Geheugenfeiligens wurdt stipe troch de al stipe talen Kotlin en Java, mar se binne net geskikt foar it ûntwikkeljen fan systeemkomponinten fanwegen har hege overhead. Rust biedt prestaasjes tichtby C en C++, wêrtroch it geskikt is foar it ûntwikkeljen fan leechnivo platfoarmkomponinten en hardware-ynteraksjekomponinten.
Om de feiligens fan C- en C++-koade te garandearjen yn Android Sandbox-isolaasje, statyske analyze en fuzzing-testen wurde brûkt. De mooglikheden foar sandbox-isolaasje binne beheind en hawwe har grinzen berikt (fierdere fragmintaasje yn prosessen is net praktysk út it eachpunt fan boarnenferbrûk). Beperkingen fan sandboxing omfetsje hege overhead en ferhege ûnthâldferbrûk feroarsake troch de needsaak om nije prosessen te starten, lykas ekstra latency ferbûn mei IPC-gebrûk.
Tagelyk elimineert sandbox gjin kwetsberens yn 'e koade, mar ferminderet allinich risiko's en komplisearret de oanfal, om't eksploitaasje de identifikaasje fereasket fan net ien, mar ferskate kwetsberens. Metoaden basearre op koade testen binne beheind yn dat om flaters te identifisearjen, it nedich is om betingsten te meitsjen foar it probleem om himsels te manifestearjen. It is net mooglik om alle mooglike opsjes te dekken, sadat in protte flaters ûngemurken bliuwe.
Foar systeemprosessen yn Android Google hâldt him oan de "regel fan twa", dy't stelt dat elke tafoege koade net mear as twa fan trije betingsten foldwaan moat: it omgean mei net-fertroude ynfier, it brûken fan in ûnfeilige programmeartaal (C/C++), en it útfieren sûnder strikte sandboxing (mei ferhege privileezjes). Dizze regel betsjut dat koade dy't eksterne gegevens ferwurket of werombrocht wurde moat ta minimale privileezjes (isolearre) of skreaun wurde moat yn in feilige programmeartaal.
Google hat net as doel om besteande C/C++-koade yn Rust te herskriuwen, mar is fan plan om de taal te brûken foar it ûntwikkeljen fan nije koade. It brûken fan Rust foar nije koade is sinfol, om't statistysk sjoen de measte bugs yn nije of koartlyn oanpaste koade foarkomme. Benammen sawat 50% fan 'e ûntdutsen ûnthâldfouten yn Android binne te finen yn koade dy't minder as in jier lyn skreaun is.

Boarne: opennet.ru
