70 % „Chromium“ saugos problemų sukelia atminties triktys

„Chromium“ projekto kūrėjai analizuojama 912 didelės rizikos ir kritinių spragų, nustatytų stabiliuose „Chrome“ leidimuose nuo 2015 m., ir padarė išvadą, kad 70 % jų sukėlė atminties nesaugumas (klaidos dirbant su rodyklėmis C/C++ kode). Pusę šių problemų (36.1 %) sukelia prieiga prie buferio atlaisvinus su juo susietą atmintį (naudojimas po nemokamo).

70 % „Chromium“ saugos problemų sukelia atminties triktys

Kuriant Chromium iš pradžių taip buvo paguldytas, kad kode gali atsirasti klaidų, todėl didelis dėmesys buvo skiriamas smėlio dėžės izoliacijos naudojimui, siekiant apriboti pažeidžiamumų padarinius. Šiuo metu šios technologijos panaudojimo galimybės yra pasiekusios savo galimybių ribą ir tolesnis skaidymas į procesus resursų vartojimo požiūriu yra nepraktiškas.

Siekdama išlaikyti kodų bazės saugumą, „Google“ taip pat taiko „dviejų taisyklė“, pagal kurią bet koks pridėtas kodas turi atitikti ne daugiau kaip dvi iš trijų sąlygų: dirbti su nepatvirtintais įvesties duomenimis, naudoti nesaugią programavimo kalbą (C/C++) ir veikti su padidintomis privilegijomis. Ši taisyklė reiškia, kad išorinių duomenų apdorojimo kodas turi būti sumažintas iki minimalių privilegijų (izoliuotas) arba parašytas saugia programavimo kalba.

Siekiant dar labiau padidinti kodų bazės saugumą, buvo pradėtas projektas, skirtas užkirsti kelią atminties klaidų atsiradimui kodų bazėje. Yra trys pagrindiniai būdai: sukurti C++ bibliotekas su saugaus atminties veikimo funkcijomis ir išplėsti šiukšliadėžės apimtį, naudojant aparatinės įrangos apsaugos mechanizmus. MTE (Memory Tagging Extension) ir rašymo komponentai kalbomis, kurios užtikrina saugų darbą su atmintimi (Java, Kotlin, JavaScript, Rust, Swift).

Tikimasi, kad darbas bus sutelktas į dvi sritis:

  • Reikšmingas C++ kūrimo proceso pakeitimas, kuris neatmeta neigiamo poveikio našumui (papildomi ribų patikrinimai ir šiukšlių išvežimas). Vietoj neapdorotų rodyklių siūloma naudoti tipą MiraclePtr, kuri leidžia sumažinti išnaudojamų naudojimo po-free klaidas iki gedimų, kurie nekelia grėsmės saugumui, be pastebimo neigiamo poveikio našumui, atminties suvartojimui ir stabilumui.
  • Kalbų, skirtų atlikti atminties saugos patikras kompiliavimo metu, naudojimas (pašalins neigiamą poveikį našumui, būdingą tokiems patikrinimams kodo vykdymo metu, tačiau atsiras papildomų išlaidų organizuojant kodo sąveiką nauja kalba su kodu C++).

Naudoti atmintį saugančias bibliotekas yra paprasčiausias, bet ir ne toks efektyvus būdas. Kodo perrašymas Rust yra vertinamas kaip efektyviausias, bet ir labai brangus būdas.

70 % „Chromium“ saugos problemų sukelia atminties triktys

Šaltinis: opennet.ru

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