Zhvilluesit e projektit Chromium 912 dobish dhe kritik vulnerabilitete janë zbuluar në versionet e stabilizuara të Chrome që nga viti 2015, dhe është arritur në përfundimin se 70% e tyre janë shkaktuar nga menaxhimi i pasigurt i memories (gabimet me tregues në kodin C/C++). Gjashtëdhjetë e një për qind e këtyre problemeve (36.1%) janë shkaktuar nga qasjet në buffer pas lirimit të memories së lidhur me të (use-after-free).
Në projektimin e Chromium u parashikua fillimisht , në kod nuk përjashtohet shfaqja e gabimeve, prandaj bëhej një bast i madh te aplikimi i izolimit në sandbox për të kufizuar pasojat e manifestimit të vulnerabiliteteve. Aktualisht, mundësitë e përdorimit të kësaj teknologjie kanë arritur në kufirin e tyre dhe më tej shpërndarja në procese nuk është e arsyeshme nga pikëpamja e konsumit të burimeve.
Për të mbajtur sigurinë e bazës së kodit, Google gjithashtu aplikon "", sipas të cilit çdo kod i shtuar duhet të përmbushë jo më shumë se dy nga tre kushte: puna me të dhëna hyrëse të pa verifikuara, përdorimi i një gjuhe programimi të pasigurt (C/C++) dhe ekzekutimi me privilegje të larta. Nga ky rregull, rezulton se kodi për trajtimin e të dhënave të jashtme duhet ose të jetë reduktuar në privilegje minimale (izolim), ose të jetë shkruar në një gjuhë programimi të sigurt.
Për të forcuar më tej sigurinë e bazës së kodit, është nisur një projekt për parandalimin e shfaqjes së gabimeve të menaxhimit të memories në kodin e bazës. Ka tre qasje kryesore: krijimi i bibliotekave C++ me funksione për menaxhimin e sigurt të memories dhe zgjerimi i fushës së aplikimit të grumbulluesit të plehrave, përdorimi i mekanizmave të mbrojtjes (Memory Tagging Extension) dhe shkruajta komponenteve në gjuhë që ofrojnë menaxhim të sigurt të memories (Java, Kotlin, JavaScript, Rust, Swift).
Pritet që puna të përqendrohet në dy drejtime:
- Një ndryshim të rëndësishëm në procesin e zhvillimit në C++, që nuk përjashton ndikimin negativ në performancë (kontrolle shtesë të kufijve dhe grumbullim plehrash). Në vend të treguesve raw, propozohet përdorimi në kod të tipit , që lejon reduktimin e gabimeve që shpërthenin nga klasa use-after-free në crash-e që nuk paraqesin rrezik për sigurinë, pa ndikuar ndjeshëm në performancën, konsumimin e memories dhe stabilitetin.
- Përdorimi i gjuhëve që parashikojnë ekzekutimin e kontrollove të sigurisë së memories gjatë kompilimit (do të ndihmojë të eliminojë ndikimin negativ në performancë, karakteristik për kontrollit e tilla gjatë ekzekutimit të kodit, por do të sjellë shpenzime shtesë për organizimin e ndërveprimit të kodit në gjuhë të re me kodin në C++).
Përdorimi i bibliotekave për menaxhimin e sigurt të memories është mënyra më e thjeshtë, por edhe më pak efektive. Rishkrimi i kodit në Rust konsiderohet si rruga më efektive, por gjithashtu shumë e shtrenjtë.
Burimi: opennet.ru
