Google blijft werken aan het porten van Android naar Rust 

Roest-Android

Google is al bezig met de migratie van verschillende Android-componenten naar Rust

Sinds enkele maanden is We hebben een deel van het nieuws hier op de blog gedeeld hoogtepunten over de steun en acceptatie die het heeft gehad Roest in de verschillende projecten en ontwikkelingen, waarvan velen zwaargewichten zijn, zeg maar Linux, Windows en zelfs Android.

Ondanks de grote acceptatie door de grote jongens, is de overstap naar Rust niet eenvoudig, aangezien het, zelfs om geaccepteerd te worden als tweede programmeertaal in de Linux Kernel, nogal wat dingen moest doorstaan ​​voordat Linus Torvalds het kon proberen. goedkeuring.

In het geval van Google is dit geen uitzondering en sinds enkele maanden introduceert Google Rust in veel van zijn projecten en Android is er daar één van en waarin een redelijk gecontroleerde migratiefase is uitgevoerd, aangezien als onderdeel van haar inspanningen om de beveiliging van de kritieke softwarecomponenten van het platform te versterken, nu Google heeft aangekondigd dat het de migratiewerkzaamheden heeft voltooid van de firmware "Beschermde VM (pVM) van Android Virtualization Framework" naar Rust.

Deze firmware Het wordt gebruikt om de werking van virtuele machines te organiseren die door de pVM-hypervisor van Android worden gelanceerd. Voorheen werd firmware geschreven in C en geïmplementeerd bovenop de U-Boot-bootloader, in wiens code eerder kwetsbaarheden werden aangetroffen die werden veroorzaakt door geheugenproblemen.

De hypervisor pVM neemt al in een vroeg stadium van de opstart de regie over y biedt volledige isolatie van het geheugen van de virtuele machine van de hostomgeving, het voorkomen van toegang van het hostsysteem tot beschermde virtuele machines die gevoelige gegevens verwerken. De pvmfm-firmware (Protected Virtual Machine Firmware) neemt de controle onmiddellijk over na het opstarten van de virtuele machine, verifieert de gegenereerde omgeving en besluit het opstarten af ​​te breken als er integriteitsproblemen worden gedetecteerd of genereert een opstartcertificaat voor het gastsysteem als de vertrouwensketen is bereikt.

Het herschrijven van Roest maakt het gemakkelijker en veiliger om te voldoen aan de ‘regel van twee’ van Google om Android-systeemcomponenten veilig te houden. Volgens deze regel mag elke toegevoegde code aan niet meer dan twee van drie voorwaarden voldoen: werken met niet-gevalideerde invoergegevens, een onveilige programmeertaal gebruiken (C/C++) en worden uitgevoerd met verhoogde rechten. Deze regel impliceert dat code voor het verwerken van externe gegevens moet worden teruggebracht tot de minste rechten (geïsoleerd) of geschreven in een veilige programmeertaal. Volgens de statistieken van Google is ongeveer 70% van alle geïdentificeerde gevaarlijke kwetsbaarheden in Android te wijten aan fouten bij het werken met geheugen.

Onder de moeilijkheden die zich voordoen bij het ontwikkelen van componenten op laag niveau, zoals controllers in de Rust-taal, wordt de noodzaak genoemd om met pointers in de onveilige modus te werken, aangezien Rust wordt gemaakt met het gebruik van geheugen dat is toegewezen in de taal in gedachten. Roest.

Onder de nadelen, Het is ook de moeite waard om de nadruk te leggen op de behoefte aan verbeterde syntaxis voor toegang tot structuurvelden en array-indexen via eenvoudige verwijzingen zonder verwijzingen te maken, evenals beperkingen bij het maken van veilige koppelingen naar onveilige bewerkingen die ongedefinieerd gedrag kunnen veroorzaken en niet door de compiler kunnen worden gecontroleerd.

Vermeldenswaard is dat de nieuwe firmware herschreven is in Rust inbegrepen in Android 14 en universele bibliotheken die tijdens het firmware-ontwikkelingsproces zijn gemaakt, worden als pakketten verpakt en geporteerd naar de Rust-gemeenschap. De resulterende codegrootte vergeleken met de vorige versie van de pVM-firmware die 220 kB besloeg, de nieuwe code beslaat 460 kB, maar nieuwe functies toegevoegd aan de herschreven versie, waardoor het mogelijk was om enkele andere componenten te verwijderen die tijdens het opstarten werden gebruikt.

Hierdoor bleek de totale omvang van alle oude en nieuwe kofferbakcomponenten vergelijkbaar. Opgemerkt moet worden dat wanneer grootte belangrijker is dan prestatie, resultaten vergelijkbaar met die van de C-taal kunnen worden bereikt door extra grootte-optimalisatiemodi in de compiler in te schakelen, onnodige afhankelijkheden te negeren en geen tekenreeksformatters te gebruiken.

Eindelijk als u er meer over wilt wetenkunt u de details in het volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.