Microsoft CHERIoT-ni ochadi, C kod xavfsizligini yaxshilash uchun apparat yechimi

Microsoft kompaniyasi C va C++ tillarida mavjud kodlardagi xavfsizlik muammolarini bloklashga qaratilgan CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) loyihasi bilan bog'liq ishlanmalarni topdi. CHERIoT mavjud C/C++ kod bazalarini qayta ishlashga hojat qoldirmasdan himoya qilish imkonini beruvchi yechimni taklif etadi. Himoya protsessor tomonidan taqdim etilgan va apparat darajasida xotiraga kirishni nazorat qiluvchi, ko'rsatkichlar bilan ishlashning to'g'riligini tekshirish va kod bloklarining izolyatsiyasini ta'minlaydigan maxsus kengaytirilgan protsessor ko'rsatmalar to'plamidan (ISA) foydalanadigan o'zgartirilgan kompilyatordan foydalanish orqali amalga oshiriladi.

Loyiha C tilining past darajadagi tabiati xotira bilan ishlashda xatoliklar manbai bo'lib, buferning to'lib ketishi, allaqachon bo'shatilgan xotiraga kirish, ko'rsatkichni yo'qotish yoki ikki marta bo'shatish kabi muammolarga olib kelishini hisobga olgan holda yaratilgan. . Amaliyot shuni ko'rsatadiki, hatto o'zgarishlarni ko'rib chiqish siyosatiga ega bo'lgan va zamonaviy ishlab chiqish usullari va statik tahlil vositalaridan foydalanadigan Google va Microsoft kabi yirik korporatsiyalar ham xotira bilan ishlashda xatolik yo'qligiga kafolat bera olmaydi (masalan, Microsoft-dagi zaifliklarning taxminan 70 foizi). va Google havfsiz xotira bilan ishlashdan kelib chiqadi).

Muammoni xotira bilan xavfsiz ishlashni kafolatlaydigan dasturlash tillari yoki qo'shimcha tekshiruvlar bilan bog'lash orqali hal qilish mumkin, masalan, bo'shatilgan xotira maydonlariga kirish uchun qo'shimcha tekshiruvlarni amalga oshiradigan MiraclePtr (raw_ptr) kabi oddiy ko'rsatkichlar o'rniga. Ammo bunday usullar yangi kod uchun ko'proq mos keladi va mavjud C/C++ loyihalarini qayta ishlash juda muammoli, ayniqsa ular o'rnatilgan tizimlar va narsalarning Interneti qurilmalari kabi resurslar cheklangan muhitlarda ishlashga mo'ljallangan bo'lsa.

CHERIoT apparat komponentlari RISC-V arxitekturasiga asoslangan mikrokontroller sifatida ishlab chiqilgan bo‘lib, himoyalangan CHERI (Capability Hardware Extension to RISC-V) protsessor arxitekturasini amalga oshiradi, bu “qobiliyat” (har bir o‘qish va yozish) asosida boshqariladigan xotiraga kirish modelini ta’minlaydi. xotira bilan ishlashga ruxsat berilgan). CHERIoT-da taqdim etilgan ko'rsatmalar to'plami arxitekturasi (ISA) asosida alohida ob'ektlar darajasida xotira bilan ishlash xavfsizligini kafolatlaydigan, allaqachon bo'shatilgan xotiraga kirishdan himoya qiluvchi va engil xotiraga kirishni izolyatsiya qilish tizimini amalga oshiradigan dasturiy ta'minot modeli yaratilgan. . Belgilangan dasturiy ta'minotni himoya qilish modeli to'g'ridan-to'g'ri C/C++ tili modelida aks ettirilgan bo'lib, u mavjud ilovalarni himoya qilish uchun foydalanishga imkon beradi (faqat qayta kompilyatsiya qilish va ISA CHERIoT ni qo'llab-quvvatlaydigan uskunada ishlash kerak).

Taklif etilayotgan yechim ob'ektni xotira chegarasidan tashqariga chiqishiga olib keladigan xatolarni blokirovka qilishga imkon beradi, ko'rsatgichni almashtirishga ruxsat bermaydi (barcha ko'rsatkichlar mavjud ko'rsatkichlardan yaratilishi kerak) va bo'shatilgandan so'ng xotiraga kirishni nazorat qiladi (noto'g'ri xotiradan foydalangan holda xotiraga har qanday kirish). ko'rsatgich yoki bo'shatilgan ob'ektga havola qiluvchi ko'rsatgich istisnoga olib keladi). Masalan, CHERIoT-dan foydalanish sizga kodni o'zgartirishni talab qilmasdan ishonchsiz ma'lumotlarni qayta ishlaydigan komponentlarda avtomatik chegaralarni tekshirish, xotiraning ishlash muddatini kuzatish va ko'rsatgich yaxlitligini ta'minlashni amalga oshirish imkonini beradi.

Loyiha kengaytirilgan CHERIoT ko'rsatmalar to'plami arxitekturasining spetsifikatsiyasini, CHERIoT ISA-ni qo'llab-quvvatlaydigan 32-bitli RISC-V protsessorining mos yozuvlar dasturini va o'zgartirilgan LLVM asboblar to'plamini o'z ichiga oladi. CPU prototipi diagrammalari va Verilogdagi apparat bloklari tavsiflari Apache 2.0 litsenziyasi ostida tarqatiladi. CPU uchun asos sifatida lowRISC loyihasidan Ibex yadrosi ishlatilgan. CHERIoT ISA kod modeli Sail tilida belgilangan va BSD litsenziyasi ostida litsenziyalangan.

Bundan tashqari, real vaqt rejimida ishlaydigan CHERIoT RTOS operatsion tizimining prototipi taklif etiladi, bu hatto 256 MB RAMga ega bo'lgan o'rnatilgan tizimlarda ham bo'limlarni ajratish imkoniyatini beradi. CHERIoT RTOS kodi C++ tilida yozilgan va MIT litsenziyasi ostida tarqatiladi. Yuklovchi, rejalashtiruvchi va xotira tarqatish tizimi kabi OT ning asosiy komponentlari bo'limlar shaklida yaratilgan.

CHERIoT RTOS-dagi bo'linma umumiy kutubxonaga o'xshash kod va global o'zgaruvchilarning izolyatsiya qilingan birikmasidir, lekin ikkinchisidan farqli o'laroq, u o'z holatini o'zgartirishi (o'zgaruvchan) va alohida xavfsizlik kontekstida ishlashi mumkin. Tashqaridan kelgan hech qanday kod boshqaruvni bo'limdagi kodga o'tkaza olmaydi va ob'ektlarga kirish mumkin, faqat maxsus belgilangan kirish nuqtalariga kirish va boshqa bo'limga qo'ng'iroq qilishda aniq uzatilgan ob'ektlarga ko'rsatgichlardan foydalanish. Bo'limdagi kod va global ob'ektlar uchun yaxlitlik va maxfiylik kafolatlanadi.

Manba: opennet.ru

a Izoh qo'shish