Ang Rust gilakip sa mga nag-unang mga pinulongan alang sa pagpalambo sa plataporma sa Android

Gipahibalo sa Google ang paglakip sa Rust programming language taliwala sa mga lengguwahe nga gitugotan sa pagpalambo sa Android platform. Ang Rust language compiler gilakip sa punoan sa gigikanan sa Android kaniadtong 2019, apan ang suporta alang sa kini nga lengguwahe nagpabilin nga eksperimento. Ang pipila sa unang mga sangkap sa Rust nga giplano alang sa Android naglakip sa bag-ong mga pagpatuman sa Binder interprocess nga mekanismo sa komunikasyon ug ang Bluetooth stack.

Ang pagpaila sa Rust gihimo isip bahin sa usa ka proyekto sa pagpalig-on sa seguridad, pagpalambo sa luwas nga mga teknik sa pagprograma ug pagdugang sa kaepektibo sa pag-ila sa mga problema sa pagtrabaho uban sa memorya sa Android. Namatikdan nga mga 70% sa tanan nga peligro nga mga kahuyangan nga nahibal-an sa Android tungod sa mga sayup kung nagtrabaho uban ang memorya. Ang paggamit sa Rust, nga nagtutok sa kaluwasan sa panumduman ug awtomatik nga pagdumala sa panumduman, makapakunhod sa risgo sa mga kahuyangan nga gipahinabo sa mga sayop sa panumduman sama sa human-free nga pag-access ug mga buffer overruns.

Gipatuman sa Rust ang kaluwasan sa memorya sa oras sa pag-compile pinaagi sa pagsusi sa reference, pagpanag-iya sa butang ug pagsubay sa tibuok kinabuhi nga butang (mga scope), ug pinaagi sa pagtimbang-timbang sa pagkahusto sa mga access sa memorya sa runtime. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan nga ang mga variable nga kantidad masugdan sa wala pa gamiton, adunay mas maayo nga pagdumala sa sayup sa standard nga librarya, gigamit ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, ug nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Sa Android, ang kaluwasan sa memorya gihatag sa gisuportahan na nga mga pinulongan nga Kotlin ug Java, apan dili kini angay alang sa pagpalambo sa mga sangkap sa sistema tungod sa taas nga overhead. Ang Rust nagpaposible nga makab-ot ang pasundayag duol sa C ug C ++ nga mga pinulongan, nga nagtugot niini nga gamiton alang sa pagpalambo sa ubos nga lebel nga mga bahin sa plataporma ug mga sangkap alang sa pagpakig-uban sa hardware.

Aron masiguro ang seguridad sa C ug C++ code, ang Android naggamit sa sandbox isolation, static analysis, ug fuzzing testing. Ang mga kapabilidad sa pag-inusara sa sandbox limitado ug nakaabot sa limitasyon sa ilang mga kapabilidad (ang dugang nga pagkabahin ngadto sa mga proseso dili praktikal gikan sa punto sa panglantaw sa konsumo sa kapanguhaan). Ang mga limitasyon sa paggamit sa sandbox naglakip sa dagkong mga gasto sa overhead ug dugang nga konsumo sa panumduman tungod sa panginahanglan sa pagpatunghag bag-ong mga proseso, ingon man usab sa dugang nga mga paglangan nga nalangkit sa paggamit sa IPC.

Sa samang higayon, ang sandbox wala magwagtang sa mga kahuyangan sa code, apan makapamenos lamang sa mga risgo ug makapakomplikado sa pag-atake, tungod kay ang pagpahimulos nagkinahanglan sa pag-ila sa dili usa, apan daghang mga kahuyangan. Ang mga pamaagi nga gibase sa pagsulay sa code limitado sa nga aron mahibal-an ang mga sayup, kinahanglan nga maghimo mga kondisyon alang sa problema nga magpakita sa iyang kaugalingon. Dili posible nga tabonan ang tanan nga posible nga mga kapilian, daghang mga sayup ang wala mamatikdan.

Alang sa mga proseso sa sistema sa Android, ang Google nagsunod sa "pagmando sa duha", sumala sa kung diin ang bisan unsang dugang nga code kinahanglan nga magtagbo sa dili molapas sa duha sa tulo ka mga kondisyon: pagtrabaho uban ang dili balido nga data sa pag-input, gamit ang dili luwas nga programming language (C/C++), ug nagdagan nga walay estrikto nga sandbox isolation (adunay taas nga mga pribilehiyo). Kini nga lagda nagpasabot nga ang code alang sa pagproseso sa eksternal nga datos kinahanglan nga mapakunhod ngadto sa dyutay nga mga pribilehiyo (isolated) o isulat sa usa ka luwas nga programming language.

Wala tuyoa sa Google nga isulat pag-usab ang kasamtangan nga C/C++ code sa Rust, apan nagplano nga gamiton kini nga pinulongan aron makahimo og bag-ong code. Makatarunganon nga gamiton ang Rust alang sa bag-ong code tungod kay, sa istatistika, kadaghanan sa mga bug makita sa bag-o o bag-o lang giusab nga code. Sa partikular, mga 50% sa mga nakit-an nga mga sayup sa memorya sa Android ang nakit-an sa code nga gisulat wala pay usa ka tuig ang milabay.

Ang Rust gilakip sa mga nag-unang mga pinulongan alang sa pagpalambo sa plataporma sa Android


Source: opennet.ru

Idugang sa usa ka comment