Rust on lisatud Androidi platvormi arendamise peamiste keelte hulka

Google on teatanud Rust programmeerimiskeele lisamisest Androidi platvormi arendamiseks lubatud keelte hulka. Rust keele kompilaator lisati Androidi lähtepuusse juba 2019. aastal, kuid selle keele tugi jäi eksperimentaalseks. Mõned esimesed Androidi jaoks kavandatud Rusti komponendid hõlmavad Binderi protsessidevahelise sidemehhanismi ja Bluetoothi ​​​​pinu uusi rakendusi.

Rusti kasutuselevõtt viidi läbi projekti raames, mille eesmärk on tugevdada turvalisust, edendada ohutuid programmeerimistehnikaid ja suurendada Androidi mäluga töötamise probleemide tuvastamise tõhusust. Märgitakse, et umbes 70% kõigist Androidis tuvastatud ohtlikest turvaaukudest on põhjustatud mäluga töötamise vigadest. Rusti kasutamine, mis keskendub mäluohutusele ja automaatsele mäluhaldusele, vähendab mäluvigade (nt vaba juurdepääsu ja puhvri ületamise) põhjustatud haavatavust.

Rooste tagab mälu ohutuse kompileerimise ajal, kontrollides viidet, objektide omandiõigust ja objekti eluea jälgimist (ulatusalasid) ning hinnates mälupöörduste õigsust käitusajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste initsialiseerimist enne kasutamist, standardteegis on parem veakäsitlus, kasutab vaikimisi muutumatute viidete ja muutujate kontseptsiooni ning pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Androidis on mälu turvalisus olemas juba toetatud keeltes Kotlin ja Java, kuid need ei sobi suure üldkulude tõttu süsteemikomponentide arendamiseks. Rust võimaldab saavutada C- ja C++-keeltele lähedast jõudlust, mis võimaldab seda kasutada platvormi madalatasemeliste osade ja riistvaraga suhtlemise komponentide arendamiseks.

C- ja C++-koodi turvalisuse tagamiseks kasutab Android liivakasti isoleerimist, staatilist analüüsi ja hägusat testimist. Liivakasti isoleerimise võimalused on piiratud ja jõudnud oma võimaluste piirini (edasine killustamine protsessideks on ressursitarbimise seisukohalt ebaotstarbekas). Liivakasti kasutamise piirangud hõlmavad suuri üldkulusid ja suurenenud mälutarbimist, mis on tingitud vajadusest luua uusi protsesse, samuti täiendavaid viivitusi, mis on seotud IPC kasutamisega.

Samal ajal ei kõrvalda liivakast koodi haavatavusi, vaid vähendab ainult riske ja muudab rünnaku keerulisemaks, kuna ärakasutamine nõuab mitte ühe, vaid mitme haavatavuse tuvastamist. Kooditestimisel põhinevad meetodid on piiratud selle poolest, et vigade tuvastamiseks on vaja luua tingimused probleemi avaldumiseks. Kõiki võimalikke variante pole võimalik katta, mistõttu jäävad paljud vead märkamata.

Androidi süsteemiprotsesside puhul järgib Google "kahe reeglit", mille kohaselt peab iga lisatud kood vastama mitte rohkem kui kahele tingimusele kolmest: töötamine kinnitamata sisendandmetega, ebaturvalise programmeerimiskeele (C/C++) kasutamine ja töötab ilma liivakasti range isolatsioonita (kõrgendatud õigustega). See reegel tähendab, et välisandmete töötlemise kood peab olema vähendatud minimaalsete privileegideni (isoleeritud) või kirjutatud turvalises programmeerimiskeeles.

Google'i eesmärk ei ole Rustis olemasolevat C/C++ koodi ümber kirjutada, vaid kavatseb seda keelt kasutada uue koodi väljatöötamiseks. Uue koodi jaoks on mõttekas kasutada Rusti, sest statistiliselt ilmneb enamik vigu uues või hiljuti muudetud koodis. Eelkõige avastatakse umbes 50% Androidis tuvastatud mäluvigadest vähem kui aasta tagasi kirjutatud koodis.

Rust on lisatud Androidi platvormi arendamise peamiste keelte hulka


Allikas: opennet.ru

Lisa kommentaar