CHERIOT, o projeto da Microsoft para melhorar a segurança em C

Conheça o CHERIOT, o projeto da Microsoft para melhorar a segurança em C. Confira os detalhes dessa importante proteção.

Recentemente, surgiram notícias de que a Microsoft abriu desenvolvimentos relacionados ao projeto CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), destinado a bloquear problemas de segurança no código C e C++ existente.

CHERIOT, o projeto da Microsoft para melhorar a segurança em C

CHERIOT, o projeto da Microsoft para melhorar a segurança em C
CHERIOT, o projeto da Microsoft para melhorar a segurança em C

CHERIOT oferece uma solução para proteger as bases de código C/C++ existentes sem precisar refatorá-las.

A proteção é implementada por meio do uso de um compilador modificado que usa um conjunto estendido especial de instruções do processador (ISA) fornecido pelo processador e monitora o acesso à memória no nível do hardware, verifica a correção do trabalho com ponteiros e fornece isolamento de blocos de código.

O projeto foi criado com o entendimento de que a natureza de baixo nível da linguagem C torna-se uma fonte de erros de memória, levando a problemas como estouros de buffer, acesso à memória já liberada, desreferenciação de ponteiro ou liberação dupla.

“A prática mostra que mesmo grandes corporações como Google e Microsoft, que têm uma política rígida de revisão de alterações e usam métodos modernos de desenvolvimento e ferramentas de análise estática, não podem garantir um trabalho sem erros com a memória (por exemplo, cerca de 70% das vulnerabilidades na Microsoft e no Google são causados ​​por gerenciamento de memória inseguro).”

O problema pode ser resolvido usando linguagens de programação que garantem um trabalho seguro com memória ou vinculações com controles adicionais, por exemplo, usando MiraclePtr (raw_ptr) em vez de ponteiros comuns, que executam controles adicionais para acessar as áreas de memória liberadas.

Mas esses métodos são mais adequados para novos códigos e é bastante problemático retrabalhar projetos C/C++ existentes, especialmente se eles forem executados em ambientes com recursos limitados, como sistemas integrados e dispositivos IoT.

Os componentes de hardware CHERIOT são projetados como um microcontrolador baseado na arquitetura RISC-V, implementando a arquitetura de processador seguro CHERI (Capacity Hardware Extension for RISC-V), fornecendo um modelo de acesso controlado à memória.

Com base na arquitetura do conjunto de instruções (ISA) fornecida no CHERIoT, é construído um modelo de programação que garante a segurança do trabalho com memória no nível de objetos individuais, fornece proteção contra acesso à memória já liberada e implementa um sistema de isolamento. à memória.

Este modelo de proteção programática espelha diretamente o modelo de linguagem C/C++, permitindo que ele seja usado para proteger aplicativos existentes (recompilar e executar somente em hardware compatível com ISA CHERIOT).

A solução proposta permite bloquear erros que causam fora dos limites de um objeto na memória , não permite substituição de ponteiro (todos os ponteiros devem ser gerados a partir de ponteiros existentes), monitora o acesso à memória após a liberação (qualquer acesso à memória por um ponteiro ruim ou um ponteiro referenciar um objeto liberado lança uma exceção).

Por exemplo, o uso do CHERIoT permite, sem fazer alterações no código, implementar a verificação automática de limites, rastrear o tempo de vida das áreas de memória e garantir a integridade dos ponteiros em componentes que processam dados não confiáveis.

O projeto inclui uma especificação para uma arquitetura estendida de conjunto de instruções CHERIoT , uma implementação de referência de uma CPU RISC-V de 32 bits compatível com ISA CHERIoT e um conjunto de ferramentas LLVM modificado.

Finalmente, se você estiver interessado em aprender mais sobre isso, você deve saber que os diagramas de protótipos de CPU e as descrições de blocos de hardware em Verilog são distribuídos sob a licença Apache 2.0.

O núcleo Ibex do projeto lowRISC é usado como base para a CPU e o modelo de código CHERIoT ISA é definido na linguagem Sail e distribuído sob a licença BSD.

Além disso, é proposto um protótipo de sistema operacional de tempo real CHERIoT RTOS, que fornece a capacidade de isolar compartimentos (compartimento) mesmo em sistemas embarcados com 256 MB de RAM.

O código CHERIoT RTOS é escrito em C++ e é distribuído sob a licença MIT. Na forma de compartimentos, são projetados os componentes básicos do sistema operacional, como o gerenciador de inicialização, o agendador e o sistema de alocação de memória.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

1 comentário em “Como converter imagens para vídeo no Linux”

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.