Hönnuðir Chromium verkefnisins Rannsókn greindi 912 alvarlegar og gagnrýnar veikleikar sem höfðu komið í ljós í stöðugum Chrome útgáfum frá árinu 2015 og komst að þeirri niðurstöðu að 70% þeirra stafaði af óöryggi í minni (villur í meðhöndlun bendla í C/C++ kóða). Helmingur þessara vandamála (36.1%) stafaði af notkun eftir að aðgangur að biðminni var laus.
Þegar Chromium var hannað var það upphaflega Þar sem ekki er hægt að útiloka villur í kóðanum var mikil áhersla lögð á einangrun sandkassa til að takmarka áhrif veikleika. Eins og er hefur notkun þessarar tækni náð takmörkum sínum og frekari sundrun í ferla er óframkvæmanleg frá sjónarhóli auðlindanotkunar.
Til að viðhalda öryggi kóðagrunns síns notar Google einnig "„, þar sem allur viðbættur kóði má ekki uppfylla fleiri en tvö af þremur skilyrðum: að meðhöndla ótrausta inntaksgögn, nota óöruggt forritunarmál (C/C++) og keyra með auknum réttindum. Þessi regla felur í sér að kóði til að vinna úr ytri gögnum verður annað hvort að vera einangraður eða skrifaður á öruggu forritunarmáli.
Til að styrkja öryggi kóðagrunnsins enn frekar hefur verið hleypt af stokkunum verkefni til að koma í veg fyrir að minnisvillur birtist í kóðagrunninum. Þrjár meginaðferðir eru í gangi: að búa til C++ bókasöfn með föllum fyrir örugga minnismeðhöndlun, að víkka út umfang ruslsafnarans og að nota verndarkerfi fyrir vélbúnað. (Memory Tagging Extension) og skrifa íhluti í forritunarmálum sem veita minnisöryggi (Java, Kotlin, JavaScript, Rust, Swift).
Gert er ráð fyrir að verkið einbeiti sér að tveimur sviðum:
- Mikilvæg breyting á þróunarferlinu í C++, sem gæti haft neikvæð áhrif á afköst (aukamörkaeftirlit og ruslsöfnun). Í stað hrárra bendla er lagt til að nota tegundina í kóðanum. , sem gerir kleift að fækka misnotanlegum villum við notkun eftir að forritið hefur verið sleppt niður í hrun sem ekki eru öryggisógnandi, án þess að það hafi umtalsverð neikvæð áhrif á afköst, minnisnotkun og stöðugleika.
- Notkun forritunarmála sem eru hönnuð til að framkvæma öryggisathuganir á minni við þýtingu mun útrýma neikvæðum áhrifum á afköst sem fylgja slíkum athugunum við keyrslu, en mun leiða til aukakostnaðar við að skipuleggja samspil kóða í nýja tungumálinu við kóða í C++.
Að nota minnisörugg bókasöfn er einfaldasta aðferðin, en einnig sú síst áhrifaríka. Að endurskrifa kóðann í Rust er talið áhrifaríkast en einnig dýrast.
Heimild: opennet.ru
