Microsoft CHERIoT-ро мекушояд, як ҳалли сахтафзор барои беҳтар кардани амнияти коди C

Microsoft таҳияҳои марбут ба лоиҳаи CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) кашф кард, ки ба бастани мушкилоти амниятӣ дар кодҳои мавҷуда дар C ва C++ нигаронида шудааст. CHERIoT ҳалли худро пешниҳод мекунад, ки ба шумо имкон медиҳад, ки пойгоҳҳои мавҷудаи C/C++-ро бидуни коркарди дубора ҳифз кунед. Муҳофизат тавассути истифодаи компилятори тағирёфта амалӣ карда мешавад, ки маҷмӯи махсуси васеъшудаи дастурҳои протсессориро (ISA) истифода мебарад, ки аз ҷониби протсессор таъмин карда мешавад ва дар сатҳи сахтафзор мониторинги дастрасии хотира, тафтиши дурустии кор бо нишонаҳо ва таъмини ҷудокунии блокҳои код.

Лоиҳа бо назардошти он сохта шудааст, ки табиати сатҳи пасти забони Си ҳангоми кор бо хотира манбаи хатогиҳо мегардад, ки боиси мушкилот ба монанди фаромадани буфер, дастрасӣ ба хотираи аллакай озодшуда, истинодҳои ишораҳо ё озодкунии дукарата мегардад. . Амалия нишон медиҳад, ки ҳатто корпоратсияҳои бузурге ба монанди Google ва Microsoft, ки сиёсати қатъии баррасии тағйирот доранд ва усулҳои муосири рушд ва абзорҳои таҳлили статикиро истифода мебаранд, наметавонанд набудани хатогиҳоро ҳангоми кор бо хотира кафолат диҳанд (масалан, тақрибан 70% осебпазирии Microsoft дар Microsoft. ва Google аз коркарди хотираи хатарнок ба вуҷуд омадааст).

Мушкилотро метавон бо истифода аз забонҳои барномасозӣ, ки кори бехатарро бо хотира кафолат медиҳад ё пайвастшавӣ бо чекҳои иловагӣ, масалан, бо истифода аз нишондодҳои оддӣ ба монанди MiraclePtr (raw_ptr), ки санҷишҳои иловагиро барои дастрасӣ ба минтақаҳои хотираи озод анҷом медиҳад, ҳал кардан мумкин аст. Аммо чунин усулҳо барои коди нав мувофиқтаранд ва аз нав кор кардани лоиҳаҳои мавҷудаи C/C++ хеле мушкил аст, хусусан агар онҳо барои кор дар муҳити маҳдуди захираҳо, ба мисли системаҳои дарунсохт ва дастгоҳҳои Интернети ашё тарҳрезӣ шуда бошанд.

Ҷузъҳои сахтафзори CHERIoT ҳамчун микроконтроллер дар асоси меъмории RISC-V тарҳрезӣ шудаанд, ки меъмории протсессори ҳифзшудаи CHERI (Capability Hardware Extension to RISC-V)-ро амалӣ мекунанд, ки модели дастрасии хотираи идорашавандаро дар асоси “қобилият” (ҳар як хондан ва навиштан) таъмин менамояд. амалиёт ба хотира иҷозат дода шудааст). Дар асоси меъмории маҷмӯи дастурҳо (ISA), ки дар CHERIoT пешниҳод шудааст, модели нармафзоре сохта шудааст, ки бехатарии кор бо хотираро дар сатҳи объектҳои алоҳида кафолат медиҳад, муҳофизатро аз дастрасӣ ба хотираи аллакай озодшуда таъмин мекунад ва системаи ҷудокунии дастрасии хотираи сабукро амалӣ мекунад. . Модели муҳофизати нармафзори мушаххас мустақиман дар модели забони C/C++ инъикос ёфтааст, ки имкон медиҳад он барои ҳифзи замимаҳои мавҷуда истифода шавад (танҳо аз нав тартиб додан ва кор кардан дар таҷҳизоте, ки ISA CHERIoT-ро дастгирӣ мекунад лозим аст).

Ҳалли пешниҳодшуда ба шумо имкон медиҳад, ки хатогиҳоеро, ки объектро аз ҳудуди хотира берун баранд, ҷилавгирӣ кунед, иваз кардани нишондодҳоро иҷозат намедиҳад (ҳама нишондодҳо бояд аз нишондиҳандаҳои мавҷуда тавлид карда шаванд) ва дастрасии хотираро пас аз озодкунӣ назорат мекунад (ҳар дастрасии хотира бо истифода аз хотираи нодуруст). нишоннамо ё нишондиҳандае, ки ба объекти озодшуда истинод мекунад, боиси партофта шудани истисно мегардад). Масалан, бо истифода аз CHERIoT ба шумо имкон медиҳад, ки тафтиши худкори ҳудудҳо, пайгирии умри хотира ва иҷрои якпорчагии нишондодҳоро дар ҷузъҳое, ки маълумоти беэътимодро бидуни ниёз ба тағири код коркард мекунанд, амалӣ кунед.

Лоиҳа мушаххасоти меъмории маҷмӯи дастурҳои васеъи CHERIoT, татбиқи истинод ба CPU-и 32-битии RISC-V-ро, ки CHERIoT ISA-ро дастгирӣ мекунад ва асбоби тағирёфтаи LLVM-ро дар бар мегирад. Диаграммаҳои прототипи CPU ва тавсифи блокҳои сахтафзор дар Verilog таҳти иҷозатномаи Apache 2.0 паҳн карда мешаванд. Ядрои Ibex аз лоиҳаи lowRISC ҳамчун асос барои CPU истифода шудааст. Модели рамзи CHERIoT ISA бо забони Sail муайян карда шудааст ва тибқи иҷозатномаи BSD иҷозатнома дорад.

Илова бар ин, як прототипи системаи оператсионии CHERIoT RTOS дар вақти воқеӣ пешниҳод карда мешавад, ки қобилияти ҷудо кардани қисмҳоро ҳатто дар системаҳои дарунсохт бо 256 МБ хотираи оперативӣ таъмин мекунад. Рамзи CHERIoT RTOS дар C++ навишта шудааст ва таҳти иҷозатномаи MIT паҳн карда мешавад. Қисмҳои асосии ОС, ба монанди боркунак, нақшакаш ва системаи тақсимоти хотира, дар шакли қисмҳо тарҳрезӣ шудаанд.

Қисм дар CHERIoT RTOS маҷмӯи ҷудогонаи код ва тағирёбандаҳои глобалӣ мебошад, ки ба китобхонаи муштарак шабоҳат дорад, аммо бар хилофи охирин, он метавонад ҳолати худро (тағйирёбанда) тағир диҳад ва дар заминаи амнияти алоҳида кор кунад. Ягон коди берунӣ наметавонад назоратро ба код дар як бахш интиқол диҳад ва ба объектҳо дастрасӣ дошта бошад, ба истиснои дастрасӣ ба нуқтаҳои махсус муайяншудаи вуруд ва истифодаи ишораҳо ба объектҳое, ки ҳангоми занг задан ба як бахш ба таври возеҳ интиқол дода мешаванд. Барои рамз ва объектҳои глобалӣ дар як бахш якпорчагӣ ва махфият кафолат дода мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ