Tecnologia

O Ubuntu 26.04 adopta o Rust sudo por defeito e encerra 46 anos de vulnerabilidades C

Adrian Kessler

O Ubuntu 26.04 LTS, agora disponível, faz do sudo-rs a implementação padrão da ferramenta que controla o acesso a nível de sistema no Linux. Quando um utilizador ou processo necessita de privilégios elevados — para instalar software, modificar ficheiros de sistema, executar um serviço como root — o sudo é o guardião. O original foi escrito em C. O sudo-rs é uma reimplementação completa em Rust, sendo agora a versão que é fornecida por defeito na distribuição Linux mais utilizada do mundo.

O sudo original foi escrito há várias décadas. Nesse período, o código em C acumulou algo mais além das suas funcionalidades: uma classe de vulnerabilidades de gestão de memória que o Rust elimina ao nível do compilador. A mais significativa foi a CVE-2021-3156, denominada Baron Samedit. A vulnerabilidade permaneceu indetetável durante aproximadamente dez anos, permitindo escalada local de privilégios em todas as principais distribuições Linux. Um atacante local com uma conta de shell não-root podia tornar-se root. A Canonical corrigiu-a em 24 horas após a divulgação. A condição arquitetónica que a permitiu — a gestão manual de memória do C — não foi corrigida.

O que o Rust altera não é a forma como o código é escrito, mas que classe de erros pode existir nele. Buffer overflows, erros de use-after-free e dereferenciações de ponteiros nulos são uma categoria de vulnerabilidade que o Rust elimina em tempo de compilação — o compilador rejeita código com estes padrões antes de este poder ser executado. Para um software que lida com escalada de privilégios, isso é uma limitação significativa a remover do modelo de ameaças.

O sudo-rs concluiu uma auditoria de segurança independente completa em 2023. O projeto alcançou paridade de desempenho com a implementação em C. A Canonical começou a fornecê-lo como opção em versões anteriores do Ubuntu antes de o tornar padrão na 26.04. A abordagem faseada reflete a cautela adequada para substituir uma ferramenta que, se falhar, pode bloquear o acesso dos utilizadores ao sistema ou escalar atacantes para root.

O Ubuntu 26.04 também inclui o uutils coreutils — reescritas em Rust de ferramentas fundamentais como ls, cat e mv. Mas o cp, mv e rm permanecem nas implementações GNU em C para esta versão. A justificação da Canonical: condições de corrida TOCTOU nessas implementações em Rust acarretam risco de destruição de dados que a equipa considerou demasiado elevado para um lançamento LTS. A implementação faseada revela algo honesto sobre a abordagem ‘reescrever em Rust’: as ferramentas existem, mas a migração requer análise de segurança caso a caso, não uma troca geral.

O kernel Linux começou a aceitar código de drivers em Rust em 2022. A equipa do Android utiliza Rust para novo código de sistema desde 2021. A Microsoft reescreveu componentes sensíveis à memória do Windows em Rust. O Ubuntu tornar o sudo-rs padrão é um marco significativo porque não é uma experiência num novo driver ou componente opcional — é a camada de autenticação para acesso ao sistema, fornecida por defeito em cada nova instalação do Ubuntu.

O padrão de CVE que produziu o Baron Samedit termina para os utilizadores do Ubuntu nesta configuração. Se outras grandes distribuições — Debian, Red Hat, Fedora, Arch — seguirão o movimento do Ubuntu para ter o sudo-rs como padrão é a questão que determina a escala da mudança. O sudo-rs está disponível para todas elas. A Canonical decidiu que os resultados da auditoria eram suficientes. A próxima decisão pertence aos outros mantenedores.

Etiquetas: , , , , ,

Discussão

Existem 0 comentários.