Ang kalawang ay kasama sa mga pangunahing wika para sa pagbuo ng platform ng Android

Inihayag ng Google ang pagsasama ng Rust programming language sa mga wikang pinapayagan para sa pagbuo ng Android platform. Ang Rust language compiler ay kasama sa Android source tree noong 2019, ngunit nanatiling eksperimental ang suporta para sa wikang ito. Ang ilan sa mga unang bahagi ng Rust na binalak para sa Android ay kinabibilangan ng mga bagong pagpapatupad ng mekanismo ng komunikasyon ng Binder interprocess at ang Bluetooth stack.

Ang pagpapakilala ng Rust ay isinagawa bilang bahagi ng isang proyekto upang palakasin ang seguridad, i-promote ang mga ligtas na diskarte sa programming at dagdagan ang kahusayan ng pagtukoy ng mga problema kapag nagtatrabaho sa memorya sa Android. Napansin na ang tungkol sa 70% ng lahat ng mga mapanganib na kahinaan na natukoy sa Android ay sanhi ng mga error kapag nagtatrabaho gamit ang memorya. Ang paggamit ng Rust, na nakatutok sa kaligtasan ng memorya at awtomatikong pamamahala ng memorya, ay magbabawas sa panganib ng mga kahinaan na dulot ng mga error sa memorya gaya ng after-free access at buffer overruns.

Ang kalawang ay nagpapatupad ng kaligtasan ng memorya sa oras ng pag-compile sa pamamagitan ng pagsuri sa sanggunian, pagmamay-ari ng bagay at panghabambuhay na pagsubaybay sa bagay (mga saklaw), at sa pamamagitan ng pagsusuri sa kawastuhan ng mga pag-access sa memorya sa runtime. Nagbibigay din ang Rust ng proteksyon laban sa mga overflow ng integer, nangangailangan na masimulan ang mga variable na halaga bago gamitin, magkaroon ng mas mahusay na paghawak ng error sa karaniwang library, ginagamit ang konsepto ng mga hindi nababagong reference at variable bilang default, at nag-aalok ng malakas na static na pag-type upang mabawasan ang mga lohikal na error.

Sa Android, ang kaligtasan ng memorya ay ibinibigay sa mga suportadong wika na Kotlin at Java, ngunit hindi sila angkop para sa pagbuo ng mga bahagi ng system dahil sa mataas na overhead. Ginagawang posible ng kalawang na makamit ang pagganap na malapit sa mga wikang C at C++, na nagbibigay-daan dito na magamit para sa pagbuo ng mababang antas ng mga bahagi ng platform at mga bahagi para sa pakikipag-ugnayan sa hardware.

Para matiyak ang seguridad ng C at C++ code, gumagamit ang Android ng sandbox isolation, static analysis, at fuzzing testing. Ang mga kakayahan ng sandbox isolation ay limitado at umabot na sa limitasyon ng kanilang mga kakayahan (ang karagdagang fragmentation sa mga proseso ay hindi praktikal mula sa punto ng view ng pagkonsumo ng mapagkukunan). Kasama sa mga limitasyon ng paggamit ng sandbox ang malalaking gastos sa overhead at pagtaas ng pagkonsumo ng memory na dulot ng pangangailangang mag-spawn ng mga bagong proseso, pati na rin ang mga karagdagang pagkaantala na nauugnay sa paggamit ng IPC.

Kasabay nito, hindi inaalis ng sandbox ang mga kahinaan sa code, ngunit binabawasan lamang ang mga panganib at ginagawang kumplikado ang pag-atake, dahil ang pagsasamantala ay nangangailangan ng pagkakakilanlan ng hindi isa, ngunit ilang mga kahinaan. Ang mga pamamaraan batay sa pagsubok ng code ay limitado sa paraang upang matukoy ang mga error, kinakailangan na lumikha ng mga kondisyon para sa problema na magpakita mismo. Hindi posibleng masakop ang lahat ng posibleng opsyon, kaya maraming error ang hindi napapansin.

Para sa mga proseso ng system sa Android, sinusunod ng Google ang "rule of two", ayon sa kung saan ang anumang idinagdag na code ay dapat matugunan ng hindi hihigit sa dalawa sa tatlong kundisyon: pagtatrabaho sa hindi wastong data ng input, gamit ang isang hindi ligtas na programming language (C/C++), at tumatakbo nang walang mahigpit na sandbox isolation (may mataas na mga pribilehiyo). Ang panuntunang ito ay nagpapahiwatig na ang code para sa pagpoproseso ng panlabas na data ay dapat na bawasan sa kaunting mga pribilehiyo (nakahiwalay) o nakasulat sa isang secure na programming language.

Hindi nilalayon ng Google na muling isulat ang umiiral nang C/C++ code sa Rust, ngunit planong gamitin ang wikang ito upang bumuo ng bagong code. Makatuwirang gamitin ang Rust para sa bagong code dahil, ayon sa istatistika, karamihan sa mga bug ay lumalabas sa bago o kamakailang binagong code. Sa partikular, humigit-kumulang 50% ng mga natukoy na error sa memorya sa Android ang natukoy sa code na isinulat wala pang isang taon ang nakalipas.

Ang kalawang ay kasama sa mga pangunahing wika para sa pagbuo ng platform ng Android


Pinagmulan: opennet.ru

Magdagdag ng komento