70% e problemeve të sigurisë në Chromium shkaktohen nga gabimet në punën me memorien

Zhvilluesit e projektit Chromium analizuan 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).

70% e problemeve të sigurisë në Chromium shkaktohen nga gabimet në punën me memorien

Në projektimin e Chromium u parashikua fillimisht se, 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 "rregullin e dy"", 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 MTE (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 MiraclePtr, 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ë.

70% e problemeve të sigurisë në Chromium shkaktohen nga gabimet në punën me memorien

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster