Vulnerabilidade em bibliotecas Rust para o formato TAR, que permite a extração de arquivos de um arquivo aninhado.

Foi identificada uma vulnerabilidade na biblioteca async-tar, escrita em Rust, que fornece funções para leitura e gravação de arquivos tar (CVE-2025-62518, codinome TARmageddon). Ao descompactar um arquivo tar especialmente formatado, é possível não apenas extrair os arquivos contidos nele, mas também arquivos de um arquivo tar aninhado. A vulnerabilidade pode ser explorada para contornar sistemas de verificação de arquivos e descompactar arquivos que não passaram por verificação.

A vulnerabilidade também se manifesta em forks da biblioteca async-tar, como tokio-tar, krata-tokio-tar e astral-tokio-tar, assim como em utilitários baseados neles, por exemplo, no gerenciador de pacotes uv, desenvolvido como uma alternativa de alto desempenho ao 'pip' para projetos em Python. Entre os projetos populares que utilizam as bibliotecas vulneráveis estão o framework testcontainers para execução de contêineres docker e o runtime WebAssembly wasmCloud. No repositório crates.is, a biblioteca async-tar teve 1,3 milhões de downloads nos últimos 90 dias, enquanto tokio-tar teve 2,2 milhões e testcontainers 2,9 milhões.

A vulnerabilidade é causada pela escolha incorreta da posição ao analisar diferentes valores de tamanho nos cabeçalhos ustar e PAX. Em arquivos tar no formato PAX, para cada arquivo dentro do arquivo, são especificados dois cabeçalhos - o clássico ustar e o expandido PAX. O problema ocorre porque as bibliotecas vulneráveis, ao descompactar arquivos, em vez de calcular o deslocamento com base no tamanho do cabeçalho expandido PAX, utilizavam o tamanho do cabeçalho ustar, que está obsoleto. Com um valor zero de tamanho no cabeçalho ustar, o conteúdo subsequente do arquivo era tratado como um bloco de cabeçalho TAR válido para o próximo arquivo.

Vulnerabilidade em bibliotecas Rust para o formato TAR, que permite a extração de arquivos de um arquivo aninhado.
Vulnerabilidade em bibliotecas Rust para o formato TAR, que permite a extração de arquivos de um arquivo aninhado.

Para realizar um ataque, basta criar um arquivo TAR onde o cabeçalho ustar indica um tamanho zero e o cabeçalho para o formato PAX indica o tamanho atual, fazendo com que o conteúdo do arquivo com outro arquivo tar seja tratado como parte do arquivo principal. Um exemplo de código para criar esses arquivos está disponível no GitHub. A vulnerabilidade foi corrigida nas versões tokio-tar 0.5.6 e uv 0.9.5. Para as outras bibliotecas, as correções ainda não foram publicadas, mas patches foram preparados separadamente para astral-tokio-tar, async-tar e krata-tokio-tar.

As vulnerabilidades nas bibliotecas foram classificadas com um nível de gravidade de 8,1 em 10, pois o problema pode ser explorado para sobrescrever arquivos extraídos (em implementações vulneráveis, arquivos diferentes dos visíveis no arquivo serão extraídos). Por outro lado, a vulnerabilidade no gerenciador de pacotes uv foi marcada como não crítica, pois se um atacante puder influenciar o conteúdo do arquivo original, não há necessidade de complicar o ataque explorando a vulnerabilidade através de um arquivo aninhado, quando é possível executar código através de scripts de build no arquivo principal.

Os pesquisadores que descobriram a vulnerabilidade sugeriram vários cenários hipotéticos de ataque que permitem contornar verificações de segurança e executar código substituindo arquivos de configuração ou interferindo no processo de build. Assume-se que o arquivo enviado pode passar por uma verificação automatizada de um scanner de segurança e uma auditoria manual, durante a qual o auditor pode não perceber um arquivo aninhado estranho com outros arquivos, e então, ao descompactar com bibliotecas Rust, será extraído um conteúdo diferente do esperado.

Por exemplo, um atacante pode enviar um arquivo modificado ao repositório PyPI, que passará na verificação baseada na análise do conteúdo do arquivo principal, que contém um arquivo legítimo pyproject.toml. Ao processar este pacote usando a ferramenta uv, o legítimo pyproject.toml será substituído por uma versão maliciosa do arquivo aninhado, contendo comandos que serão executados durante a construção no computador do desenvolvedor ou no sistema de integração contínua. Da mesma forma, é possível organizar a sobrescrição de arquivos do contêiner ao extrair a imagem do contêiner usando a ferramenta testcontainers.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster