Greg Kroah-Hartman, responsável pelo suporte das ramas estáveis e "staging" do núcleo Linux e atuando como mantenedor de 16 subsistemas do núcleo, fez uma apresentação na conferência Rust Week 2026, onde explicou como a linguagem Rust pode ajudar a prevenir a introdução de vulnerabilidades no núcleo causadas por erros comuns dos desenvolvedores em C ao trabalhar com memória, bloqueios, tratamento de erros e manipulação de dados não confiáveis. A principal vantagem do Rust é a capacidade de identificar esses erros durante a fase de compilação, em vez de na revisão de código por humanos. No entanto, Rust não é visto como uma panaceia que pode eliminar todos os problemas, e ninguém planeja reescrever o núcleo em Rust: espera-se uma implementação gradual do Rust através de seu uso em novos drivers e subsistemas.
Como exemplo de erros no núcleo que poderiam ser evitados com o uso do Rust, foi citada uma falha no subsistema Bluetooth que passou despercebida por 15 anos, além de um problema no hipervisor Xen. No primeiro caso, o desenvolvedor realizou uma desreferenciação de ponteiro sem checagem, e no segundo, esqueceu de liberar um bloqueio no código de tratamento de erros.
Segundo Greg, a maioria dos erros no núcleo é causada por essas pequenas falhas que se acumulam ao longo do tempo e emergem como vulnerabilidades. No Rust, muitos desses problemas são evitados pelo compilador; por exemplo, as abstrações de bloqueio do Rust no núcleo permitem o acesso a ponteiros internos de estruturas somente após a aquisição do bloqueio apropriado, que é liberado automaticamente. Sem a aquisição do bloqueio, não é possível acessar ponteiros de estruturas em Rust.
Greg acredita que funcionalidades como essas do Rust teriam evitado 60% dos erros encontrados no núcleo, e as checagens feitas pelo compilador economizariam tempo dos mantenedores na discussão com os autores sobre a correção do tratamento de erros e a adequação da aplicação de bloqueios nos locais corretos. Além disso, a implementação do suporte ao Rust já teve um efeito benéfico também no código em C do núcleo, devido à limpeza do código em C e das interfaces, bem como ao empréstimo de algumas técnicas de desenvolvimento (por exemplo, foram implementados bloqueios com escopo limitado).
Graças ao sistema de tipos, que garante a conformidade com as regras definidas, e à aplicação de sistemas de integração contínua que verificam o código na fase de compilação, ao revisar alterações no Rust, os revisores podem se concentrar na verificação da lógica de funcionamento, em vez de acompanharem manipulações de recursos. A utilização do Rust também permite uma abordagem mais cuidadosa em relação aos dados provenientes de hardware ou sistemas externos. Isso é alcançado por meio da clara distinção entre dados confiáveis e não confiáveis no nível do sistema de tipos: o desenvolvedor precisa apenas realizar uma análise ao transitar de um estado não confiável para um confiável.
Recentemente, a equipe responsável pela segurança do núcleo tem publicado cerca de 13 relatórios de vulnerabilidades todos os dias, o que, em comparação com a dinâmica anterior de identificação de vulnerabilidades, é visto como uma espécie de loucura (por exemplo, ontem foram publicados 277 relatórios de vulnerabilidades no núcleo). De acordo com Greg, o uso do Rust é uma das maneiras reais de reduzir o número de erros no núcleo causados por equívocos tradicionais no tratamento de erros e na gestão de recursos. No núcleo, o suporte ao Rust já ultrapassou os limites do experimento e, no final do ano passado, foi reconhecido como uma funcionalidade oficial do núcleo.

Fonte: opennet.ru
