Microsoft Muka CHERIoT, Solusi Hardware pikeun Ngaronjatkeun Kaamanan C Code

Microsoft parantos mendakan kamajuan anu aya hubunganana sareng proyék CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), tujuanana pikeun ngahalangan masalah kaamanan dina kode anu aya dina C sareng C++. CHERIoT nawiskeun solusi anu ngamungkinkeun anjeun ngajagi basis kode C / C ++ anu tos aya tanpa kedah ngerjakeun deui. Perlindungan dilaksanakeun ngaliwatan pamakéan hiji kompiler dirobah anu ngagunakeun set ngalegaan husus tina parentah processor (ISA), disadiakeun ku processor na di tingkat hardware ngawas aksés memori, mariksa correctness gawé kalawan pointers tur mastikeun isolasi blok kode.

Proyék ieu didamel kalayan ati-ati kanyataan yén basa C tingkat rendah janten sumber kasalahan nalika damel sareng mémori, nyababkeun masalah sapertos overflows panyangga, aksés kana mémori anu parantos dibébaskeun, dereferences pointer, atanapi frees ganda. . Prakték nunjukkeun yén bahkan korporasi ageung sapertos Google sareng Microsoft, anu gaduh kabijakan ulasan parobihan anu ketat sareng ngagunakeun metode pangembangan modéren sareng alat analisa statik, teu tiasa ngajamin henteuna kasalahan nalika damel sareng mémori (contona, sakitar 70% tina kerentanan dina Microsoft. sareng Google disababkeun ku pananganan mémori anu teu aman).

Masalahna tiasa direngsekeun ku ngagunakeun basa pamrograman anu ngajamin operasi anu aman sareng mémori, atanapi beungkeutan ku cék tambahan, contona, ku ngagunakeun petunjuk biasa sapertos MiraclePtr (raw_ptr), anu ngalaksanakeun pamariksaan tambahan pikeun ngaksés daérah mémori anu dibébaskeun. Tapi métode sapertos anu leuwih cocog pikeun kode anyar, sarta reworking aya C / C ++ proyék rada masalah, utamana lamun aranjeunna dirancang pikeun ngajalankeun di lingkungan sumberdaya-konstrain, kayaning sistem embedded jeung Internet of Things alat.

Komponén hardware CHERIoT dirancang salaku mikrokontroler dumasar kana arsitéktur RISC-V, ngalaksanakeun ditangtayungan CHERI (Kamampuan Hardware Extension mun RISC-V) arsitektur processor, nu nyadiakeun model aksés memori dikawasa dumasar kana "kapabilitas" (unggal maca jeung nulis). operasi ka memori otorisasi). Dumasar kana arsitéktur set instruksi (ISA) disadiakeun dina CHERIoT, model software diwangun nu ngajamin kasalametan gawé bareng memori dina tingkat objék individu, nyadiakeun panyalindungan ngalawan aksés ka memori geus dibébaskeun, sarta implements sistem isolasi aksés memori lightweight. . Modél panyalindungan software dieusian langsung reflected dina model basa C / C ++, anu ngamungkinkeun eta bisa dipaké pikeun ngajaga aplikasi nu aya (ngan recompiling tur ngajalankeun on parabot nu ngarojong Isa CHERIoT diperlukeun).

Solusi anu diusulkeun ngamungkinkeun anjeun pikeun meungpeuk kasalahan anu nyababkeun obyék ngalangkungan wates mémori, henteu ngijinkeun substitusi pointer (sadayana pointer kedah dibangkitkeun tina pointer anu tos aya), sareng ngawas aksés mémori saatos ngabébaskeun (aksés naon waé kana mémori anu nganggo lepat. pointer atanapi pointer ngarujuk kana objék anu dibébaskeun nyababkeun pengecualian anu dialungkeun). Contona, ngagunakeun CHERIoT ngidinan Anjeun pikeun nerapkeun mariksa wates otomatis, tracking hirupna memori, sarta penegak integritas pointer dina komponén nu nanganan data untrusted tanpa merlukeun sagala parobahan kode.

Proyék ieu kalebet spésifikasi arsitéktur set instruksi CHERIoT anu diperpanjang, palaksanaan rujukan tina CPU RISC-V 32-bit anu ngadukung CHERIoT Isa, sareng toolkit LLVM anu dirobih. Diagram prototipe CPU sareng déskripsi blok hardware di Verilog disebarkeun dina lisénsi Apache 2.0. Inti Ibex tina proyék lowRISC dianggo salaku dasar pikeun CPU. Modél kode CHERIoT ISA didefinisikeun dina basa Sail sareng dilisensikeun ku lisénsi BSD.

Salaku tambahan, prototipe sistem operasi sacara real-time CHERIoT RTOS diusulkeun, anu nyayogikeun kamampuan pikeun ngasingkeun kompartemen bahkan dina sistem anu dipasang sareng 256 MB RAM. Kode CHERIoT RTOS ditulis dina C ++ sarta disebarkeun dina lisénsi MIT. Komponén dasar OS, sapertos bootloader, scheduler sareng sistem distribusi mémori, dirancang dina bentuk kompartemen.

A kompartemen di CHERIoT RTOS mangrupa kombinasi terasing kode jeung variabel global nu nyarupaan perpustakaan dibagikeun, tapi teu saperti dimungkinkeun, eta bisa ngarobah kaayaan na (mutable) tur ngajalankeun dina konteks kaamanan misah. Teu aya kodeu ti luar anu tiasa nransferkeun kontrol kana kode dina kompartemen sareng ngaksés obyék, iwal ku ngaksés titik éntri anu didefinisikeun khusus sareng nganggo penunjuk ka objék anu sacara eksplisit diliwatan nalika nelepon kompartemen anu sanés. Integritas sareng karusiahan dijamin pikeun kode sareng objék global dina kompartemen.

sumber: opennet.ru

Tambahkeun komentar