Bol pridaný finálny variant špecifikácie programovo-hardvérovej platformy CHERIoT 1.0 (Capability Hardware Extension to RISC-V for Internet of Things), ktorý určuje rozšírenie množiny inštrukcií (ISA) na vytváranie chránených zariadení. CHERIoT poskytuje hardvérové možnosti na sledovanie prístupu k pamäti, overovanie správnosti práce s ukazovateľmi a zabezpečenie izolácie blokov kódu. Zároveň bol zverejnený stabilný vydanie referenčného formálneho modelu CHERIoT ISA, definovaného v jazyku Sail. Výsledky projektu sú poskytované pod licenciou BSD.
Projekt CHERIoT bol vytvorený spoločnosťou Microsoft na riešenie problémov s bezpečnosťou v existujúcom kóde v jazykoch C a C++ a na ochranu podobného kódu bez nutnosti jeho prepracovania. Ochrana sa realizuje prostredníctvom použití modifikovaného kompilátora, ktorý využíva rozšírenú množinu procesorových inštrukcií (ISA) na zabezpečenie integrity ukazovateľov, kontrolu hraníc pri práci s pamäťou a prevenciu prístupu k uvoľnenej pamäti. V roku 2023 boli výsledky CHERIoT sprístupnené a premenené na spoločný projekt, ku ktorému sa pripojili aj ďalšie spoločnosti.
Hardvérové komponenty CHERIoT sú formované ako mikrokontrolér založený na architektúre RISC-V, realizujúci chránenú procesorovú architektúru CHERI (Capability Hardware Extension to RISC-V) s modelom riadeného prístupu k pamäti založeným na "capability" (každá operácia čítania a zápisu do pamäti je autorizovaná). Na základe poskytovanej architektúry množiny inštrukcií (ISA) v CHERIoT je vybudovaný programový model, ktorý zaručuje bezpečnosť práce s pamäťou na úrovni jednotlivých objektov, poskytujúci ochranu pred prístupom k už uvoľnenej pamäti a realizujúci ľahký systém izolácie prístupu k pamäti.
Tento programový model ochrany sa priamo odráža v jazykovom modeli C/C++, čo umožňuje jeho aplikáciu na existujúce aplikácie, na ochranu ktorých stačí len prekompilácia a spustenie na hardvéri, ktorý podporuje ISA CHERIoT. Napríklad, použitie CHERIoT umožňuje bez vykonania zmien v kóde realizovať automatickú kontrolu hraníc, sledovanie životnosti oblastí pamäti a zabezpečenie integrity ukazovateľov v komponentoch, ktoré spracovávajú nedôveryhodné údaje.
Medzi problémami, ktoré sú blokované pomocou CHERIoT:
- Prekročenie objektu v pamäti;
- Nahradenie ukazovateľov (pri použití CHERIoT musia byť všetky ukazovatele vytvárané z už existujúcich ukazovateľov);
- Prístup k pamäti po jej uvoľnení (akýkoľvek prístup k pamäti cez nesprávny ukazovateľ alebo ukazovateľ, ktorý odkazuje na uvoľnený objekt, vedie pri použití CHERIoT k vyvolaniu výnimky).
Okrem špecifikácie a formálneho modelu projekt vyvíja referenčnú implementáciu 32-bitového RISC-V CPU Ibex s podporou ISA CHERIoT a modifikované nástroje LLVM. Schémy prototypu CPU a popisy hardvérových blokov vo Verilogu sú distribuované pod licenciou Apache 2.0. Ako základ pre CPU sa použila jadro Ibex z projektu lowRISC. Na základe jadra CHERIoT Ibex sa pripravujú na masovú výrobu čipy ICENI, ktorých predaj je naplánovaný na budúci rok. Spoločnosť Microsoft samostatne vyvíja mikrokontrolér Kudu s podporou ISA CHERIoT. Ibex a Kudu už plne podporujú špecifikáciu CHERIoT 1.0. Pracuje sa na štandardizácii CHERI-rozšírení pre procesory RISC-V v organizácii RISC-V International.
Ďalej sa vyvíja emulátor platformy založený na FPGA a Docker kontajner pre vývojárov s predinštalovanými nástrojmi a simulátorom CPU Ibex realizovaným pomocou Verilator. Okrem toho bol na báze CHERIoT pripravený prototyp operačného systému reálneho času CHERIoT RTOS, ktorý umožňuje izoláciu kompartimentov (compartment) aj na embedded systémoch s 256 MB RAM. Kód CHERIoT RTOS je napísaný v jazyku C++ a distribuovaný pod licenciou MIT. Základné komponenty OS, ako sú boot loader, plánovač a systém rozdeľovania pamäte, sú zrealizované vo forme kompartimentov.
Kompartmán v CHERIoT RTOS predstavuje izolovanú kombináciu kódu a globálnych premenných, ktorá pripomína zdieľanú knižnicu, ale na rozdiel od nej môže meniť svoj stav (mutable) a spúšťať sa v samostatnom bezpečnostnom kontexte. Žiadny kód zvonka nemôže odovzdať ovládanie kódu v kompartmánu ani získať prístup k objektom, okrem volania špeciálne definovaných vstupných bodov a použitia ukazovateľov na objekty, ktoré sú explicitne predané pri volaní iného kompartmánu. Pre kód a globálne objekty v kompartmáne je zaručená integrita a dôvernosť.
Zdroj: opennet.ru
