Chromiumi projekti arendajad Kuna alates 2015. aastast on Chrome'i stabiilsetes versioonides tuvastatud 912 ohtlikku ja kriitilist haavatavust, on jĂ€reldatud, et 70% neist on pĂ”hjustatud mĂ€luhaldusvigadest (poodiumide vigadest C/C++-s). Pool neist probleemidest (36.1%) on pĂ”hjustatud mĂ€lu vabastamise jĂ€rgsest pĂŒĂŒdest leida seotud mĂ€lukohta (use-after-free).
Chromiumi kavandamisel oli algselt , et koodis vÔivad esineda vead, seetÔttu pandi suur rÔhk liivakasti isolatsiooni rakendamisele haavatavuste tagajÀrgede piiramise jaoks. Praegu on selle tehnoloogia rakendamise vÔimalused saavutanud oma potentsiaali piiri ning edasine protsesside jagamine pole ressursside tarbimise mÔttes mÔttekas.
Google rakendab koodibaasi turvalisuse tagamiseks ka "Kood peab vastama mitte rohkem kui kahele kolmest tingimusest: töötama kontrollimata sisenditega, kasutama ebaturvalist programmeerimiskeelt (C/C++) ja toimima suurenenud Ôigustega. Sellest reeglist tuleneb, et vÀliste andmete töötlemiseks mÔeldud kood peab kas olema piiratud minimaalsete Ôigustega (isoleeritud) vÔi kirjutatud turvalises programmeerimiskeeles.
Koodibaasi kaitse edendamiseks on kĂ€ivitatud projekt, mille eesmĂ€rk on vĂ€ltida mĂ€luhalduse vigu koodibaasis. TĂ”stetakse esile kolm peamist lĂ€henemist: C++ raamatukogude loomine mĂ€lu turvaliseks haldamiseks, prĂŒgikorjaja kohaldamise laiendamine, riistvara kaitsemehhanismide rakendamine, (Memory Tagging Extension) ja komponentide kirjutamine keeles, mis toetab mĂ€lu turvalist haldamist (Java, Kotlin, JavaScript, Rust, Swift).
Oodata on, et töö keskendub kahele suunale:
- Oluline muudatus C++ arendusprotsessis, mis ei vĂ€lista negatiivset mĂ”ju jĂ”udlusele (lisakontrollid ja mĂ€lu koristamine). Soovitatakse kasutada koodis tĂŒĂŒp , mis vĂ€hendab eksisteerivatest use-after-free klassi vigadest tingitud potentsiaalselt ohtlikke krahhe, ilma mĂ€rkimisvÀÀrse negatiivse mĂ”juta jĂ”udlusele, mĂ€lu tarbimisele ja stabiilsusele.
- Keeltes, mis on suunatud mÀluga töötamise ohutuse kontrollimise tegemisele kompileerimise ajal (see vÀlistab koodi tÀitmise ajal toimuvate kontrollide negatiivse mÔju jÔudlusele, kuid toob kaasa tÀiendavad kulud uue keele ja C++ koodi omavahelise koostöö korraldamisel).
MĂ€luga ohutu töötamise raamatukogude kasutamine on kĂ”ige lihtsam, kuid vĂ€hem tĂ”hus meetod. Koodi ĂŒmberkirjutamine Rustis hinnatakse kui kĂ”ige tĂ”husamat, kuid ka vĂ€ga kallist teed.
Allikas: opennet.ru
