O ISRG (Internet Security Research Group), que é o fundador do projeto Let's Encrypt e promove o HTTPS e o desenvolvimento de tecnologias para aumentar a segurança da Internet, apresentou o projeto Sudo-rs para criar implementações de utilitários sudo e su escritos em Rust que permite executar comandos em nome de outros usuários. Sob as licenças Apache 2.0 e MIT, uma versão de pré-lançamento do Sudo-rs já foi publicada, ainda não pronta para uso geral. O projeto, que começou a funcionar em dezembro de 2022, tem conclusão prevista para setembro de 2023.
O trabalho atual está focado na implementação de funcionalidades no Sudo-rs que permitam que o utilitário seja usado como um substituto transparente para o sudo em cenários de uso típicos (configurações padrão do sudoers em Ubuntu, Fedora e DebianNo futuro, planejamos criar uma biblioteca que permitirá incorporar a funcionalidade sudo em outros programas e fornecer um método de configuração alternativo que elimina a necessidade de analisar a sintaxe do arquivo de configuração sudoers. Uma versão do utilitário su também será desenvolvida com base na funcionalidade sudo implementada. O suporte para SE também está previsto nos planos.LinuxAppArmor, LDAP, ferramentas de auditoria, a capacidade de autenticar sem usar PAM e a implementação de todas as opções da linha de comando sudo.
De acordo com a Microsoft e o Google, cerca de 70% das vulnerabilidades são causadas por gerenciamento de memória inseguro. Espera-se que o uso da linguagem Rust para desenvolver su e sudo reduza o risco de vulnerabilidades causadas pelo manuseio inseguro de memória e elimine a ocorrência de erros como acessar uma área de memória após ela ter sido liberada e saturações de buffer. Sudo-rs está sendo desenvolvido por engenheiros da Ferrous Systems e Tweede Golf com fundos fornecidos por empresas como Google, Cisco, Amazon Web Services.
A manipulação de memória segura é fornecida em Rust em tempo de compilação por meio de verificação de referência, acompanhando a propriedade do objeto e o tempo de vida do objeto (escopo), bem como por meio da avaliação da exatidão do acesso à memória durante a execução do código. Rust também fornece proteção contra estouros de número inteiro, requer inicialização obrigatória de valores de variáveis antes do uso, lida melhor com erros na biblioteca padrão, aplica o conceito de referências e variáveis imutáveis por padrão, oferece tipagem estática forte para minimizar erros lógicos.
Fonte: opennet.ru
