Rust estas inkluzivita inter la ĉefaj lingvoj por disvolviĝo de Android-platformo

Google anoncis la inkludon de la Rust programlingvo inter la lingvoj permesitaj por disvolvi la Android-platformon. La Rust-lingva kompililo estis inkluzivita en la Android fontarbo jam en 2019, sed subteno por ĉi tiu lingvo restis eksperimenta. Kelkaj el la unuaj Rust-komponentoj planitaj por Android inkludas novajn efektivigojn de la Binder-interproceza komunika mekanismo kaj la Bluetooth-stako.

La enkonduko de Rust estis farita kiel parto de projekto por plifortigi sekurecon, antaŭenigi sekurajn programajn teknikojn kaj pliigi la efikecon de identigado de problemoj kiam oni laboras kun memoro en Android. Oni rimarkas, ke ĉirkaŭ 70% de ĉiuj danĝeraj vundeblecoj identigitaj en Android estas kaŭzitaj de eraroj kiam oni laboras kun memoro. Uzante Rust, kiu fokusiĝas al memorsekureco kaj aŭtomata memoradministrado, reduktos la riskon de vundeblecoj kaŭzitaj de memoreraroj kiel post-libera aliro kaj bufro-tropasoj.

Rusto devigas memorsekurecon ĉe kompiltempo per referenckontrolado, objektoproprieto kaj objekta dumviva spurado (kampoj), kaj taksante la ĝustecon de memoraliroj ĉe rultempo. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas, ke ŝanĝiĝemaj valoroj estu pravigitaj antaŭ uzo, havas pli bonan erartraktadon en la norma biblioteko, uzas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, kaj ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

En Android, memorsekureco estas provizita en la jam subtenataj lingvoj Kotlin kaj Java, sed ili ne taŭgas por disvolvi sistemajn komponantojn pro alta superkosto. Rust ebligas atingi efikecon proksime al la C kaj C++-lingvoj, kio permesas al ĝi esti uzata por evoluigi malaltnivelajn partojn de la platformo kaj komponantoj por interagado kun aparataro.

Por certigi la sekurecon de C kaj C++-kodo, Android uzas sablokestan izolitecon, senmovan analizon kaj malklaran testadon. La kapabloj de sablokesto-izolado estas limigitaj kaj atingis la limon de siaj kapabloj (plia fragmentiĝo en procezojn estas nepraktika el la vidpunkto de resursa konsumo). Limigoj de uzado de sablokesto inkludas grandajn superkostojn kaj pliigitan memorkonsumon kaŭzitan de la bezono generi novajn procezojn, same kiel kromajn prokrastojn asociitajn kun la uzo de IPC.

Samtempe, sandbox ne forigas vundeblecojn en la kodo, sed nur reduktas riskojn kaj malfaciligas la atakon, ĉar ekspluatado postulas la identigon de ne unu, sed pluraj vundeblecoj. Metodoj bazitaj sur koda testado estas limigitaj en tio, ke por identigi erarojn, necesas krei kondiĉojn por ke la problemo manifestu sin. Ne eblas kovri ĉiujn eblajn opciojn, do multaj eraroj pasas nerimarkitaj.

Por sistemaj procezoj en Android, Guglo aliĝas al la "regulo de du", laŭ kiu ĉiu aldonita kodo devas plenumi ne pli ol du el tri kondiĉoj: labori kun nevalidigitaj enigaĵoj, uzante nesekuran programlingvon (C/C++), kaj funkciante sen strikta sablokesto-izolado (havante altigitajn privilegiojn). Ĉi tiu regulo implicas, ke la kodo por prilaborado de eksteraj datumoj devas aŭ esti reduktita al minimumaj privilegioj (izolitaj) aŭ skribita en sekura programlingvo.

Guglo ne celas reverki ekzistantan C/C++-kodon en Rust, sed planas uzi ĉi tiun lingvon por evoluigi novan kodon. Estas senco uzi Rust por nova kodo ĉar, statistike, la plej multaj cimoj aperas en nova aŭ lastatempe ŝanĝita kodo. Precipe, ĉirkaŭ 50% de detektitaj memoreraroj en Android estas detektitaj en kodo skribita antaŭ malpli ol jaro.

Rust estas inkluzivita inter la ĉefaj lingvoj por disvolviĝo de Android-platformo


fonto: opennet.ru

Aldoni komenton