Microsoft Inafungua CHERIOT, Suluhisho la Maunzi Ili Kuboresha Usalama wa Msimbo wa C

Microsoft imegundua maendeleo yanayohusiana na mradi wa CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), unaolenga kuzuia matatizo ya usalama katika msimbo uliopo katika C na C++. CHERIOT inatoa suluhisho ambalo hukuruhusu kulinda misingi ya msimbo iliyopo ya C/C++ bila hitaji la kuzifanyia kazi upya. Ulinzi unatekelezwa kupitia matumizi ya mkusanyaji aliyebadilishwa ambayo hutumia seti maalum ya kupanuliwa ya maagizo ya processor (ISA), iliyotolewa na processor na katika ngazi ya vifaa vya ufuatiliaji upatikanaji wa kumbukumbu, kuangalia usahihi wa kazi na viashiria na kuhakikisha kutengwa kwa vitalu vya kanuni.

Mradi huu uliundwa kwa kuzingatia ukweli kwamba asili ya kiwango cha chini cha lugha ya C inakuwa chanzo cha makosa wakati wa kufanya kazi na kumbukumbu, na kusababisha shida kama vile kufurika kwa buffer, ufikiaji wa kumbukumbu iliyoachiliwa tayari, vielelezo vya vielelezo, au uhuru mara mbili. . Mazoezi yanaonyesha kuwa hata mashirika makubwa kama vile Google na Microsoft, ambayo yana sera kali ya ukaguzi wa mabadiliko na kutumia mbinu za kisasa za maendeleo na zana za uchambuzi tuli, hayawezi kuhakikisha kutokuwepo kwa makosa wakati wa kufanya kazi na kumbukumbu (kwa mfano, karibu 70% ya udhaifu katika Microsoft. na Google husababishwa na utunzaji wa kumbukumbu usio salama).

Shida inaweza kutatuliwa kwa kutumia lugha za programu ambazo huhakikisha utendakazi salama na kumbukumbu, au vifungo na ukaguzi wa ziada, kwa mfano, kwa kutumia badala ya viashiria vya kawaida kama MiraclePtr (raw_ptr), ambayo hufanya ukaguzi wa ziada wa kupata maeneo ya kumbukumbu yaliyoachiliwa. Lakini mbinu kama hizi zinafaa zaidi kwa msimbo mpya, na kurekebisha tena miradi iliyopo ya C/C++ ni tatizo sana, hasa ikiwa imeundwa ili kuendeshwa katika mazingira yenye vikwazo vya rasilimali, kama vile mifumo iliyopachikwa na vifaa vya Mtandao wa Mambo.

Vipengele vya maunzi vya CHERIoT vimeundwa kama kidhibiti kidogo kulingana na usanifu wa RISC-V, kutekeleza usanifu wa kichakataji wa CHERI (Upanuzi wa Vifaa vya Uwezo hadi RISC-V) uliolindwa, ambao hutoa mfano wa ufikiaji wa kumbukumbu unaodhibitiwa kulingana na "uwezo" (kila kusoma na kuandika. operesheni kwenye kumbukumbu imeidhinishwa). Kulingana na usanifu wa seti ya maagizo (ISA) iliyotolewa katika CHERIOT, muundo wa programu umejengwa ambao unahakikisha usalama wa kufanya kazi na kumbukumbu katika kiwango cha vitu vya mtu binafsi, hutoa ulinzi dhidi ya ufikiaji wa kumbukumbu iliyoachiliwa tayari, na kutekeleza mfumo wa kutengwa kwa kumbukumbu nyepesi. . Muundo uliobainishwa wa ulinzi wa programu unaonyeshwa moja kwa moja katika modeli ya lugha ya C/C++, ambayo inaruhusu itumike kulinda programu zilizopo (kurejesha tu na kutumia vifaa vinavyotumia ISA CHERIOT kunahitajika).

Suluhisho lililopendekezwa hukuruhusu kuzuia makosa ambayo husababisha kitu kupita zaidi ya mipaka ya kumbukumbu, hairuhusu ubadilishanaji wa pointer (viashiria vyote lazima vitolewe kutoka kwa viashiria vilivyopo), na hufuatilia ufikiaji wa kumbukumbu baada ya kufungia (ufikiaji wowote wa kumbukumbu kwa kutumia njia isiyo sahihi). pointer au pointer inayorejelea kitu kilichoachiliwa husababisha ubaguzi kutupwa). Kwa mfano, kutumia CHERIOT hukuruhusu kutekeleza ukaguzi wa kiotomatiki wa mipaka, ufuatiliaji wa maisha yote ya kumbukumbu, na utekelezaji wa uadilifu wa viashiria katika vipengee vinavyoshughulikia data isiyoaminika bila kuhitaji mabadiliko yoyote ya msimbo.

Mradi huu unajumuisha maelezo ya usanifu uliopanuliwa wa seti ya maagizo ya CHERIoT, utekelezaji wa marejeleo wa 32-bit RISC-V CPU inayounga mkono CHERIOT ISA, na zana ya zana iliyorekebishwa ya LLVM. Michoro ya mfano wa CPU na maelezo ya uzuiaji wa maunzi katika Verilog husambazwa chini ya leseni ya Apache 2.0. Msingi wa Ibex kutoka kwa mradi wa lowRISC ulitumika kama msingi wa CPU. Mtindo wa msimbo wa CHERIOT ISA umefafanuliwa katika lugha ya Sail na umepewa leseni chini ya leseni ya BSD.

Zaidi ya hayo, mfano wa mfumo wa uendeshaji wa wakati halisi wa CHERIoT RTOS unapendekezwa, ambao hutoa uwezo wa kutenganisha compartments hata kwenye mifumo iliyopachikwa na 256 MB ya RAM. Msimbo wa CHERIoT RTOS umeandikwa katika C++ na inasambazwa chini ya leseni ya MIT. Vipengee vya msingi vya OS, kama vile bootloader, mpangilio na mfumo wa usambazaji wa kumbukumbu, imeundwa kwa namna ya compartments.

Chumba katika CHERIoT RTOS ni mseto wa pekee wa msimbo na vigezo vya kimataifa vinavyofanana na maktaba iliyoshirikiwa, lakini tofauti na maktaba ya mwisho, inaweza kubadilisha hali yake (inayoweza kubadilika) na kukimbia katika muktadha tofauti wa usalama. Hakuna msimbo kutoka nje unaoweza kuhamisha udhibiti kwa msimbo katika chumba na vitu vya kufikia, isipokuwa kwa kufikia pointi maalum za kuingilia na kutumia viashiria kwa vitu vilivyopitishwa wazi wakati wa kupiga simu kwa chumba kingine. Uadilifu na usiri umehakikishwa kwa msimbo na vitu vya kimataifa kwenye compartment.

Chanzo: opennet.ru

Kuongeza maoni