Ang kalawang ay isang paborito para sa pagpapaunlad ng Android

Inilantad ng Google kamakailan lamang ang hilig wika ng programa Kalawang sa mga pinapayagan na wika para sa pagpapaunlad ng Android.

Dahil ang Rust compiler ay isinama sa puno ng mapagkukunan ng Android noong 2019, ngunit ang suporta sa wika ay nanatiling pang-eksperimentong. Ang ilan sa mga unang bahagi ng Rust na ipinadala sa Android ay mga bagong pagpapatupad ng mekanismo ng inter-process na komunikasyon ng Binder at ang Bluetooth stack.

Ang pagpapatupad ng kalawang ay natupad bilang bahagi ng isang proyekto upang palakasin ang seguridad, itaguyod ang mga ligtas na diskarte sa pag-coding at pagbutihin ang kahusayan ng pagkilala ng mga problema kapag nagtatrabaho sa memorya sa Android. Napansin na sa paligid ng 70% ng lahat ng mga mapanganib na kahinaan na nakilala sa Android ay sanhi ng mga pagkakamali kapag nagtatrabaho sa memorya.

Ang paggamit ng Rust na wika, ito nakatuon sa ligtas na pamamahala ng memorya at nagbibigay ng awtomatikong pamamahala ng memorya, mababawas nito ang panganib ng mga kahinaan na sanhi ng mga pagkakamali sa panahon ng paghawak ng memorya, tulad ng pag-access sa isang lugar ng memorya pagkatapos na ito ay napalaya at umapaw sa mga limitasyon ng buffer.

Ang ligtas na paghawak ng memorya ay natiyak sa Rust sa oras ng pagbuo sa pamamagitan ng pag-check ng mga sanggunian, pagsubaybay sa pagmamay-ari ng object at buhay ng bagay (saklaw), pati na rin ang pagsusuri ng kawastuhan ng pag-access sa memorya sa runtime.

Kalawang nagbibigay din ng mga paraan upang maprotektahan laban sa mga umaapaw integer, nangangailangan ng sapilitan na pagsisimula ng mga variable na halaga bago gamitin, mas mahusay na humahawak ng mga error sa karaniwang silid-aklatan, pinagtibay ang konsepto ng mga sanggunian at hindi nababago na mga variable bilang default, at nag-aalok ng malakas na static na pagsulat upang i-minimize ang mga lohikal na error.

Sa Android, ang ligtas na pamamahala ng memorya ay ibinibigay sa mga wikang Kotlin at Java suportado na, ngunit hindi angkop para sa pagbuo ng mga bahagi ng system dahil sa mabibigat na overhead.

Pinapayagan ng kalawang na makamit ang isang pagganap na malapit sa mga wika ng C at C ++, na pinapayagan itong magamit upang makabuo ng mga mababang antas na bahagi ng platform at mga bahagi upang makipag-ugnay sa hardware.

Upang matiyak ang seguridad ng C at C ++ code, gumagamit ang Android ng paghihiwalay ng sandbox, static na pagtatasa, at mga pagsusulit sa pag-burn. Ang mga kakayahan sa paghihiwalay ng sandbox ay limitado at naabot ang limitasyon ng kanilang mga kakayahan (ang karagdagang pagkakawatak-watak sa mga proseso ay hindi praktikal mula sa isang pananaw sa pagkonsumo ng mapagkukunan).

Kabilang sa mga limitasyon ng paggamit ng sandbox, binabanggit nila ang mataas na overhead at mas mataas na pagkonsumo ng memorya na sanhi ng pangangailangan na makabuo ng mga bagong proseso, pati na rin ang karagdagang latency na nauugnay sa paggamit ng IPC.

Sa parehong oras, ang sandbox ay hindi tinanggal ang mga kahinaan sa code, ngunit binabawasan lamang ang mga panganib at kumplikado ang pag-atake, dahil ang pagsasamantala ay nangangailangan ng pagkakakilanlan ng hindi isa, ngunit maraming mga kahinaan.

Ang mga pamamaraan ng pagsubok sa code ay limitado dahil, upang makita ang mga error, kailangan mong lumikha ng mga kundisyon para sa pagpapakita ng problema. Hindi posible na sakupin ang lahat ng posibleng pagpipilian, kaya maraming mga error ang hindi napapansin.

Para sa mga proseso ng system sa Android, Sumusunod ang Google sa 'panuntunan ng dalawa'Ayon sa na alinmang idinagdag na code ay hindi dapat makamit ang higit sa dalawa sa tatlong mga kundisyon- Makipagtulungan sa hindi na-verify na data ng pag-input, gumamit ng isang hindi secure na wika ng programa (C / C ++), at patakbuhin nang walang matigas na pagkakahiwalay ng sandbox (na may mataas na pribilehiyo).

Sinusundan mula sa panuntunang ito na ang code upang maproseso ang panlabas na data ay dapat na mabawasan sa pinakamaliit na pribilehiyo (nakahiwalay) o nakasulat sa isang ligtas na wika ng programa.

Hindi layunin ng Google na muling isulat ang code Mayroon nang C / C ++ sa Rust, ngunit balak niyang gamitin ang wikang ito upang makabuo ng bagong code.

Makatuwirang gamitin ang Rust para sa bagong code, dahil sa istatistika ang karamihan sa mga error ay lilitaw sa bago o kamakailang binago na code. Sa partikular, sa paligid ng 50% ng mga error sa memorya na nakita sa Android ay napansin sa code na nakasulat nang mas mababa sa isang taon na ang nakalilipas.

Fuente: https://security.googleblog.com


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   miguel rodriguez dijo

    Ang kabalintunaan, kapag ang iyong pinakamalaking kakumpitensya ay nagtapos sa pag-aampon ng isang bagay na iyong tinulungan na bumuo para sa iyong sariling mga layunin ... Ang kalawang ay nasa pagtaas.