Plataforma de hardware y software CHERIoT 1.0 para aumentar la seguridad del código en C

Se presenta la versión final de la especificación de la plataforma de hardware y software CHERIoT 1.0 (Extensión de Hardware de Capacidad para RISC-V para Internet de las Cosas), que define la extensión del conjunto de instrucciones (ISA) para crear dispositivos seguros. CHERIoT proporciona capacidades de hardware para rastrear el acceso a la memoria, verificar la validez de los punteros y garantizar la aislamiento de bloques de código. Al mismo tiempo, se publicó un lanzamiento estable del modelo formal de referencia CHERIoT ISA, definido en el lenguaje Sail. Los avances del proyecto se distribuyen bajo la licencia BSD.

El proyecto CHERIoT fue creado por Microsoft para abordar problemas de seguridad en el código existente en los lenguajes C y C++, protegiendo dicho código sin necesidad de reescribirlo. La protección se implementa mediante un compilador modificado que utiliza un conjunto de instrucciones del procesador (ISA) ampliado para garantizar la integridad de los punteros, controlar los límites al trabajar con memoria y prevenir el acceso a memoria liberada. En 2023, los avances de CHERIoT fueron abiertos y transformados en un proyecto colaborativo, al que se unieron otras empresas.

Los componentes de hardware de CHERIoT están diseñados como un microcontrolador basado en la arquitectura RISC-V, que implementa una arquitectura de procesador segura CHERI (Extensión de Hardware de Capacidad para RISC-V) con un modelo de acceso a la memoria basado en 'capability' (cada operación de lectura y escritura en memoria está autorizada). Basado en la arquitectura del conjunto de instrucciones (ISA) proporcionada en CHERIoT, se construye un modelo de software que garantiza la seguridad del trabajo con la memoria a nivel de objetos individuales, proporcionando protección contra el acceso a memoria ya liberada y realizando un sistema ligero de aislamiento del acceso a la memoria.

El mencionado modelo de software de protección se refleja directamente en el modelo de lenguaje C/C++, lo que permite aplicarlo a aplicaciones existentes, cuya protección solo requiere recompilación y ejecución en hardware compatible con la ISA CHERIoT. Por ejemplo, la aplicación de CHERIoT permite realizar automáticamente la verificación de límites, rastrear el tiempo de vida de las áreas de memoria y garantizar la integridad de los punteros en los componentes que procesan datos no confiables, sin necesidad de hacer cambios en el código.

Entre los problemas que se bloquean con CHERIoT:

  • Salida de los límites del objeto en memoria;
  • Sustitución de punteros (cuando se aplica CHERIoT, todos los punteros deben originarse a partir de punteros ya existentes);
  • Acceso a la memoria después de su liberación (cualquier acceso a la memoria mediante un puntero incorrecto o un puntero que referencia a un objeto liberado provoca, al aplicar CHERIoT, la generación de una excepción).

Además de la especificación y el modelo formal, el proyecto desarrolla una implementación de referencia de una CPU RISC-V de 32 bits Ibex con soporte para ISA CHERIoT y una herramienta de LLVM modificada. Los esquemas del prototipo de la CPU y las descripciones de los bloques de hardware en lenguaje Verilog se distribuyen bajo la licencia Apache 2.0. Se utilizó el núcleo Ibex del proyecto lowRISC como base para la CPU. A partir del núcleo CHERIoT Ibex, se están preparando para la producción en masa los chips ICENI, cuya venta está programada para el próximo año. Por separado, Microsoft está desarrollando el microcontrolador Kudu con soporte para ISA CHERIoT. Ibex y Kudu ya son compatibles con la especificación CHERIoT 1.0. Se está trabajando en la estandarización de las extensiones CHERI para procesadores RISC-V en la organización RISC-V International.

Además, se está desarrollando un emulador de la plataforma basado en FPGA y un contenedor Docker para desarrolladores con herramientas preinstaladas y un simulador de CPU Ibex, implementado con Verilator. Además, se ha preparado un prototipo de sistema operativo en tiempo real CHERIoT RTOS, que permite la aislamiento de compartimentos (compartment) incluso en sistemas integrados con 256 MB de RAM. El código de CHERIoT RTOS está escrito en C++ y se distribuye bajo la licencia MIT. Los componentes básicos del sistema operativo están organizados en forma de compartimentos, tales como el cargador, el planificador y el sistema de distribución de memoria.

El compartimento en CHERIoT RTOS representa una combinación aislada de código y variables globales que recuerda a una biblioteca compartida, pero a diferencia de esta, puede cambiar su estado (mutable) y ejecutarse en un contexto de seguridad separado. Ningún código externo puede transferir el control al código en el compartimento ni acceder a los objetos, excepto a través de puntos de entrada definidos específicamente y utilizando punteros a objetos que se pasan explícitamente al invocar otro compartimento. Se garantiza la integridad y la confidencialidad del código y de los objetos globales en el compartimento.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster