Um framework para escrever drivers seguros para o núcleo do Linux na linguagem Rust

Josh Triplett, que trabalha na Intel e faz parte do comitê responsável pelo desenvolvimento do Crates.io, em sua apresentação na conferência Open Source Technology Summit apresentou um grupo de trabalho focado em levar a linguagem Rust a paridade com a linguagem C na área de programação de sistemas.

No grupo de trabalho que está em processo de criação, os desenvolvedores Rust, juntamente com engenheiros da Intel, prepararão especificações definindo as funcionalidades que precisam ser implementadas no Rust para programação de sistemas. A programação de sistemas frequentemente requer manipulações de baixo nível, como a execução de instruções privilegiadas do processador e a obtenção de informações detalhadas sobre o estado do processador. Entre as capacidades que já estão sendo desenvolvidas para o Rust, destacam-se o suporte a estruturas nominais, uniões (union), inserções de assembler (macro "asm!") e o formato de número de ponto flutuante BFLOAT16.

Josh acredita que o futuro da programação de sistemas é o Rust, e a linguagem C, nas realidades atuais, busca o lugar que anteriormente era ocupado pelo Assembly. Rust
não só livra os desenvolvedores dos problemas inerentes à linguagem C que surgem devido ao trabalho de baixo nível com a memória, mas também oferece a possibilidade de aplicar paradigmas de programação modernos.

Durante a discussão da apresentação
Josh propôs adicionar ao kernel do Linux a capacidade de desenvolver drivers na linguagem Rust, o que permitirá criar drivers seguros e de maior qualidade com o mínimo de esforço, isentos de problemas como acesso à memória após sua liberação, desreferenciamento de ponteiros nulos e estouros de buffer.

Greg Kroah-Hartman, responsável pelo suporte à versão estável do kernel Linux, expressou sua disposição de adicionar ao kernel um framework para desenvolvimento de drivers na linguagem Rust, caso ele ofereça reais vantagens em comparação com C, como fornecer wrappers seguros sobre a API do kernel. Além disso, Greg vê esse framework apenas como uma opção, não ativada por padrão, para não incluir o Rust entre as dependências de compilação do kernel.

Descobriu-se que várias equipes já estão trabalhando nessa direção. Por exemplo, os desenvolvedores da empresa "Fish in a Barrel" prepararam ferramentas para escrever módulos carregáveis para o núcleo Linux na linguagem Rust, utilizando um conjunto de camadas abstratas sobre as interfaces e estruturas do núcleo para aumentar a segurança. As camadas são geradas automaticamente com base nos arquivos de cabeçalho existentes do núcleo utilizando a ferramenta bindgen. Para compilar as camadas, é utilizado o Clang. Os módulos compilados além das camadas utilizam o pacote staticlib.

Simultaneamente está em desenvolvimento mais um projeto focado no desenvolvimento de drivers para sistemas embutidos e dispositivos de Internet das Coisas, que também usa bindgen para gerar camadas com base em arquivos de cabeçalho do kernel. O framework permite aumentar a segurança dos drivers sem fazer alterações no kernel — em vez de criar níveis adicionais de isolamento no kernel para os drivers, propõe-se bloquear problemas na fase de compilação, aplicando uma linguagem mais segura, o Rust. Supõe-se que essa abordagem pode ser valorizada pelos fabricantes de hardware que desenvolvem drivers proprietários rapidamente, sem realizar a devida auditoria.

Nem toda a funcionalidade planejada foi implementada até agora, mas o framework já é bastante utilizável e foi usado para escrever um driver funcional para o controlador Ethernet LAN9512 USB, fornecido na placa Raspberry Pi 3. Como implementação de referência na escrita do driver em Rust, foi utilizado um driver existente smsc95xx, escrito em C. Destaca-se que o tamanho do módulo e os custos indiretos de componentes de tempo de execução ao desenvolver o driver em Rust são insignificantes, permitindo a aplicação do framework em dispositivos com recursos limitados.

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