70% ya matatizo ya usalama katika Chromium husababishwa na hitilafu za kumbukumbu

Wasanidi wa mradi wa Chromium kuchambuliwa Athari 912 za hatari na hatarishi zilizotambuliwa katika matoleo thabiti ya Chrome tangu 2015, na kuhitimisha kuwa 70% yazo zilisababishwa na ukosefu wa usalama wa kumbukumbu (hitilafu wakati wa kufanya kazi na viashiria katika msimbo wa C/C++). Nusu ya matatizo haya (36.1%) husababishwa na ufikiaji wa bafa baada ya kukomboa kumbukumbu inayohusishwa nayo (tumia-baada ya bila malipo).

70% ya matatizo ya usalama katika Chromium husababishwa na hitilafu za kumbukumbu

Wakati wa kuunda Chromium ilikuwa mwanzoni lala chini, kwamba kuna uwezekano wa makosa kuonekana kwenye msimbo, kwa hivyo mkazo mkubwa uliwekwa kwenye matumizi ya kutengwa kwa sanduku la mchanga ili kupunguza matokeo ya udhaifu. Hivi sasa, uwezekano wa kutumia teknolojia hii umefikia kikomo cha uwezo wao na mgawanyiko zaidi katika michakato hauwezekani kutoka kwa mtazamo wa matumizi ya rasilimali.

Ili kudumisha usalama wa msingi wa kanuni, Google pia hutekeleza "kanuni ya mbili", kulingana na ambayo msimbo wowote ulioongezwa lazima utimize zaidi ya masharti mawili kati ya matatu: kufanya kazi na data ya uingizaji ambayo haijathibitishwa, kwa kutumia lugha isiyo salama ya programu (C/C++) na kukimbia kwa marupurupu ya juu. Sheria hii ina maana kwamba msimbo wa kuchakata data ya nje lazima upunguzwe hadi upendeleo mdogo (kutengwa) au uandikwe kwa lugha salama ya programu.

Ili kuimarisha zaidi usalama wa msingi wa msimbo, mradi umezinduliwa ili kuzuia makosa ya kumbukumbu kuonekana kwenye msingi wa msimbo. Kuna njia tatu kuu: kuunda maktaba za C ++ na kazi za uendeshaji salama wa kumbukumbu na kupanua wigo wa mtoza takataka, kwa kutumia njia za ulinzi wa vifaa. Mte (Upanuzi wa Uwekaji Tagi wa Kumbukumbu) na vifaa vya uandishi katika lugha zinazohakikisha kazi salama na kumbukumbu (Java, Kotlin, JavaScript, Rust, Swift).

Inatarajiwa kwamba kazi itazingatiwa katika maeneo mawili:

  • Mabadiliko makubwa katika mchakato wa ukuzaji wa C++, ambayo haijumuishi athari mbaya kwenye utendaji (ukaguzi wa mipaka ya ziada na ukusanyaji wa takataka). Badala ya viashiria mbichi, inapendekezwa kutumia aina MiraclePtr, ambayo hukuruhusu kupunguza hitilafu zinazoweza kutumika baada ya bila malipo kwa matukio ya kuacha kufanya kazi ambayo hayaleti tishio la usalama, bila athari mbaya inayoonekana kwenye utendakazi, matumizi ya kumbukumbu na uthabiti.
  • Matumizi ya lugha iliyoundwa kufanya ukaguzi wa usalama wa kumbukumbu wakati wa kukusanya (itaondoa athari mbaya kwa utendakazi uliopo katika ukaguzi kama huo wakati wa utekelezaji wa nambari, lakini itasababisha gharama za ziada za kupanga mwingiliano wa nambari katika lugha mpya iliyo na nambari ndani. C++).

Kutumia maktaba zisizo na kumbukumbu ndiyo njia rahisi zaidi, lakini pia isiyofaa sana. Msimbo wa kuandika upya katika Rust umekadiriwa kuwa njia bora zaidi, lakini pia ya gharama kubwa sana.

70% ya matatizo ya usalama katika Chromium husababishwa na hitilafu za kumbukumbu

Chanzo: opennet.ru

Kuongeza maoni