Plataforma de software e hardware CHERIoT 1.0 para aumentar a segurança do código escrito em C

Foi apresentada a versão final da especificação da plataforma de software e hardware CHERIoT 1.0 (Capability Hardware Extension to RISC-V for Internet of Things), que define a extensão do conjunto de instruções (ISA) para a criação de dispositivos seguros. CHERIoT oferece capacidades de hardware para rastrear o acesso à memória, verificar a validade do uso de ponteiros e garantir a isolação de blocos de código. Ao mesmo tempo, foi lançado um release estável do modelo formal de referência CHERIoT ISA, definido na linguagem Sail. Os desenvolvimentos do projeto estão sob licença BSD.

O projeto CHERIoT foi criado pela Microsoft para abordar questões de segurança no código existente nas linguagens C e C++ e proteger esse código sem a necessidade de reescrevê-lo. A proteção é implementada através do uso de um compilador modificado que utiliza um conjunto expandido de instruções de processador (ISA) para garantir a integridade dos ponteiros, o controle de limites no acesso à memória e prevenir acessos a memória liberada. Em 2023, os desenvolvimentos do CHERIoT foram abertos e transformados em um projeto colaborativo, ao qual se juntaram outras empresas.

Os componentes de hardware do CHERIoT estão organizados na forma de um microcontrolador baseado na arquitetura RISC-V, que implementa uma arquitetura de processador seguro CHERI (Capability Hardware Extension to RISC-V) com um modelo de acesso controlado à memória baseado em "capability" (cada operação de leitura e escrita na memória é autorizada). Baseado na arquitetura do conjunto de instruções (ISA) fornecida pelo CHERIoT, foi construída um modelo de software que garante a segurança do acesso à memória em nível de objetos individuais, oferecendo proteção contra acessos a memória já liberada e implementando um sistema leve de isolamento de acesso à memória.

O modelo de proteção de software mencionado se reflete diretamente no modelo de linguagem C/C++, permitindo que seja aplicado a aplicativos existentes, para os quais a proteção requer apenas recompilação e execução em hardware que suporta o ISA CHERIoT. Por exemplo, a aplicação do CHERIoT permite realizar verificações automáticas de limites, rastreamento do tempo de vida de áreas de memória e garantir a integridade dos ponteiros em componentes que processam dados não confiáveis, sem necessitar de alterações no código.

Entre os problemas que são bloqueados com a ajuda do CHERIoT:

  • Saída dos limites do objeto na memória;
  • Substituição de ponteiros (quando aplicado CHERIoT, todos os ponteiros devem ser derivados de ponteiros já existentes);
  • Acesso à memória após a liberação (qualquer acesso à memória por meio de um ponteiro inválido ou um ponteiro que referencia um objeto liberado gera uma exceção quando aplicado CHERIoT).

Além da especificação e do modelo formal, o projeto está desenvolvendo uma implementação de referência de uma CPU RISC-V de 32 bits chamada Ibex, com suporte ao ISA CHERIoT, e uma ferramenta modificada do LLVM. Os esquemas do protótipo da CPU e as descrições dos blocos de hardware em Verilog são distribuídos sob a licença Apache 2.0. Como base para a CPU, foi utilizado o núcleo Ibex do projeto lowRISC. Chips ICENI, baseados no núcleo CHERIoT Ibex, estão se preparando para produção em massa, com lançamento programado para o próximo ano. Separadamente, a Microsoft está desenvolvendo o microcontrolador Kudu com suporte ao ISA CHERIoT. Ibex e Kudu já suportam completamente a especificação CHERIoT 1.0. O trabalho de padronização das extensões CHERI para processadores RISC-V está em andamento na organização RISC-V International.

Adicionalmente, está sendo desenvolvido um emulador da plataforma baseado em FPGA e um contêiner Docker para desenvolvedores com ferramentas pré-instaladas e um simulador da CPU Ibex, implementado com Verilator. Além disso, um protótipo de um sistema operacional em tempo real chamado CHERIoT RTOS foi preparado, permitindo a isolação de compartimentos mesmo em sistemas embarcados com 256 MB de RAM. O código do CHERIoT RTOS é escrito em C++ e distribuído sob a licença MIT. Os componentes básicos do sistema operacional, como o carregador, o escalonador e o sistema de gerenciamento de memória, são organizados em compartimentos.

Um compartimento no CHERIoT RTOS representa uma combinação isolada de código e variáveis globais, que se assemelha a uma biblioteca compartilhada, mas ao contrário desta, pode mudar seu estado (mutable) e ser executada em um contexto de segurança separado. Nenhum código externo pode passar o controle para o código no compartimento ou acessar objetos, exceto ao se referir a pontos de entrada especificamente definidos e ao usar ponteiros para objetos explicitamente passados ao chamar outro compartimento. A integridade e a confidencialidade de códigos e objetos globais no compartimento são garantidas.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster