Rust är nu en av huvudprogrammeringsspråken för Android-plattformen.

Google har tillkännagivit att programspråket Rust nu är ett av de språk som är tillåtna för utveckling av Android-plattformen. Rust-kompilatorn inkluderades i källkodsstrukturen för Android redan 2019, men stödet för språket har varit experimentellt. Bland de första komponenterna på Rust som planeras att levereras till Android är nya implementationer av mekanismen för mellanprocesskommunikation Binder och Bluetooth-stacken.

Införandet av Rust har genomförts som en del av ett projekt för att öka säkerheten, främja metoder för säker programmering och förbättra effektiviteten i att identifiera problem relaterade till minne i Android. Det noteras att nästan 70 % av alla farliga sårbarheter som upptäckts i Android orsakas av minneshanteringsfel. Användningen av Rust, som fokuserar på säker minneshantering och erbjuder automatiserad minneshantering, kommer att minska risken för sårbarheter som orsakas av minnesfel, såsom att be om åtkomst till minnesområden efter att de frigjorts och buffertöverskridningar.

Säker minneshantering garanteras i Rust under kompileringen genom referenskontroll, spårning av ägande av objekt och hantering av objektens livstid (synlighet), samt genom att bedöma korrekt minnesåtkomst under kodens körning. Rust erbjuder också verktyg för att skydda mot heltalsöverflöd, kräver obligatorisk initialisering av variabelvärden innan användning, hanterar fel bättre i standardbiblioteket, tillämpar konceptet av oföränderliga (immutable) referenser och variabler som standard, och erbjuder stark statisk typning för att minimera logiska fel.

I Android säkerställs säker minneshantering i de redan stödda språken Kotlin och Java, men dessa är inte lämpliga för utveckling av systemkomponenter på grund av stora overheadkostnader. Rust möjliggör prestanda i närheten av C- och C++-språken, vilket möjliggör användning vid utveckling av låg nivå-komponenter för plattformen och komponenter för interaktion med hårdvara.

För att säkerställa säkerheten hos koden i C och C++ på Android används sandbox-isolering, statisk analys och fuzzing-testning. Möjligheterna för sandbox-isolering är begränsade och har nått sina gränser (ytterligare fragmentering av processer är oekonomiskt ur resursförbrukningsperspektiv). Bland begränsningarna vid användning av sandbox nämns höga overheadkostnader och ökad minnesanvändning orsakad av behovet av att skapa nya processer, samt uppkomsten av ytterligare fördröjningar kopplade till användning av IPC.

Samtidigt eliminerar sandbox inte sårbarheter i koden, utan minskar bara riskerna och komplicerar genomförandet av attacker, eftersom det för utnyttjande krävs att flera sårbarheter identifieras snarare än en. Metoder baserade på testning av kod är begränsade av att det krävs särskilda förhållanden för att problem ska uppstå. Att täcka alla möjliga scenarier är inte möjligt, varför många fel förblir oupptäckta.

För systemprocesser i Android följer företaget Google "regeln om två", enligt vilken all kod som läggs till får uppfylla högst två av tre villkor: arbete med okontrollerade indata, användning av osäkert programmeringsspråk (C/C++) och körning utan strikt sandbox-isolering (förekomst av utökade privilegier). Av denna regel följer att kod för bearbetning av externa data antingen bör begränsas till minimala privilegier (isolerad) eller skrivas på ett säkert programmeringsspråk.

Google har inte som mål att skriva om den befintliga C/C++-koden till Rust, utan planerar att använda detta språk för utveckling av ny kod. Det är meningsfullt att använda Rust för ny kod, eftersom statistiskt sett uppstår de flesta fel i ny eller nyligen ändrad kod. I synnerhet upptäcks omkring 50% av de identifierade minnesfelen i Android i kod som skrivits för mindre än ett år sedan.

Rust är nu en av huvudprogrammeringsspråken för Android-plattformen.


Källa: opennet.ru
Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster