Майкрософт CHERIoT-ийг нээлээ, C кодын аюулгүй байдлыг сайжруулах техник хангамжийн шийдэл

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

Си хэлний доод түвшний шинж чанар нь санах ойтой ажиллахад алдааны эх үүсвэр болж, буфер дүүрэх, аль хэдийн суллагдсан санах ойд хандах, заагчийг хайхрахгүй байх, давхар чөлөөлөх зэрэг асуудалд хүргэдэг гэдгийг анхаарч уг төслийг бүтээсэн. . Дадлагаас харахад Google, Майкрософт зэрэг томоохон корпорацууд өөрчлөлтийг хянах хатуу бодлого баримталж, орчин үеийн хөгжлийн арга, статик шинжилгээний хэрэгслийг ашигладаг ч санах ойтой ажиллахдаа алдаа гарахгүй байх баталгааг өгч чадахгүй (жишээлбэл, 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 CPU-ийн лавлагааны хэрэгжилт, өөрчлөгдсөн LLVM хэрэгслийн багцыг багтаасан болно. Verilog дахь CPU-ийн прототип диаграмм болон техник хангамжийн блокийн тайлбарыг Apache 2.0 лицензийн дагуу түгээдэг. LowRISC төслийн Ibex цөмийг CPU-ийн суурь болгон ашигласан. CHERIoT ISA кодын загвар нь Sail хэлээр тодорхойлогдсон бөгөөд BSD лицензийн дагуу лицензтэй.

Нэмж дурдахад CHERIoT RTOS бодит цагийн үйлдлийн системийн прототипийг санал болгож байгаа бөгөөд энэ нь 256 МБ RAM-тай суулгагдсан систем дээр ч тасалгаануудыг тусгаарлах боломжийг олгодог. CHERIoT RTOS код нь C++ хэл дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг. Ачаалагч, төлөвлөгч, санах ойн түгээлтийн систем зэрэг үйлдлийн системийн үндсэн бүрэлдэхүүн хэсгүүд нь тасалгаа хэлбэрээр хийгдсэн байдаг.

CHERIoT RTOS дахь тасалгаа нь код болон глобал хувьсагчдын тусгаарлагдсан хослол бөгөөд дундын номын сантай төстэй боловч сүүлийнхээс ялгаатай нь төлөвөө (хувиргах боломжтой) өөрчилж, тусдаа хамгаалалтын контекст дээр ажиллуулж болно. Гаднаас ямар ч код нь тасалгааны код руу удирдлагыг шилжүүлж, тусгайлан тодорхойлсон нэвтрэх цэгүүд рүү хандах, өөр тасалгаа руу залгах үед тодорхой дамжуулсан объект руу заагч ашиглахаас бусад тохиолдолд объект руу нэвтрэх боломжгүй. Тасалгааны код болон дэлхийн объектуудын бүрэн бүтэн байдал, нууцлалыг баталгаажуулна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх