„Google“ kuria „Android“ dalis „Rust“, kad pagerintų saugumą

click fraud protection

„Google“ rašo ir perrašo „Android“ dalis „Rust“, kad pagerintų visos OS saugumą, palyginti su C ir C++. Skaitykite toliau, kad sužinotumėte daugiau!

„Android“ kaip pilnas OS sprendimas apima daug judančių dalių. Labai plačiai kalbant, šios dalys yra programų ekosistema ir pati OS. Kaip kūrėjas, jūsų pasirinkta programavimo kalba skiriasi priklausomai nuo to, su kuria „Android“ dalimi dirbate. Programų kūrėjams „Java“ ir „Kotlin“ yra populiarios parinktys. Kūrėjams, dirbantiems su OS ir žemesniais jos lygiais, C ir C++ iki šiol buvo populiarūs pasirinkimai. Šiandien „Google“ prideda trečią parinktį OS kūrėjams, nes „Android Open Source Project“ dabar palaiko „Rust“ programavimo kalbą, skirtą pačiai OS kurti.

C ir C++ apribojimai

Žemesnio lygio „Android“ OS reikalingos sistemų programavimo kalbos, tokios kaip C ir C++. Šios kalbos suteikia kūrėjams valdymą ir nuspėjamumą, o tai svarbu norint pasiekti žemo lygio sistemos išteklius ir aparatinę įrangą.

Deja, C ir C++ nesuteikia atminties saugos garantijų, todėl jos yra linkusios į klaidas ir saugumo spragas. Kūrėjas yra atsakingas už atminties naudojimo trukmės valdymą šiomis kalbomis, tačiau sudėtingose ​​ir kelių gijų kodų bazėse tai lengviau pasakyti nei padaryti.

C ir C++ kartu sudaro dešimtis milijonų kodo eilučių Android platformoje. Šios atminties saugos klaidos tampa sunkiausiai pašalinamu kodo neteisingumo šaltiniu, kuris sudaro apie 70 % „Android“ didelio saugumo spragų. Vien tik šių klaidų taisymo nepakanka, kad būtų išspręsta problema, o geresnis būdas būtų jų išvengti.

Atminties saugos trūkumas verčia kūrėjus paleisti Android procesus griežtai suvaržytose ir neprivilegijuotose smėlio dėžėse. Tačiau smėlio dėžės yra brangios dėl išteklių, sunaudoja papildomų išlaidų ir įveda delsą. Smėlio dėžė taip pat visiškai nepašalina kodo pažeidžiamumų, o jo veiksmingumas sumažėja dėl didelio klaidų tankio, o tai leidžia užpuolikams susieti daugybę pažeidžiamumų.

Kitas apribojimas, nors ir ne unikalus C ir C++, bet taikomas visoms atminties saugos problemoms, yra tas, kad klaidinga būsena iš tikrųjų turi būti suaktyvinta instrumentiniame kode, kad ją būtų galima aptikti. Taigi, net jei jūsų kodas puikiai išbandytas, tikroji klaida gali likti nepastebėta. Ir kai randama klaidų, jų taisymas yra kita užduotis, apimanti ilgą ir brangų procesą, dėl kurio ne visada pavyksta tinkamai pataisyti. Taigi klaidų aptikimas tampa nepatikimas, o klaidų prevencija yra geresnis būdas atsižvelgiant į šiuos apribojimus.

Čia atsiranda perėjimas prie atminties saugančios kalbos, pvz., Rust.

Rūdys ir jos privalumai

Rust suteikia atminties saugumo garantijas naudodama kompiliavimo laiko patikras, kad užtikrintų objekto eksploatavimo trukmę / nuosavybės teisę, ir vykdymo laiko patikras, kad įsitikintų, jog prieigos prie atminties yra tinkamos. Šis saugumas pasiekiamas užtikrinant lygiavertes C ir C++ charakteristikas. Rūdys taip pat sumažina smėlio dėžės poreikį, todėl kūrėjai turi daugiau erdvės įdiegti naujas funkcijas, kurios yra saugesnės ir sunaudoja mažiau išteklių.

Nors „Rust“ iš tikrųjų turi savo privalumų, neįmanoma per naktį pakeisti visos „Android“ OS į „Rust“. Ir to gali net neprireikti, nes dauguma „Android“ atminties klaidų atsiranda naujame arba neseniai pakeistame kode, maždaug 50 % jų yra jaunesni nei vienerių metų senumo. „Google“ mano, kad atmintį saugančios kalbos pastangos yra geriausiai nukreiptos į naujus pokyčius, o ne į brandaus C ir C++ kodų perrašymą.

„Rust“ taip pat sutelkia dėmesį į klaidų prevenciją, o ne labai remiasi klaidų aptikimu, todėl pagerinamas kodo teisingumas. Jis turi keletą pagrindinių funkcijų, tokių kaip atminties sauga, duomenų lygiagretumas, išraiškingesnio tipo sistemos, nekintantis nuorodos ir kintamieji pagal numatytuosius nustatymus, saugesnis sveikųjų skaičių tvarkymas, geresnis klaidų tvarkymas standartinėse bibliotekose ir daug daugiau daugiau.

Ką perjungimas į Rust reiškia „Android“?

„Google“ teigia, kad pastaruosius 18 mėnesių pridėjo „Rust“ palaikymą prie „Android“ atvirojo kodo projekto. Tačiau naujos kalbos įtraukimas į „Android“ platformą yra didžiulis darbas. Kai kurias įrankių grandines ir priklausomybes reikia prižiūrėti, atnaujinti testavimo infrastruktūrą ir įrankius, apmokyti kūrėjus.

„Google“ turi keletą ankstyvųjų naudotojų projektų, kuriuos jie bendrins ateinančiais mėnesiais. Tačiau net ir tokiu atveju aiškiai parodoma, kad „Rust“ palaikymo keitimas į daugiau OS yra kelių metų projektas.

Iš to, ką matome, „Google“ jau naudoja Rust keliose vietose. „Android“ naujasis „Bluetooth“ dėklas perrašyti kodinį pavadinimą „Gabeldorsche“ rašoma Rust. Darbas su „Gabeldorsche“ prasidėjo maždaug tuo metu, kai buvo įdiegta „Android 11“, bet vis dar nenaudojama. Android Keystore 2.0 modulis parašytas Rust, taip pat ir rišiklio, Android IPC tvarkyklės, userspace dalis. Nors nesusiję su Android, Fuksijanauja tinklelis taip pat rašoma Rust.

Programų kūrėjams jungiklis nieko nekeičia apie tai, kaip jūs, kaip programų kūrėjas, rašote programas arba kaip veikia sistemos API. Šis jungiklis turi įtakos tik tai, kaip parašyta OS. Pasak „Android“ kūrėjų ryšių komandos nario, „Google“ šiuo metu taip pat neplanuoja išleisti „Rust NDK“. Programų kūrimo palaikomos kalbos ir toliau bus Kotlin, Java, C ir C++.