Um projeto para implementar os utilitários sudo e su no Rust

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.

Atualmente, o trabalho está focado na implementação de recursos no Sudo-rs que permitem que ele seja usado como um substituto transparente para o sudo em casos de uso típicos (configurações padrão de sudoers no Ubuntu, Fedora e Debian). No futuro, há planos para criar uma biblioteca que permita incorporar a funcionalidade sudo em outros programas e fornecer um método de configuração alternativo que evite a análise da sintaxe do arquivo de configuração sudoers. Com base na funcionalidade sudo implementada, uma variante do utilitário su também será preparada. Além disso, os planos mencionam suporte para SELinux, AppArmor, LDAP, ferramentas de auditoria, capacidade de autenticação sem usar PAM e a implementação de todas as opções de 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

Adicionar um comentário