Den program- og hardwareplatform CHERIoT 1.0 til forbedring af kode sikkerhed i C-sprog

Den endelige version af den software-hardware platform specifikation for CHERIoT 1.0 (Capability Hardware Extension to RISC-V for Internet of Things) er blevet præsenteret, hvilket definerer en udvidelse af instruktionssættet (ISA) til at skabe sikre enheder. CHERIoT tilbyder hardwarefunktioner til at overvåge hukommelsesadgang, kontrollere korrektheden af pointeroperationer og sikre isoleringen af kodeblokke. Samtidig er en stabil version af den referenceformelle model CHERIoT ISA, defineret på Sail-sproget, blevet offentliggjort. Projektets resultater distribueres under BSD-licensen.

Projektet CHERIoT blev oprettet af Microsoft til at løse sikkerhedsproblemer i eksisterende kode skrevet i C og C++ og til at beskytte sådan kode uden behov for at omarbejde den. Beskyttelsen realiseres gennem anvendelse af en modificeret compiler, der bruger et udvidet sæt af processorinstruktioner (ISA) til at sikre integriteten af pointere, kontrollere grænserne ved arbejde med hukommelsen og forhindre adgang til frigivet hukommelse. I 2023 blev resultaterne fra CHERIoT åbnet og transformeret til et fælles projekt, som også blev tilsluttet af andre virksomheder.

CHERIoT's hardwarekomponenter er organiseret som en mikrocontroller baseret på RISC-V-arkitekturen, der implementerer en sikker processorarkitektur CHERI (Capability Hardware Extension to RISC-V) med en model for kontrolleret adgang til hukommelse baseret på 'capability' (hver læse- og skriveoperation i hukommelsen autoriseres). På baggrund af den i CHERIoT leverede instruktionssætsarkitektur (ISA) er der opbygget en softwaremodel, der garanterer sikkerheden ved hukommelsesoperationer på niveauet for individuelle objekter, giver beskyttelse mod adgang til allerede frigivet hukommelse og implementerer et letvægtsadgangsisolationssystem.

Den nævnte softwarebeskyttelsesmodel afspejles direkte i C/C++ sprogmodellen, hvilket gør det muligt at anvende den på eksisterende applikationer, hvor beskyttelsen kun kræver recompilering og kørsel på udstyr, der understøtter CHERIoT ISA. For eksempel muliggør brugen af CHERIoT at implementere automatisk grænsekontrol, overvågning af hukommelsesområders levetid og sikring af pointerintegritet i komponenter, der behandler upålidelige data, uden at foretage ændringer i koden.

Blandt de problemer, der blokeres ved hjælp af CHERIoT:

  • Uden for objektgrænser i hukommelsen;
  • Erstatning af pegepunkter (ved brug af CHERIoT skal alle pegepunkter genereres fra allerede eksisterende pegepunkter);
  • Adgang til hukommelse efter frigivelse (enhver adgang til hukommelse via et ugyldigt pegepunkter eller et pegepunkter, der henviser til et frigivet objekt, fører ved brug af CHERIoT til generering af en undtagelse).

Ud over specifikationen og den formelle model udvikles der et referenceimplementering af 32-bit RISC-V CPU Ibex med understøttelse af ISA CHERIoT og et modificeret LLVM-værktøjssæt. Skemaer for CPU-prototypen og beskrivelser af hardwareblokkene på Verilog-sprog distribueres under Apache 2.0-licensen. Som grundlag for CPU'en er Ibex-kernen fra lowRISC-projektet blevet anvendt. På basis af CHERIoT Ibex forberedes ICENI-chips til masseproduktion, som er planlagt til salg næste år. Desuden udvikler Microsoft en mikrocontroller kaldet Kudu med understøttelse af ISA CHERIoT. Ibex og Kudu understøtter allerede fuldt ud specifikationerne CHERIoT 1.0. Der arbejdes på standardisering af CHERI-udvidelser til RISC-V processorer i organisationen RISC-V International.

Desuden udvikles en emulator til platformen baseret på FPGA og en Docker-container til udviklere med forudinstalleret værktøjssæt og simulator for CPU Ibex, implementeret ved hjælp af Verilator. Derudover er prototypen af realtidsoperativsystemet CHERIoT RTOS forberedt på basis af CHERIoT, hvilket giver mulighed for isolering af compartments (compartment), selv på indlejrede systemer med 256 MB RAM. Koden til CHERIoT RTOS er skrevet i C++ og distribueres under MIT-licensen. De grundlæggende komponenter i operativsystemet er formateret som compartments, såsom bootloader, scheduler og hukommelsesfordelingssystem.

Et kompartement i CHERIoT RTOS repræsenterer en isoleret kombination af kode og globale variabler, der minder om et delt bibliotek, men i modsætning til det kan det ændre sin tilstand (mutable) og køres i en separat sikkerhedskontekst. Ingen kode udefra kan overdrage kontrol til koden i kompartementet eller få adgang til objekterne, undtagen ved at henvende sig til specielt definerede indgangspunkter og bruge pegere til objekter, der eksplicit er givet ved kald af et andet kompartement. For koden og de globale objekter i kompartementet garanteres integritet og fortrolighed.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster