Android 21-ում նոր կազմված կոդի մոտ 13%-ը գրված է Rust-ով

Google-ի ինժեներներն ամփոփել են Rust լեզվով աջակցության ներդրման առաջին արդյունքները Android հարթակում: Android 13-ում ավելացված նոր կազմված կոդի մոտավորապես 21%-ը գրված է Rust-ով, իսկ 79%-ը C/C++-ով: AOSP (Android Open Source Project) պահոցը, որը մշակում է Android պլատֆորմի սկզբնական կոդը, պարունակում է մոտավորապես 1.5 միլիոն տող Rust կոդ՝ կապված այնպիսի նոր բաղադրիչների հետ, ինչպիսիք են Keystore2 ծածկագրային բանալիների պահեստը, UWB չիպերի կույտ (Ultra-Wideband) , DNS-over-HTTP3 արձանագրության ներդրում, AVF (Android Virtualization Framework) վիրտուալացման շրջանակ, փորձնական կույտեր Bluetooth-ի և Wi-Fi-ի համար:

Android 21-ում նոր կազմված կոդի մոտ 13%-ը գրված է Rust-ով

Հիշողության հետ աշխատելու սխալների հետևանքով առաջացած խոցելիության ռիսկը նվազեցնելու նախկինում ընդունված ռազմավարության համաձայն՝ Rust լեզուն ներկայումս օգտագործվում է հիմնականում նոր կոդի մշակման և ամենախոցելի և կենսական ծրագրային բաղադրիչների անվտանգությունն աստիճանաբար ամրապնդելու համար: Ամբողջ պլատֆորմը Rust-ին փոխանցելու ընդհանուր նպատակ չկա, և հին կոդը մնում է C/C++-ում, և դրանում առկա սխալների դեմ պայքարն իրականացվում է fuzzing թեստավորման, ստատիկ վերլուծության և նման տեխնիկայի մշակման միջոցով: օգտագործելով MiraclePtr տիպը (կապել չմշակված ցուցիչների վրա, կատարել լրացուցիչ ստուգումներ՝ ազատված հիշողության տարածքներ մուտք գործելու համար), Scudo հիշողության տեղաբաշխման համակարգը (անվտանգ փոխարինող malloc/free-ի համար) և սխալների հայտնաբերման մեխանիզմներ հիշողության հետ աշխատելիս HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN և KFENCE:

Ինչ վերաբերում է Android պլատֆորմի խոցելիության բնույթի վիճակագրությանը, ապա նշվում է, որ հիշողության հետ անապահով աշխատող նոր կոդերի նվազումով, հիշողության հետ աշխատելիս սխալների պատճառով առաջացած խոցելիությունների թիվը նվազում է։ Օրինակ՝ հիշողության հետ կապված խնդիրների պատճառով առաջացած խոցելիության տեսակարար կշիռը 76-ի 2019%-ից նվազել է մինչև 35%՝ 2022-ին։ Բացարձակ թվերով 2019 թվականին հայտնաբերվել է հիշողության հետ կապված 223 խոցելիություն, 2020 թվականին՝ 150, 2021 թվականին՝ 100, իսկ 2022 թվականին՝ 85 (բոլոր նշված խոցելիությունները եղել են C/C++ կոդում, Rust կոդում մինչ այժմ նմանատիպ խնդիրներ չկան։ հայտնաբերվել է): 2022 թվականն առաջին տարին էր, երբ հիշողության հետ կապված խոցելիությունները դադարեցին գերակշռել։

Android 21-ում նոր կազմված կոդի մոտ 13%-ը գրված է Rust-ով

Քանի որ հիշողության հետ կապված խոցելիությունները սովորաբար ամենավտանգավորն են, ընդհանուր վիճակագրությունը նաև ցույց է տալիս կարևոր խնդիրների և խնդիրների քանակի նվազում, որոնք կարող են օգտագործվել հեռակա կարգով: Միևնույն ժամանակ, հիշողության հետ աշխատելու հետ չկապված խոցելիության հայտնաբերման դինամիկան վերջին 4 տարիներին մնացել է մոտավորապես նույն մակարդակի վրա՝ ամսական 20 խոցելիություն։ Մնում է նաև վտանգավոր խնդիրների տեսակարար կշիռը հիշողության հետ աշխատելիս առաջացած սխալների հետևանքով առաջացած խոցելիության մեջ (բայց քանի որ նման խոցելիության թիվը նվազում է, վտանգավոր խնդիրների թիվը նույնպես նվազում է):

Android 21-ում նոր կազմված կոդի մոտ 13%-ը գրված է Rust-ով

Վիճակագրությունը նաև հետևում է հիշողության հետ անապահով աշխատող նոր կոդի քանակի և հիշողության հետ կապված խոցելիությունների քանակի հարաբերակցությանը (բուֆերային հեղեղումներ, արդեն ազատված հիշողության հասանելիություն և այլն): Այս դիտարկումը հաստատում է այն ենթադրությունը, որ անվտանգ ծրագրավորման տեխնիկայի ներդրման ժամանակ պետք է կենտրոնանալ նոր ծածկագրի հեռացման վրա, քան գոյություն ունեցող ծածկագրի վերաշարադրման վրա, քանի որ հայտնաբերված խոցելիությունների մեծ մասը նոր կոդում է:

Android 21-ում նոր կազմված կոդի մոտ 13%-ը գրված է Rust-ով


Source: opennet.ru

Добавить комментарий