Microsoft CHERIoT, C кодының қауіпсіздігін жақсартуға арналған аппараттық шешімді ашады

Microsoft корпорациясы C және C++ тілдеріндегі бар кодтардағы қауіпсіздік мәселелерін блоктауға бағытталған CHERIoT (Заттардың Интернеті үшін RISC-V мүмкіндігіне арналған жабдық кеңейтімі) жобасына қатысты әзірлемелерді тапты. 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 құралдар жинағын қамтиды. CPU прототипінің диаграммалары және Verilog жүйесіндегі аппараттық блок сипаттамалары Apache 2.0 лицензиясы бойынша таратылады. CPU үшін негіз ретінде lowRISC жобасындағы Ibex ядросы пайдаланылды. CHERIoT ISA код үлгісі Sail тілінде анықталған және BSD лицензиясы бойынша лицензияланған.

Сонымен қатар, CHERIoT RTOS нақты уақыттағы операциялық жүйесінің прототипі ұсынылған, ол тіпті 256 Мбайт жедел жады бар енгізілген жүйелерде бөлімдерді оқшаулау мүмкіндігін береді. CHERIoT RTOS коды C++ тілінде жазылған және MIT лицензиясы бойынша таратылады. Жүктеуші, жоспарлаушы және жадты тарату жүйесі сияқты ОЖ-нің негізгі компоненттері бөлімдер түрінде жасалған.

CHERIoT RTOS жүйесіндегі бөлім ортақ кітапханаға ұқсайтын код пен жаһандық айнымалылардың оқшауланған комбинациясы болып табылады, бірақ соңғысынан айырмашылығы, ол өзінің күйін өзгерте алады (өзгермелі) және жеке қауіпсіздік контекстінде жұмыс істей алады. Сырттан келген ешбір код арнайы анықталған кіру нүктелеріне қол жеткізу және басқа бөлімге қоңырау шалу кезінде нақты берілген нысандарға көрсеткіштерді пайдалануды қоспағанда, басқаруды бөлімдегі кодқа және нысандарға қол жеткізе алмайды. Бөлімдегі код пен ғаламдық нысандар үшін тұтастық пен құпиялылыққа кепілдік беріледі.

Ақпарат көзі: opennet.ru

пікір қалдыру