Greg Kroah-Hartman, responsável pelo suporte da versão estável do núcleo do Linux, se manifestou a favor do desenvolvimento de novos componentes do núcleo na linguagem Rust. Como a pessoa que tem gerenciado, nos últimos 15 anos, todas as informações sobre erros e vulnerabilidades no núcleo do Linux, ele afirma que a maioria dos erros no núcleo é causada por características não reconhecidas da linguagem C (casos extremos), que são completamente eliminadas no código em Rust.
Com a utilização do Rust, será possível deixar para trás problemas como acesso à memória após sua liberação, saídas de limites de buffer (parcialmente), liberação incorreta de recursos durante o tratamento de erros e verificações esquecidas de códigos de retorno de erros, permitindo que os mantenedores se concentrem em erros reais, como condições de corrida e problemas lógicos, e não dividam sua atenção em detalhes menores durante a revisão.
O código antigo existente em C não desaparecerá, mas a introdução do Rust para o novo código e novos drivers permitirá uma melhoria significativa na qualidade. A adoção do Rust também permitirá estruturar as interfaces de programação interna do núcleo de forma que praticamente eliminará erros no uso da API interna — acumulou-se muita complexidade e confusão nas APIs do núcleo, o que representa uma grande carga de trabalho para os mantenedores na verificação de que essas APIs estão sendo utilizadas corretamente. Com o desenvolvimento de enlaces em Rust, os mantenedores terão a oportunidade de repensar e organizar as APIs, beneficiando a todos, inclusive os usuários da linguagem C.
Greg não considera o Rust uma 'bala de prata' que resolverá todos os problemas no núcleo, mas essa linguagem certamente ajudará em um grande número de situações. O suporte ao Rust também atenderá à demanda dos desenvolvedores de drivers, que esperam uma ferramenta que permita escrever código para seu hardware, evitando muitos tipos de erros. No que diz respeito à mistura de várias linguagens, Greg não vê grande problema; em sua opinião, no passado, os desenvolvedores do núcleo lidaram com questões mais sérias, e não há razão para rejeitar a introdução de novas e boas ideias no núcleo que ajudem a garantir o sucesso do projeto por mais de 20 anos.
A discussão também contou com a participação de Kees Cook, ex-administrador de sistema chefe do kernel.org e líder da equipe de segurança do Ubuntu. Kees esclareceu que a questão não se refere à reescrita do código existente no núcleo, mas sim à possibilidade de utilizar Rust para a criação de novos drivers e subsistemas. A aplicação de Rust para o novo código não só reduzirá o número de erros na manipulação de memória, mas também encurtará o tempo de desenvolvimento. A velocidade de desenvolvimento aumenta devido à diminuição do esforço necessário para depuração e à presença de garantias rigorosas na linguagem, que permitem identificar erros em um estágio inicial da escrita do código, antes do início dos testes do produto.
A eficácia da tática de uso de Rust para melhorar a qualidade do novo código já foi demonstrada pelo Google na plataforma Android. Foi mostrado que a principal fonte de problemas de segurança é o novo código, e a melhoria de sua qualidade deve ser a principal prioridade. Para o código antigo, há uma dependência exponencial da segurança em relação ao tempo (por exemplo, um código com 5 anos tem em média uma densidade de vulnerabilidades 3.4 vezes menor do que um novo código).
Fonte: opennet.ru
