Microsoft, C Kodu Təhlükəsizliyini Təkmilləşdirmək üçün Avadanlıq Həlli olan CHERIoT-ni açır

Microsoft şirkəti C və C++ dillərində mövcud kodlarda təhlükəsizlik problemlərinin qarşısının alınmasına yönəlmiş CHERIoT (Capability Hardware Extension to RISC-V for Things) layihəsi ilə bağlı inkişaflar aşkar edib. CHERIoT mövcud C/C++ kod bazalarını yenidən işləməyə ehtiyac olmadan qorumağa imkan verən həllər təklif edir. Mühafizə prosessor tərəfindən təmin edilən və hardware səviyyəsində yaddaşa girişi izləyən, göstəricilərlə işin düzgünlüyünü yoxlayan və kod bloklarının izolyasiyasını təmin edən xüsusi genişləndirilmiş prosessor təlimatları dəstindən (ISA) istifadə edən dəyişdirilmiş kompilyatordan istifadə etməklə həyata keçirilir.

Layihə, C dilinin aşağı səviyyəli təbiətinin yaddaşla işləyərkən səhvlər mənbəyinə çevrilməsi, buferin daşması, artıq boşalmış yaddaşa giriş, göstəricilərin dereferensiyası və ya ikiqat sərbəst buraxılması kimi problemlərə səbəb olmasını nəzərə alaraq yaradılmışdır. . Təcrübə göstərir ki, hətta ciddi dəyişikliklərə baxış siyasətinə malik olan və müasir inkişaf metodlarından və statik analiz alətlərindən istifadə edən Google və Microsoft kimi iri korporasiyalar belə yaddaşla işləyərkən xətaların olmamasına zəmanət verə bilməzlər (məsələn, Microsoft-da zəifliklərin təxminən 70%-i). və Google təhlükəli yaddaşla işləməkdən qaynaqlanır).

Problem yaddaşla təhlükəsiz işləməyə zəmanət verən proqramlaşdırma dillərindən və ya əlavə yoxlamalarla bağlamalardan istifadə etməklə, məsələn, boş yaddaş sahələrinə daxil olmaq üçün əlavə yoxlamalar aparan MiraclePtr (raw_ptr) kimi adi göstəricilərdən istifadə etməklə həll edilə bilər. Lakin bu cür üsullar yeni kodlar üçün daha uyğundur və mövcud C/C++ layihələrinin yenidən işlənməsi kifayət qədər problemlidir, xüsusən də onlar daxili sistemlər və Əşyaların İnterneti cihazları kimi resurs məhdud mühitlərdə işləmək üçün nəzərdə tutulubsa.

CHERIoT aparat komponentləri RISC-V arxitekturasına əsaslanan, qorunan CHERI (Capability Hardware Extension to RISC-V) prosessor arxitekturasını həyata keçirən mikro nəzarətçi kimi işlənib hazırlanmışdır ki, bu da “qabiliyyət” (hər bir oxu və yazma) əsasında idarə olunan yaddaşa giriş modelini təmin edir. yaddaşa əməliyyat icazə verilir). CHERIoT-də təqdim olunan təlimat dəsti arxitekturasına (ISA) əsaslanaraq, ayrı-ayrı obyektlər səviyyəsində yaddaşla işləmək təhlükəsizliyinə zəmanət verən, artıq boşalmış yaddaşa girişdən mühafizəni təmin edən və yüngül yaddaşa giriş izolyasiya sistemini tətbiq edən proqram modeli qurulur. . Göstərilən proqram təminatının mühafizəsi modeli birbaşa C/C++ dil modelində əks olunub ki, bu da ondan mövcud proqramları qorumaq üçün istifadə etməyə imkan verir (yalnız ISA CHERIoT-ni dəstəkləyən avadanlıqda yenidən tərtib etmək və işləmək tələb olunur).

Təklif olunan həll obyektin yaddaşın hüdudlarından kənara çıxmasına səbəb olan səhvləri bloklamağa imkan verir, göstəricinin dəyişdirilməsinə icazə vermir (bütün göstəricilər mövcud göstəricilərdən yaradılmalıdır) və boşaldıqdan sonra yaddaşa girişə nəzarət edir (yanlış istifadə edərək yaddaşa hər hansı giriş). göstərici və ya azad edilmiş obyektə istinad edən göstərici istisnanın atılması ilə nəticələnir). Məsələn, CHERIoT-dan istifadə heç bir kod dəyişikliyi tələb etmədən etibarsız məlumatları idarə edən komponentlərdə avtomatik sərhədlərin yoxlanılması, yaddaşın ömrü boyu izlənilməsi və göstərici bütövlüyünün təmin edilməsini həyata keçirməyə imkan verir.

Layihəyə genişləndirilmiş CHERIoT təlimat dəsti arxitekturasının spesifikasiyası, CHERIoT ISA-nı dəstəkləyən 32 bitlik RISC-V CPU-nun istinad tətbiqi və dəyişdirilmiş LLVM alət dəsti daxildir. Verilog-da CPU prototip diaqramları və aparat blokunun təsvirləri Apache 2.0 lisenziyası altında paylanır. LowRISC layihəsindən olan Ibex nüvəsi CPU üçün əsas kimi istifadə edilmişdir. CHERIoT ISA kod modeli Sail dilində müəyyən edilib və BSD lisenziyası ilə lisenziyalaşdırılıb.

Bundan əlavə, real vaxt rejimində işləyən CHERIoT RTOS əməliyyat sisteminin prototipi təklif olunur ki, bu da hətta 256 MB əməli yaddaşa malik quraşdırılmış sistemlərdə bölmələri təcrid etmək imkanı verir. CHERIoT RTOS kodu C++ dilində yazılmışdır və MIT lisenziyası altında paylanır. Yükləyici, planlaşdırıcı və yaddaş paylama sistemi kimi ƏS-nin əsas komponentləri bölmələr şəklində hazırlanmışdır.

CHERIoT RTOS-da bölmə kod və qlobal dəyişənlərin təcrid olunmuş birləşməsidir və paylaşılan kitabxanaya bənzəyir, lakin sonuncudan fərqli olaraq, o, vəziyyətini dəyişə bilər (dəyişkən) və ayrıca təhlükəsizlik kontekstində işləyə bilər. Kənardan heç bir kod, xüsusi olaraq müəyyən edilmiş giriş nöqtələrinə daxil olmaq və başqa bölməyə zəng edərkən açıq şəkildə ötürülən obyektlərə göstəricilərdən istifadə etmək istisna olmaqla, nəzarəti bölmədəki koda və obyektlərə daxil ola bilməz. Kupedəki kod və qlobal obyektlər üçün bütövlük və məxfiliyə zəmanət verilir.

Mənbə: opennet.ru

Добавить комментарий