Në kodin bazë të bërthamës Linux, mbi të cilin formohet lëshimi 6.18, është pranuar realizimi i mekanizmit të ndërlidhjes ndërproçesore Binder, e shkruar në gjuhën Rust. Binder përdoret në Android për të organizuar ndërveprimin midis proceseve dhe thirrjen e metodave nga distanca (një proces Android mund të thërrasë një metodë apo funksion në një proces tjetër Android, duke përdorur Binder për identifikimin, thirrjen dhe kalimin e argumenteve midis proceseve). Kodi i Binder-it u riprodhua në Rust si pjesë e një projekti për forcimin e sigurisë, promovimin e teknikave të programimit të sigurta dhe përmirësimin e efektivitetit të zbulimit të problemeve në punën me memorien në Android (rreth 70% e të gjitha dobësive të rrezikshme të zbuluara në Android janë shkaktuar nga gabimet në punën me memorien).
PĂ«rdorimi i Rust ka ndihmuar nĂ« zgjidhjen e disa problemeve me tĂ« cilat janĂ« pĂ«rballur zhvilluesit e Binder, duke pĂ«rfshirĂ« gabimet lidhur me numĂ«rimin e referencave, bllokadat dhe kontrollin e kufijve, si dhe duke zvogĂ«luar ndjeshĂ«m kompleksitetin e trajtimit tĂ« gabimeve. Implementimi i Binder nĂ« Rust Ă«shtĂ« funksionalisht i ngjashĂ«m me variantin origjinal nĂ« gjuhĂ«n C, kalon tĂ« gjitha testet AOSP (Projekti Open-Source i Android) dhe mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar redaktime operative tĂ« firmware-it tĂ« Android. MegjithĂ«se ofron mundĂ«si tĂ« avancuara dhe mbĂ«shtetje pĂ«r objekte me semantikĂ« komplekse pronĂ«sie, drivere nĂ« Rust rezultoi tĂ« ishte mĂ« i vogĂ«l se varianti nĂ« C â 5.5 pĂ«r 5.8 mijĂ« rreshta kod.
Në përshkrimin e komitetit, autori përmend arsyet e mëposhtme për ripërkthimin e Binder:
- Binder ka qenĂ« nĂ« zhvillim pĂ«r 15 vjet dhe gjatĂ« kĂ«saj kohe funksionaliteti dhe kompleksiteti i tij janĂ« rritur ndjeshĂ«m â projekti ndodhet nĂ« ndĂ«rfaqen e tĂ« gjitha elementeve tĂ« Android-it dhe mbulon shumĂ« detyra qĂ« shkojnĂ« pĂ«rtej IPC:
- analizë e saktë dhe transformim të përmbajtjes së transaksioneve, të cilat mund të përmbajnë disa objekte të ndryshme (p.sh., tregues, deshifues dosjesh), duke bashkëvepruar me njëri-tjetrin;
- kontrolli i madhësisë së grupeve të vazhduese në hapësirën e përdoruesit dhe sigurimin e caktimit të transaksioneve të vazhdueshme në mënyrë që të shmangen bllokimet kur shterojnë vazhduesit në grup;
- ndjekja e numëruesve të referencave të objekteve që përdoren nga disa procese, duke e dërguar saktësisht ndryshimin e numëruesve të referencave midis proceseve;
- trajtim i skenarëve të shumtë të shfaqjes së gabimeve dhe kombinimi i 13 bllokimeve të ndryshme, 7 numëruesve të referencave dhe variablave atomikë. Gjatë kësaj, ai duhet të kryejë detyra të tilla sa më shpejt dhe saktë.
- Në kodin e vjetër është akumuluar një borxh i dukshëm teknik, i cili e ka komplikuar si gjetjen e gabimeve ashtu edhe zhvillimin e mëtejshëm. Për shembull, në thelbin e tij hasen funksione të mëdha me më shumë se një mijë rreshta kod, metoda të dyshimta të trajtimit të gabimeve dhe struktura të komplikuara.
- Binder është një komponent kritik në aspektin e sigurisë për Android, pasi elementët e platformës që operojnë në mjedise të izoluar sandbox, si procesi i renderimit në Chrome dhe SW Codec, kanë qasje të drejtpërdrejtë në të, dhe një dobësi në Binder do të lejonte anashkalimin e izolimit. Kompleksiteti i lartë së bashku me borxhin teknik e komplikon ndjeshëm ruajtjen e një niveli të lartë të sigurisë në Binder.
Burimi: opennet.ru
