Programvaru- och hÄrdvaruplattformen CHERIoT 1.0 för att öka sÀkerheten för kod skrivna i C

Den slutliga versionen av specifikationen för den programvara-hÄrdvaruplattform som CHERIoT 1.0 (Capability Hardware Extension to RISC-V för Internet of Things) har presenterats, vilket definierar en utvidgning av instruktionsuppsÀttningen (ISA) för att skapa sÀkra enheter. CHERIoT erbjuder hÄrdvarufunktioner för att spÄra minnesÄtkomst, verifiera korrektheten i pekarhantering och sÀkerstÀlla isolering av kodblock. Samtidigt publicerades en stabil version av den referensformella modellen för CHERIoT ISA, definierad i Sail-sprÄket. Projektets resultat sprids under BSD-licens.

Projektet CHERIoT skapades av Microsoft för att lösa sĂ€kerhetsproblem i befintlig kod skriven i C och C++ och skydda sĂ„dan kod utan att behöva omarbeta den. Skyddet implementeras genom en modifierad kompilator som anvĂ€nder en utvidgad uppsĂ€ttning processorinstruktioner (ISA) för att sĂ€kerstĂ€lla pekarens integritet, övervaka grĂ€nser vid minnesanvĂ€ndning och förhindra Ă„tkomst till frigjort minne. År 2023 blev resultaten frĂ„n CHERIoT öppna och omvandlades till ett gemensamt projekt dĂ€r Ă€ven andra företag deltog.

HÄrdvarukomponenterna i CHERIoT Àr utformade som en mikroprocessor baserad pÄ RISC-V-arkitekturen, som implementerar den sÀkra processorarkitekturen CHERI (Capability Hardware Extension to RISC-V) med en minnesÄtkomstmodell baserad pÄ "capability" (varje lÀs- och skrivoperation i minnet Àr auktoriserad). Den programvarumodell som bygger pÄ CHERIoT:s instruktionsuppsÀttning (ISA) garanterar sÀkerheten vid minneshantering pÄ nivÄer av individuella objekt, medan den erbjuder skydd mot Ätkomst till redan frigjort minne och implementerar ett lÀttviktsisolationssystem för minnesÄtkomst.

Den angivna programvarumodellen för skydd Äterspeglas direkt i sprÄkmodellen för C/C++, vilket gör det möjligt att tillÀmpa den för befintliga applikationer vars skydd endast krÀver omkompilering och körning pÄ utrustning som stöder CHERIoT ISA. Till exempel möjliggör anvÀndningen av CHERIoT att automatisk grÀnskontroll kan genomföras utan Àndringar i koden, spÄra livslÀngden hos minnesomrÄden och sÀkerstÀlla pekarens integritet i komponenter som hanterar opÄlitliga data.

Bland de problem som blockeras med hjÀlp av CHERIoT:

  • Överskridande av objektets grĂ€nser i minnet;
  • ErsĂ€ttning av pekare (vid anvĂ€ndning av CHERIoT mĂ„ste alla pekare hĂ€rstamma frĂ„n redan existerande pekare);
  • Åtkomst till minnet efter att det har frigjorts (all Ă„tkomst till minnet via en ogiltig pekare eller en pekare som refererar till ett frigjort objekt leder under CHERIoT till att ett undantag genereras).

Utöver specifikationen och den formella modellen utvecklas en referensimplementation av en 32-bitars RISC-V CPU Ibex med stöd för ISA CHERIoT och ett modifierat LLVM-verktyg. Kretsarna för CPU-prototypen och beskrivningarna av hÄrdvarublocken pÄ Verilog-sprÄket sprids under Apache 2.0-licensen. Ibex-kÀrnan frÄn lowRISC-projektet anvÀnds som bas för CPU:n. Chipen ICENI, baserade pÄ CHERIoT Ibex-kÀrnan, förbereds för massproduktion, med försÀljning planerad till nÀsta Är. Separat utvecklar Microsoft en mikrokontroller Kudu med stöd för ISA CHERIoT. BÄde Ibex och Kudu stöder redan fullstÀndigt CHERIoT-specifikationen 1.0. Arbetet med att standardisera CHERI-förlÀngningar för RISC-V-processorer pÄgÄr inom RISC-V International.

Dessutom utvecklas en emulator för plattformen baserad pÄ FPGA och en Docker-container för utvecklare med förinstallerade verktyg och simulator för CPU Ibex, implementerad med Verilator. Dessutom har en prototyp av realtidsoperativsystemet CHERIoT RTOS förberetts, vilket möjliggör isolering av compartment Àven pÄ inbÀddade system med 256 MB RAM. Koden för CHERIoT RTOS Àr skriven i C++ och distribueras under MIT-licensen. De grundlÀggande komponenterna i OS, sÄsom bootloader, schemalÀggare och minneshanteringssystem, Àr strukturerade som compartments.

Ett kompartments i CHERIoT RTOS Àr en isolerad kombination av kod och globala variabler som liknar ett delat bibliotek, men till skillnad frÄn det kan den Àndra sitt tillstÄnd (mutable) och köras i en separat sÀkerhetskontext. Ingen extern kod kan överföra kontroll till koden i kompartments eller fÄ tillgÄng till objekt, förutom genom specifikt definierade ingÄngspunkter och anvÀndning av pekare till objekt som uttryckligen överförts vid anrop av ett annat kompartments. Integritet och konfidentialitet garanteras för kod och globala objekt i kompartments.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster