O time de seguranca do Rust divulgou em 25 de maio a CVE-2026-5223, falha no Cargo que deixava tarballs de crates extrair symlinks pra fora do diretorio do projeto. A correcao chega no Rust 1.96.0, marcado pra 28 de maio. Quem instala dependencias publicas precisa atualizar antes de qualquer pipeline tocar codigo de terceiros.
O que a CVE-2026-5223 fazia na pratica
O Cargo, gerenciador de pacotes do Rust, baixa crates de registries publicos como crates.io em formato tarball, descomprime e usa o conteudo dentro do projeto. A falha estava em uma checagem incompleta de symlinks dentro desses arquivos. Um symlink (atalho de arquivo) malicioso podia apontar pra um caminho fora da pasta da crate, e o Cargo seguia o link e gravava bytes em lugar arbitrario do sistema de arquivos no momento da extracao.
Na pratica, isso e um vetor de supply-chain attack. Bastava convencer um time a adicionar uma dependencia comprometida no Cargo.toml ou em uma dependencia transitiva pra ganhar capacidade de escrita fora do sandbox esperado.
Como o Cargo extrai uma crate
Quando voce roda cargo build ou cargo update, o gerenciador resolve o grafo de dependencias e baixa cada crate ausente como tarball. O conteudo e descomprimido no cache local antes de ser linkado ao build. Durante essa descompressao, o Cargo precisa decidir o que fazer com cada entrada do tar: arquivo normal, diretorio, link. A falha estava na decisao sobre symlinks.
O que muda no Rust 1.96.0
A versao 1.96.0, prevista pra 28 de maio de 2026, atualiza o Cargo pra rejeitar a extracao de qualquer symlink dentro do tarball de uma crate. A decisao e deliberadamente conservadora: em vez de tentar validar o destino do link, o Cargo simplesmente recusa todos. Crates legitimas raramente dependem de symlinks empacotados, entao o impacto pra ecossistema deve ser baixo.
O mesmo aviso de seguranca cita a CVE-2026-5222, que trata de outro detalhe do Cargo na limpeza de sufixos .git em URLs de registry usando protocolo git. As duas correcoes vem juntas em 1.96.0.
Quem esta mais exposto
Projetos que rodam cargo build automatico em pipelines de CI sao o cenario mais arriscado, principalmente quando a CI tem permissoes amplas de escrita no host. Times que mantem crates internas separadas das publicas mas usam o mesmo Cargo.toml tambem entram no radar. Maquinas de desenvolvedor com permissoes elevadas correm risco quando o usuario instala crates novas de exploracao sem revisao.
O risco que merece monitoramento
O patch resolve a falha conhecida, mas a categoria “extracao indevida de simbolos durante install” merece atencao continuada. Vale aproveitar o ciclo de atualizacao pra revisar o pipeline: rodar Cargo em sandbox quando for processar dependencias novas, pinar versoes em projetos producao e checar relatorios de auditoria automatica como cargo audit. Atualizar pra 1.96.0 nao significa que a CI esta pronta pra absorver a proxima CVE — significa que essa especifica foi neutralizada.
Reportado originalmente por Rust Blog em 2026-05-25.



