De definitieve versie van de specificatie van de CHERIoT 1.0 software-hardware platform (Capability Hardware Extension to RISC-V for Internet of Things) is gepresenteerd, waarin de uitbreiding van de instructieset (ISA) voor het creƫren van beveiligde apparaten wordt gedefinieerd. CHERIoT biedt hardware-mogelijkheden voor het bijhouden van geheugentoegang, het controleren van pointer-werkingen en het waarborgen van isolatie van codeblokken. Tegelijkertijd is een stabiele release van het referentiemodel van de CHERIoT ISA, gedefinieerd in de Sail-taal, gepubliceerd. De projectresultaten worden verspreid onder de BSD-licentie.
Het CHERIoT-project is opgezet door Microsoft om beveiligingsproblemen in bestaande code in de talen C en C++ aan te pakken en dergelijke code te beschermen zonder deze opnieuw te hoeven ontwerpen. Beveiliging wordt gerealiseerd door een gemodificeerde compiler die een uitgebreide set processorinstructies (ISA) gebruikt om de integriteit van pointers te waarborgen, grenzen bij geheugentoegang te controleren en te voorkomen dat naar vrijgegeven geheugen wordt verwezen. In 2023 werden de resultaten van CHERIoT openbaar gemaakt en omgevormd tot een gezamenlijk project, waaraan ook andere bedrijven deelnamen.
De hardwarecomponenten van CHERIoT zijn vormgegeven als een microcontroller op basis van de RISC-V-architectuur, die een beveiligde processorarchitectuur CHERI (Capability Hardware Extension to RISC-V) implementeert met een model voor beheerde geheugentoegang op basis van 'capability' (elke lees- en schrijfoperatie in het geheugen wordt geautoriseerd). Op basis van de door CHERIoT aangeboden instructieset-architektuur (ISA) is er een softwaremodel ontwikkeld dat de veiligheid van geheugenwerking op het niveau van individuele objecten waarborgt, bescherming biedt tegen toegang tot al vrijgegeven geheugen en een lichtgewicht isolatiesysteem voor geheugentoegang implementeert.
Het aangegeven softwarebeveiligingsmodel wordt rechtstreeks weerspiegeld in de C/C++ taalmode, waardoor het kan worden toegepast op bestaande applicaties waarvoor slechts hercompilatie en uitvoering op hardware die ISA CHERIoT ondersteunt vereist is. Bijvoorbeeld, het gebruik van CHERIoT maakt het mogelijk om zonder wijzigingen in de code automatische grenscontroles, tijdsdetectie van geheugenruimtes en integriteitsbewaking van pointers te implementeren in componenten die onbetrouwbare gegevens verwerken.
Onder de problemen die worden geblokkeerd met behulp van CHERIoT:
- Overschrijding van een objectgrens in het geheugen;
- Pointervervanging (bij het gebruik van CHERIoT moeten alle pointers voortkomen uit al bestaande pointers);
- Toegang tot geheugen na vrijgave (toegang tot geheugen via een ongeldige pointer of een pointer die naar een vrijgegeven object wijst, leidt bij gebruik van CHERIoT tot het genereren van een uitzondering).
Naast de specificatie en formele model ontwikkelt het project een referentie-implementatie van een 32-bits RISC-V CPU Ibex met ondersteuning voor ISA CHERIoT en een gemodificeerde LLVM-toolkit. De schema's van de CPU-prototype en de beschrijvingen van de hardwarecomponenten in Verilog worden verspreid onder de Apache 2.0-licentie. De basis voor de CPU is de Ibex-kern van het lowRISC-project. Op basis van de CHERIoT Ibex-kern zijn de ICENI-chips in massaproductie voorbereid, waarvan de verkoop voor volgend jaar is gepland. Separaat ontwikkelt Microsoft de Kudu-microcontroller met ondersteuning voor ISA CHERIoT. Ibex en Kudu ondersteunen al volledig de specificatie CHERIoT 1.0. Er wordt gewerkt aan de standaardisatie van CHERI-uitbreidingen voor RISC-V-processoren binnen de organisatie RISC-V International.
Daarnaast wordt er een emulator van het platform op basis van FPGA en een Docker-container voor ontwikkelaars ontwikkeld met vooraf geĆÆnstalleerde tools en de CPU Ibex-simulator, gerealiseerd met Verilator. Bovendien is er een prototype van het real-time besturingssysteem CHERIoT RTOS voorbereid, dat compartmentalisatie (compartment) mogelijk maakt, zelfs op embedded systemen met 256 MB RAM. De code van CHERIoT RTOS is geschreven in C++ en wordt verspreid onder de MIT-licentie. De basiscomponenten van het besturingssysteem, zoals de bootloader, scheduler en geheugenverdelingssysteem, zijn in de vorm van compartments vormgegeven.
Een compartiment in CHERIoT RTOS is een geĆÆsoleerde combinatie van code en globale variabelen die lijkt op een gedeelde bibliotheek, maar in tegenstelling tot deze kan het zijn toestand (mutable) veranderen en in een aparte beveiligingscontext worden uitgevoerd. Geen enkele externe code kan de controle aan de code in het compartiment overdragen of toegang krijgen tot objecten, behalve via speciaal gedefinieerde ingangen en het gebruik van pointers naar objecten die expliciet zijn doorgegeven bij het aanroepen van een ander compartiment. Voor de code en globale objecten in het compartiment wordt integriteit en vertrouwelijkheid gegarandeerd.
Bron: opennet.ru
