A fost prezentată varianta finală a specificației platformei hardware-software CHERIoT 1.0 (Capability Hardware Extension to RISC-V pentru Internet of Things), care determină extinderea setului de instrucțiuni (ISA) pentru crearea de dispozitive securizate. CHERIoT oferă capacități hardware pentru urmărirea accesului la memorie, verificarea corectitudinii operării cu pointeri și asigurarea izolării blocurilor de cod. De asemenea, a fost publicat un release stabil al modelului formal de standard CHERIoT ISA, definit în limbajul Sail. Proiectul este distribuit sub licența BSD.
Proiectul CHERIoT a fost creat de Microsoft pentru a rezolva problemele de securitate în codul existent scris în limbajele C și C++ și pentru a proteja astfel de cod fără a fi necesară refacerea acestuia. Protecția este realizată prin aplicarea unui compilator modificat, care utilizează un set extins de instrucțiuni de procesor (ISA) pentru a asigura integritatea pointerilor, controlul limitelor în timpul operării cu memoria și prevenirea accesului la memoria eliberată. În 2023, rezultatele CHERIoT au fost deschise și transformate într-un proiect comun, la care s-au alăturat și alte companii.
Componentele hardware CHERIoT sunt organizate sub forma unui microcontroler bazat pe arhitectura RISC-V, care implementează o arhitectură de procesor securizată CHERI (Capability Hardware Extension to RISC-V) cu un model de acces la memorie gestionat bazat pe „capability” (fiecare operațiune de citire și scriere în memorie este autorizată). Pe baza arhitecturii setului de instrucțiuni (ISA) oferită de CHERIoT, este construit un model software, care garantează securitatea operării cu memoria la nivelul obiectelor individuale, oferind protecție împotriva accesului la memorie deja eliberată și implementând un sistem ușor de izolare a accesului la memorie.
Modelul software de protecție specificat se reflectă direct în modelul de limbaj C/C++, permițând aplicarea acestuia pentru aplicațiile existente, a căror protecție necesită doar recompilare și rulare pe echipamente care suportă ISA CHERIoT. De exemplu, utilizarea CHERIoT permite implementarea unei verificări automate a limitelor, urmărirea timpului de viață al zonelor de memorie și asigurarea integrității pointerilor în componentele care gestionează date nesigure, fără modificări în cod.
Printre problemele blocate cu ajutorul CHERIoT:
- Depășirea limitelor obiectului în memorie;
- Înlocuirea pointerilor (în utilizarea CHERIoT, toți pointerii trebuie să fie generați din pointeri deja existenți);
- Accesarea memoriei după eliberare (orice acces la memorie printr-un pointer incorect sau un pointer care face referire la un obiect eliberat conduce, în utilizarea CHERIoT, la generarea unei excepții).
Pe lângă specificația și modelul formal, proiectul dezvoltă o implementare de referință a unui CPU RISC-V pe 32 de biți, Ibex, cu suport pentru ISA CHERIoT și un instrumentar LLVM modificat. Schemele prototipului CPU și descrierile blocurilor hardware în limbajul Verilog sunt distribuite sub licența Apache 2.0. Ca bază pentru CPU a fost utilizat nucleul Ibex din proiectul lowRISC. Pe baza nucleului CHERIoT, se pregătesc pentru producția de masă cipurile ICENI, a căror comercializare este planificată pentru anul următor. De asemenea, Microsoft dezvoltă un microcontroler Kudu cu suport pentru ISA CHERIoT. Ibex și Kudu susțin deja complet specificația CHERIoT 1.0. Se desfășoară lucrări pentru standardizarea extensiilor CHERI pentru procesoarele RISC-V în cadrul organizației RISC-V International.
De asemenea, se dezvoltă un emulator de platformă bazat pe FPGA și un container Docker pentru dezvoltatori, cu instrumentarul și simulatorul CPU Ibex preinstalat, realizat cu ajutorul Verilator. În plus, pe baza CHERIoT, a fost pregătit un prototip al unui sistem de operare în timp real, CHERIoT RTOS, care oferă posibilitatea izolării compartimentelor (compartment) chiar și pe sisteme încorporate cu 256 MB RAM. Codul CHERIoT RTOS este scris în limbajul C++ și este distribuit sub licența MIT. Compartimentele formează componentele de bază ale sistemului de operare, cum ar fi bootloader, scheduler și sistemul de distribuție a memoriei.
Compartimentul din CHERIoT RTOS reprezintă o combinație izolată de cod și variabile globale, care seamănă cu o bibliotecă partajată, dar, spre deosebire de aceasta, își poate schimba starea (mutable) și se poate rula într-un context de securitate separat. Niciun cod din exterior nu poate transfera controlul către codul din compartiment și nu poate accesa obiectele, cu excepția apelării unor puncte de intrare special definite și utilizării pointerilor la obiecte, explicit transmiși la apelarea altui compartiment. Integritatea și confidențialitatea codului și obiectelor globale din compartiment sunt garantate.
Sursa: opennet.ro
