Microsoft har lanceret CHERIoT, en hardware-løsning til at forbedre sikkerheden i C-kode

Microsoft har offentliggjort deres arbejde relateret til CHERIoT-projektet (Capability Hardware Extension to RISC-V for Internet of Things), der sigter mod at løse sikkerhedsproblemer i eksisterende kode skrevet i C og C++. CHERIoT tilbyder en løsning, der gør det muligt at beskytte eksisterende kodebaser i C/C++ uden behov for omfattende omskrivning. Beskyttelsen implementeres gennem brugen af en modificeret compiler, der anvender et specielt udvidet sæt af processorinstruktioner (ISA), der udbydes af processoren og som på hardware-niveau overvåger adgang til hukommelsen, kontrollerer pointernes korrekthed og sikrer isolation af kodeblokke.

Projektet er skabt med henblik på, at det lave niveau af C-sproget ofte fører til fejl i hukommelsesstyring, hvilket kan resultere i problemer som buffer overflow, adgang til frigivet hukommelse, dereferencering af pointere eller dobbeltfrigivelse af hukommelse. Erfaring viser, at selv store virksomheder som Google og Microsoft, der har strenge retningslinjer for ændringsrevision og anvender moderne udviklingsmetoder og statiske analyseværktøjer, ikke kan garantere fraværet af hukommelsesfejl (for eksempel skyldes cirka 70% af sårbarhederne i softwareprodukter fra Microsoft og Google usikker hukommelsesarbejde).

Problemet kan løses ved brug af programmeringssprog, der garanterer sikker hukommelsesstyring, eller ved anvendelse af wrappers med ekstra kontrol, for eksempel ved at bruge specielle pointertyper som MiraclePtr (raw_ptr), som udfører yderligere kontroller ved adgang til frigivne hukommelsesområder. Men sådanne metoder er bedre egnet til ny kode, og det er temmelig problematisk at omskrive allerede eksisterende projekter i C/C++, især hvis de er beregnet til drift i ressourcetrænede miljøer, såsom indlejrede systemer og Internet of Things-enheder.

CHERIoT's hardware components are implemented as a microcontroller based on the RISC-V architecture, which realizes the secure processor architecture CHERI (Capability Hardware Extension to RISC-V), providing a model of controlled memory access based on 'capability' (each read and write operation to memory is authorized). Built on the command set architecture (ISA) provided in CHERIoT, there is a software model that guarantees secure memory operations at the level of individual objects, offering protection against accesses to already freed memory and implementing a lightweight memory access isolation system. This software protection model is directly reflected in the C/C++ language model, allowing it to be applied for protecting existing applications (only recompilation and execution on hardware supporting the CHERIoT ISA are required).

The proposed solution allows for blocking errors that cause out-of-bounds access in memory, prevents pointer substitution (all pointers must be derived from already existing pointers), and tracks memory accesses after freeing (any access to memory through an incorrect pointer or a pointer referring to a freed object leads to an exception being generated). For example, using CHERIoT enables automatic boundary checks, tracks the lifetime of memory regions, and ensures pointer integrity in components that process untrusted data without requiring code changes.

The project includes the specification of the extended command set architecture CHERIoT, a reference implementation of a 32-bit RISC-V CPU with CHERIoT ISA support, and a modified LLVM toolkit. The prototype CPU schematics and descriptions of hardware blocks in Verilog are distributed under the Apache 2.0 license. The Ibex core from the lowRISC project is used as the basis for the CPU. The CHERIoT ISA code model is defined in Sail and is distributed under the BSD license.

Der prototyp af det realtidsoperativsystem CHERIoT RTOS tilbyder mulighed for isolering af kompartmenter (compartments) selv på indlejrede systemer med 256 MB RAM. Koden til CHERIoT RTOS er skrevet i C++ og distribueres under MIT-licensen. Grundlæggende komponenter i OS'en, såsom bootloader, scheduler og hukommelsesfordelingssystem, er udformet i form af kompartmenter.

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