- No Ubuntu 25.10, um bug no comando
date do coreutils (uutils) escrito em Rust fez com que a função de atualizações automáticas deixasse de funcionar em alguns sistemas
- O bug foi encontrado no pacote rust-coreutils versão 0.2.2-0ubuntu2 ou anterior e foi corrigido na versão 0.2.2-0ubuntu2.1 ou posterior
- O problema afetou implantações em nuvem, imagens de contêiner, instalações desktop e de servidor, mas não afetou atualizações manuais via comando
apt
- Nesta versão, o Ubuntu está testando a migração para utilitários baseados em Rust (uutils, sudo-rs), como parte da avaliação para uma possível adoção na versão de suporte de longo prazo (LTS) do próximo ano
- O incidente mostra a necessidade de validar a estabilidade durante a transição para Rust e traz implicações importantes para futuras estratégias de segurança e manutenção da distribuição
Visão geral da falha nas atualizações automáticas do Ubuntu 25.10
- O projeto Ubuntu anunciou oficialmente que, devido a um bug no comando
date do uutils baseado em Rust, alguns sistemas não conseguiam verificar atualizações automaticamente
- Entre os sistemas afetados estavam ambientes de implantação em nuvem, imagens de contêiner, instalações do Ubuntu Desktop e Ubuntu Server
- Como a verificação automática de atualizações falhava, havia risco de atraso na aplicação de patches de segurança e atualizações de software
- A equipe de segurança do Ubuntu publicou um aviso com instruções de correção (remediation instructions)
- Os usuários precisam atualizar o pacote rust-coreutils para a versão 0.2.2-0ubuntu2.1 ou posterior para resolver o problema
- O bug afeta apenas o processo de atualização automática e não impacta o comando
apt nem outras ferramentas de atualização manual
Causa do bug e escopo do impacto
- A causa do problema foi atribuída a um erro no tratamento da hora do sistema pelo comando
date do coreutils reescrito em Rust (uutils)
- Com isso, o agendador de atualizações automáticas não conseguia calcular a data corretamente, interrompendo a rotina de verificação de updates
- O impacto se estendeu a todos os formatos de distribuição do Ubuntu 25.10, com potencial de interrupção operacional principalmente em ambientes de servidor automatizados e instâncias em nuvem
- Com esse problema, o Ubuntu reconheceu a necessidade de reforçar os procedimentos de validação de estabilidade dos utilitários de sistema baseados em Rust
Transição para utilitários baseados em Rust (projeto “Oxidize”)
- No lançamento do 25.10, o Ubuntu está conduzindo o projeto “oxidize”, um experimento para substituir o coreutils tradicional em C pelo uutils baseado em Rust
- Ao mesmo tempo, também está introduzindo a versão em Rust do comando sudo (
sudo-rs), com o objetivo de melhorar segurança e memory safety
- O projeto funciona como uma etapa de teste para avaliar se os utilitários baseados em Rust poderão ser incluídos na versão LTS prevista para abril de 2026
- A LWN já havia tratado do projeto em março de 2025, analisando o impacto da adoção de Rust na estabilidade estrutural das distribuições Linux
Versão corrigida e orientações de resposta
- Segundo o aviso de segurança do Ubuntu, o problema está presente no rust-coreutils 0.2.2-0ubuntu2 ou anterior
- Ao atualizar para a versão 0.2.2-0ubuntu2.1 ou posterior, o bug é corrigido
- Os usuários podem fazer a atualização manual dos pacotes com o comando
apt update && apt upgrade
- Até que a função de atualização automática seja restaurada, recomenda-se fazer verificações manuais regulares
Implicações e perspectivas futuras
- O incidente é visto como um exemplo da instabilidade inicial no processo de transição para Rust
- Ele sugere que a adoção de Rust para melhorar memory safety e segurança precisa vir acompanhada de validação da estabilidade funcional
- O experimento do Ubuntu pode acelerar a tendência de adoção de Rust em distribuições Linux de forma mais ampla
- Se os utilitários baseados em Rust forem integrados de forma estável em futuras versões LTS, espera-se uma melhora na segurança do sistema e na eficiência de manutenção
1 comentários
Comentários do Hacker News
Acho aceitável descobrir problemas cedo desse jeito
Desde que isso seja resolvido antes da versão LTS, não vejo problema
O gráfico de compatibilidade de testes do uutils/coreutils mostra que ainda não está completo
Em especial, o
datepassa em apenas 2 testes, pula 3 e falha em 3Nesse estado, acho difícil considerar isso pronto para produção
Esse tipo de bug pode parecer pequeno para um usuário individual, mas em ambientes de grande escala é crítico
Passei o dia inteiro depurando para no fim descobrir que o sistema estava enviando dados para um lugar explicitamente proibido
No fim, o sistema inteiro parou, e quando uma ferramenta da qual você depende quebra, administrar tudo fica realmente difícil
Se fosse qualquer outra linguagem que não Rust, os desenvolvedores teriam sido duramente criticados
Fico me perguntando se o coreutils existente tinha problemas grandes o suficiente para justificar melhorias
Texto relacionado: lista de discussão do OpenBSD
Queria encontrar o link do patch no uutils
O bug principal é que o suporte a
date -r <file>não estava implementado, mas o Ubuntu integrou essa versão mesmo assimO comando simplesmente ignorava a opção
-rem silêncio e não fazia nadaItens relacionados: #8621, PR #8630
O último commit (link) corrigia o parsing de date para corresponder ao GNU, mas pelos outros comentários talvez a causa não tenha sido essa
Gostei do comentário principal — “o próximo nome de release do Ubuntu vai ser Grateful Guinea-Pig”
Pelo changelog do Ubuntu, o bug está ligado ao
date -rPelos links do changelog, do relatório de bug, da issue e do PR,
o
date -rdeveria exibir o horário de modificação do arquivo, mas a versão em Rust simplesmente ignorava issoEssa ausência de comportamento básico é decepcionante para um projeto que se apresenta como “substituto seguro”
Aviso de segurança do Ubuntu — parece um caso típico
Tive a sensação de que o Ubuntu 25.10 estava inutilizável. Foi a primeira vez que disse isso de uma versão não LTS
Concordo com a ideia de que “reescrever em Rust utilitários em C validados por décadas pode ser bom no longo prazo, mas os problemas de curto prazo eram previsíveis”
Mas fico na dúvida sobre quão longo é esse “longo prazo”
Numa apresentação na FOSDEM, um desenvolvedor do uutils alegou desempenho melhor com benchmarks incorretos, quando na prática isso se devia à falta de suporte a locale, o que também foi problemático
Links relacionados: apresentação da FOSDEM, thread 1, thread 2
Reescrever utilitários essenciais traz bastante vantagem para o portfólio
Tenho curiosidade sobre o estado da arte em guided state-space exploration e fuzzing
Se já existe uma implementação anterior, parece que um fuzzer poderia comparar o comportamento das duas versões para fazer uma verificação white-box
Dá muito trabalho escrever proptests para o espaço inteiro de entradas, mas se os argumentos de CLI forem estáveis, isso parece perfeitamente viável
Também daria para gerar casos automaticamente com base em materiais como páginas man
Em Rust, eu usaria o crate
proptest; para validar diferenças de CLI, Python com Hypothesis via chamadas externas também parece uma boa opção