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

Zhvilluesit e projektit Chromium analizuan 912 dobësi të rrezikshme dhe kritikë, të identifikuara në versionet e stabilizuara të Chrome që nga viti 2015, dhe arritën në përfundimin se 70% e tyre ishin të shkaktuara nga punimi i pa sigurt me memorien (gabime në punën me treguesit në kodin C/C++). Pjesa më e madhe e këtyre problemeve (36.1%) ishte shkaktuar nga qasjet në një bufer pas lirimit të memorjes së lidhur me të (use-after-free).

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

Gjatë projektimit të Chromium ishte paraparë , se në kod nuk përjashtohet shfaqja e gabimeve, ndaj një vlerësim i madh është bërë për përdorimin e izolimit sandbox për të kufizuar pasojat e shfaqjes së dobësive. Aktualisht, mundësitë e aplikimit të kësaj teknologjie kanë arritur kufirin e mundësive të saj dhe përpjesëtimi i mëtejshëm në procese nuk është i arsyeshëm nga pikëpamja e konsumit të burimeve.

Për të mbajtur sigurinë e bazës së kodit, Google gjithashtu përdor "rregullin e dy", sipas të cilit çdo kod i shtuar duhet të përfitojë jo më shumë se dy kushte nga tri: 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 del, se kodi për trajtimin e të dhënave të jashtme duhet ose të jetë i kufizuar në privilegje minimale (izoluese), ose të jetë shkruar në një gjuhë programimi të sigurt.

Për të forcuar më tej mbrojtjen e bazës së kodit, është nisur një projekt për të parandaluar shfaqjen e gabimeve të punës me memorien në bazën e kodit. Tre qasje kryesore janë identifikuar: krijimi i bibliotekave C++ me funksione për punë të sigurt me memorien dhe zgjerimi i fushës së përdorimit të mbledhësit të mbetjeve, aplikimi i mekanizmave të mbrojtjes hardware MTE (Memory Tagging Extension) dhe shkruajtja e komponenteve në gjuhë që garantojnë punë të sigurt me memorien (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++, i cili nuk përjashton ndikime negative në performancë (kontroll të shtuar të kufijve dhe mbledhje mbetjesh). Në vend të treguesve raw, propozohet përdorimi në kod të tipit MiraclePtr, duke lejon të reduktojë gabimet e klasës use-after-free në crashes që nuk paraqesin një kërcënim për sigurinë, pa ndikuar ndjeshëm në performancën, konsumimin e memories dhe stabilitetin.
  • Përdorimi i gjuhëve që janë të dizajnuara për të kryer verifikime të sigurta të punës me memorien gjatë kompilimit (do të përjashtojë ndikimin negativ në performancë, tipik për verifikimet e tilla gjatë ekzekutimit të kodit, por do të sjellë edhe shpenzime të shtuara për organizimin e ndërveprimit të kodit në një gjuhë të re me kodin në C++).

Përdorimi i bibliotekave për punën e sigurt me memorien është mënyra më e thjeshtë, por edhe më pak efektive. Rishkrimi i kodit në Rust konsiderohet si rruga më efektive, por gjithashtu është një proces shumë i kushtueshëm.

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

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster