Microsoft Mbukak CHERIoT, Solusi Hardware kanggo Ngapikake Keamanan Kode C

Microsoft wis nemokake pangembangan sing ana gandhengane karo proyek CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), sing tujuane kanggo ngalangi masalah keamanan ing kode sing ana ing C lan C++. CHERIoT nawakake solusi sing ngijini sampeyan kanggo nglindhungi ana C / C ++ codebases tanpa perlu rework mau. Proteksi dileksanakake liwat nggunakake compiler dipunéwahi sing nggunakake pesawat khusus lengkap instruksi prosesor (ISA), diwenehake dening prosesor lan ing tingkat hardware ngawasi akses memori, mriksa bener karya karo penunjuk lan mesthekake isolasi saka pamblokiran kode.

Proyèk iki digawe kanthi mripat kanggo kasunyatan manawa basa C tingkat rendah dadi sumber kesalahan nalika nggarap memori, sing nyebabake masalah kayata buffer overflows, akses menyang memori sing wis dibebasake, dereferensi pointer, utawa frees kaping pindho. . Praktek nuduhake manawa perusahaan gedhe kayata Google lan Microsoft, sing duwe kabijakan review pangowahan sing ketat lan nggunakake metode pangembangan modern lan alat analisis statis, ora bisa njamin ora ana kesalahan nalika nggarap memori (umpamane, udakara 70% kerentanan ing Microsoft. lan Google disebabake penanganan memori sing ora aman).

Masalah kasebut bisa ditanggulangi kanthi nggunakake basa pamrograman sing njamin operasi sing aman nganggo memori, utawa ngiket kanthi mriksa tambahan, umpamane, kanthi nggunakake penunjuk biasa kaya MiraclePtr (raw_ptr), sing nindakake pemeriksaan tambahan kanggo ngakses area memori sing dibebasake. Nanging cara kuwi luwih cocok kanggo kode anyar, lan reworking ana C / C ++ proyèk cukup masalah, utamané yen lagi dirancang kanggo mbukak ing lingkungan sumber-diwatesi, kayata sistem ditempelake lan piranti Internet of Things.

Komponen hardware CHERIoT dirancang minangka mikrokontroler adhedhasar arsitektur RISC-V, ngleksanakake arsitektur prosesor CHERI (Kapabilitas Hardware Extension kanggo RISC-V) sing dilindhungi, sing nyedhiyakake model akses memori sing dikontrol adhedhasar "kapabilitas" (saben maca lan nulis). operasi menyang memori sah). Adhedhasar arsitektur pesawat instruksi (ISA) sing kasedhiya ing CHERIoT, model piranti lunak dibangun sing njamin keamanan nggarap memori ing tingkat obyek individu, menehi pangayoman marang akses menyang memori sing wis dibebasake, lan ngetrapake sistem isolasi akses memori sing entheng. . Model pangayoman piranti lunak kasebut langsung dibayangke ing model basa C / C ++, sing ngidini digunakake kanggo nglindhungi aplikasi sing ana (mung recompiling lan mlaku ing peralatan sing ndhukung ISA CHERIoT dibutuhake).

Solusi sing diusulake ngidini sampeyan mblokir kesalahan sing nyebabake obyek ngluwihi wates memori, ora ngidini substitusi pointer (kabeh penunjuk kudu diasilake saka penunjuk sing wis ana), lan ngawasi akses memori sawise dibebasake (akses apa wae menyang memori nggunakake salah). pointer utawa pointer referensi obyek sing dibebasake nyebabake pangecualian sing dibuwang). Contone, nggunakake CHERIoT ngidini sampeyan ngleksanakake pamriksa wates otomatis, pelacakan umur memori, lan penegakan integritas pointer ing komponen sing nangani data sing ora dipercaya tanpa mbutuhake owah-owahan kode.

Proyèk kasebut kalebu spesifikasi arsitektur pesawat instruksi CHERIoT sing ditambahi, implementasi referensi saka CPU RISC-V 32-bit sing ndhukung CHERIoT ISA, lan toolkit LLVM sing diowahi. Diagram prototipe CPU lan deskripsi blok hardware ing Verilog disebarake miturut lisensi Apache 2.0. Inti Ibex saka proyek lowRISC digunakake minangka basis kanggo CPU. Model kode CHERIoT ISA ditetepake ing basa Sail lan dilisensi ing lisensi BSD.

Kajaba iku, prototipe sistem operasi wektu nyata CHERIoT RTOS diusulake, sing menehi kemampuan kanggo ngisolasi kompartemen sanajan ing sistem sing dipasang kanthi RAM 256 MB. Kode CHERIoT RTOS ditulis ing C ++ lan disebarake ing lisensi MIT. Komponen dhasar OS, kayata bootloader, scheduler lan sistem distribusi memori, dirancang ing wangun kompartemen.

Kompartemen ing CHERIoT RTOS minangka kombinasi kode lan variabel global sing terisolasi sing meh padha karo perpustakaan sing dienggo bareng, nanging ora kaya sing terakhir, bisa ngganti negara (bisa diganti) lan mbukak ing konteks keamanan sing kapisah. Ora ana kode saka njaba sing bisa nransfer kontrol menyang kode ing kompartemen lan ngakses obyek, kajaba kanthi ngakses titik entri sing ditetepake khusus lan nggunakake penunjuk menyang obyek sing diterusake kanthi jelas nalika nelpon kompartemen liyane. Integritas lan rahasia dijamin kanggo kode lan obyek global ing kompartemen.

Source: opennet.ru

Add a comment