I Linux-kÀrnan 6.18 har en implementation av Binder IPC för Android antagits, skriven i Rust.

I kodbasen för Linux-kÀrnan, som ligger till grund för version 6.18, har implementeringen av mekanismen för mellanprocesskommunikation, Binder, accepterats, skriven i Rust. Binder anvÀnds i Android för att organisera interaktionen mellan processer och för fjÀrranrop av metoder (en Android-process kan anropa en metod eller funktion i en annan Android-process, vilket anvÀnder Binder för att identifiera, anropa och överföra argument mellan processerna). Koden för Binder har skrivits om i Rust som en del av ett projekt för att förbÀttra sÀkerheten, frÀmja metoder för sÀker programmering och öka effektiviteten vid identifiering av minnesproblem i Android (ungefÀr 70% av alla farliga sÄrbarheter i Android orsakas av minneshanteringsfel).

AnvĂ€ndningen av Rust har gjort det möjligt att lösa vissa problem som utvecklarna av Binder har stött pĂ„, inklusive buggar relaterade till referensrĂ€kning, lĂ„sning och grĂ€nskontroll, samt att avsevĂ€rt minska komplexiteten av felhantering. Implementeringen av Binder i Rust Ă€r funktionellt lik den ursprungliga versionen i C, genomgĂ„r alla tester i AOSP (Android Open-Source Project) och kan anvĂ€ndas för att skapa arbetsversioner av Android-firmware. Trots dess avancerade funktioner och stöd för objekt med komplex Ă€ganderĂ€ttssemantik, har drivrutinen i Rust blivit mindre Ă€n versionen i C — 5.5 mot 5.8 tusen kodrader.

I commitbeskrivningen nÀmner författaren följande motiv för att skriva om Binder:

  • Binder har utvecklats i 15 Ă„r och under denna tid har dess funktionalitet och komplexitet ökat betydligt — projektet befinner sig i skĂ€rningspunkten för alla Android-komponenter och omfattar mĂ„nga uppgifter som gĂ„r bortom IPC:
    • korrekt analys och transformation av innehĂ„llet i transaktioner som kan innehĂ„lla flera objekt av olika typer (t.ex. pekare, filbeskrivare) som interagerar med varandra;
    • kontroll av storleken pĂ„ trĂ„dpooler i anvĂ€ndarrymd och sĂ€kerstĂ€llande av att transaktioner tilldelas trĂ„dar pĂ„ ett sĂ€tt som undviker dödlĂ€gen nĂ€r trĂ„darna i poolen Ă€r slut;
    • övervakning av referensrĂ€knare för objekt som anvĂ€nds av flera processer, korrekt vidarebefordra Ă€ndringar i referensrĂ€knare mellan processerna;
    • hantering av mĂ„nga olika felaktighetsfall och kombinera 13 olika lĂ„s, 7 lĂ€nkrĂ€knare och atomĂ€ra variabler. Vid detta ska liknande uppgifter utföras sĂ„ snabbt och korrekt som möjligt.
  • Den gamla koden har samlat pĂ„ sig en betydande teknisk skuld som har komplicerat bĂ„de feluppspĂ„rning och vidare utveckling. Till exempel finns det stora funktioner i kĂ€rnan med mer Ă€n tusen rader kod, tveksamma felhanteringsmetoder och komplicerade strukturer.
  • Binder Ă€r en kritisk sĂ€kerhetskomponent för Android, eftersom plattformelement som körs i isolerade sandbox-miljöer, sĂ„som renderingprocessen i Chrome och SW Codec, har direkt tillgĂ„ng till den. En sĂ„rbarhet i Binder kan kringgĂ„ isoleringen. Den höga komplexiteten, i kombination med teknisk skuld, försvĂ„rar kraftigt upprĂ€tthĂ„llande av en hög sĂ€kerhetsnivĂ„ i Binder.

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