Microsoft CHERIoTти ачат, C кодунун коопсуздугун жакшыртуу үчүн аппараттык чечим

Microsoft CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) долбооруна байланыштуу иштеп чыгууларды тапты, ал C жана C++ тилдеринде иштеп жаткан коддордогу коопсуздук көйгөйлөрүн бөгөттөөгө багытталган. CHERIoT учурдагы C/C++ коддук базаларын кайра иштетүүнүн зарылдыгы жок коргоого мүмкүндүк берген чечимди сунуштайт. Коргоо процессор тарабынан камсыз кылынган жана аппараттык дењгээлде эстутумга жетүүнү көзөмөлдөө, көрсөткүчтөр менен иштөөнүн тууралыгын текшерүү жана код блокторун изоляциялоону камсыз кылуучу процессордун нускамаларынын атайын кеңейтилген комплексин (ISA) колдонгон модификацияланган компиляторду колдонуу аркылуу ишке ашырылат.

Долбоор Си тилинин төмөнкү деңгээлдеги табияты эс менен иштөөдө каталардын булагы болуп, буфердин толуп кетиши, буга чейин бошогон эстутумга кирүү, көрсөткүчтү жокко чыгаруу же кош боштондук сыяктуу көйгөйлөргө алып келерин эске алуу менен түзүлгөн. . Практика көрсөткөндөй, Google жана Microsoft сыяктуу ири корпорациялар да өзгөртүүнү карап чыгуу саясатын катуу карманып, иштеп чыгуунун заманбап ыкмаларын жана статикалык талдоо куралдарын колдонушса да, эс тутум менен иштөөдө каталардын жоктугуна кепилдик бере алышпайт (мисалы, Microsoftтун 70% чабалдыгы). жана Google кооптуу эс тутум менен иштөөдөн улам келип чыгат).

Көйгөй эстутум менен коопсуз иштөөгө кепилдик берген программалоо тилдерин же кошумча текшерүүлөр менен байланыштыруу аркылуу, мисалы, бошогон эстутум аймактарына жетүү үчүн кошумча текшерүүлөрдү жүргүзгөн MiraclePtr (raw_ptr) сыяктуу кадимки көрсөткүчтөрдүн ордуна колдонуу менен чечилиши мүмкүн. Бирок мындай ыкмалар жаңы код үчүн көбүрөөк ылайыктуу жана учурдагы C/C++ долбоорлорун кайра иштетүү, айрыкча, алар камтылган системалар жана нерселердин Интернети түзмөктөрү сыяктуу ресурстары чектелген чөйрөлөрдө иштөө үчүн иштелип чыккан болсо, кыйла көйгөйлүү.

CHERIoT аппараттык компоненттери RISC-V архитектурасына негизделген микроконтроллер катары иштелип чыккан, корголгон CHERI (Capability Hardware Extension to RISC-V) процессорунун архитектурасын ишке ашырат, ал “мүмкүнчүлүккө” негизделген эстутумга жетүүнүн башкарылуучу моделин камсыз кылат (ар бир окуу жана жазуу). эстутумга операция уруксат берилген). CHERIoTте берилген инструкциялар топтомунун архитектурасынын (ISA) негизинде айрым объекттердин деңгээлинде эс тутум менен иштөөнүн коопсуздугун кепилдеген программалык модель курулган, буга чейин бошогон эстутумга кирүүдөн коргоону камсыз кылган жана эстутумга кирүү изоляциясынын жеңил тутумун ишке ашырган. . Көрсөтүлгөн программалык камсыздоону коргоо модели C/C++ тилинин моделинде түздөн-түз чагылдырылган, ал аны учурдагы тиркемелерди коргоо үчүн колдонууга мүмкүндүк берет (ISA CHERIoT колдогон жабдууларды кайра компиляциялоо жана иштетүү талап кылынат).

Сунушталган чечим объекттин эстутумдун чегинен чыгып кетишине алып келген каталарды бөгөт коюуга мүмкүндүк берет, көрсөткүчтү алмаштырууга жол бербейт (бардык көрсөткүчтөр учурдагы көрсөткүчтөрдөн түзүлүшү керек) жана бошоткондон кийин эстутумга кирүү мүмкүнчүлүгүн көзөмөлдөйт (туура эмес колдонуу менен эстутумга ар кандай мүмкүнчүлүк Көрсөткүч же бошогон объектке шилтеме кылуучу көрсөткүч ыргытылышына алып келет). Мисалы, CHERIoT колдонуу сизге эч кандай кодду өзгөртүүнү талап кылбастан, ишенимсиз маалыматтарды иштеткен компоненттерде чектерди автоматтык түрдө текшерүүнү, эстутумдун иштөө мөөнөтүн көзөмөлдөөнү жана көрсөткүчтүн бүтүндүгүн камсыздоону ишке ашырууга мүмкүндүк берет.

Долбоор CHERIoT инструкцияларынын кеңейтилген архитектурасынын спецификациясын, CHERIoT ISAны колдогон 32 биттик RISC-V процессорунун маалымдама ишке ашыруусун жана өзгөртүлгөн LLVM инструменттерин камтыйт. Verilog ичиндеги CPU прототиби диаграммалары жана аппараттык блоктун сүрөттөлүшү Apache 2.0 лицензиясынын алкагында таратылат. CPU үчүн негиз катары lowRISC долбоорунун Ibex өзөгү колдонулган. CHERIoT ISA код модели Sail тилинде аныкталган жана BSD лицензиясы боюнча лицензияланган.

Кошумчалай кетсек, CHERIoT RTOS реалдуу убакыт режиминдеги операциялык тутумунун прототиби сунушталат, ал 256 МБ оперативдүү эс тутуму бар орнотулган системаларда да отсектерди изоляциялоо мүмкүнчүлүгүн берет. CHERIoT RTOS коду C++ тилинде жазылган жана MIT лицензиясы боюнча таратылат. Жүктөгүч, пландоочу жана эстутумду бөлүштүрүү системасы сыяктуу ОСтин негизги компоненттери бөлүмдөр түрүндө иштелип чыккан.

CHERIoT RTOS бөлүмүндөгү бөлүм жалпы китепканага окшош болгон код менен глобалдык өзгөрмөлөрдүн обочолонгон айкалышы, бирок акыркысынан айырмаланып, ал өзүнүн абалын (өзгөрүүчү) өзгөртө алат жана өзүнчө коопсуздук контекстинде иштей алат. Сырттан келген эч бир код башкарууну отсектеги кодго өткөрүп бере албайт жана атайын аныкталган кирүү чекиттерине жетүү жана башка бөлүмгө чалганда ачык берилген объекттерге көрсөткүчтөрдү колдонуудан башка объекттерге кире албайт. Бөлмөдөгү код жана глобалдык объектилер үчүн бүтүндүк жана купуялуулук кепилденет.

Source: opennet.ru

Комментарий кошуу