No gerenciador de pacotes Cargo, utilizado para gerenciar pacotes e compilar projetos na linguagem Rust, foram identificadas duas vulnerabilidades que podem ser exploradas ao baixar pacotes especificamente formatados de repositórios de terceiros (afirma-se que os usuários do repositório oficial crates.io não foram afetados pelo problema). A primeira vulnerabilidade (CVE-2022-36113) permite sobrescrever os primeiros dois bytes de qualquer arquivo, conforme permitido pelas permissões atuais. A segunda vulnerabilidade (CVE-2022-36114) pode ser utilizada para esgotar o espaço disponível no disco.
As vulnerabilidades serão corrigidas na versão Rust 1.64, programada para 22 de setembro. As vulnerabilidades foram classificadas como de baixo risco, pois um dano semelhante ao usar pacotes não verificados de repositórios de terceiros pode ser causado pela funcionalidade padrão de executar seus próprios manipuladores de scripts de construção ou macros de procedimentos incluídos no pacote. No entanto, as questões mencionadas diferem porque sua exploração ocorre na fase de descompactação do pacote após o download (sem compilação).
Em particular, após o download do pacote, o cargo descompacta seu conteúdo no diretório ~/.cargo e salva um sinal de descompactação bem-sucedida no arquivo .cargo-ok. A essência da primeira vulnerabilidade é que o criador do pacote pode colocar um link simbólico chamado .cargo-ok dentro dele, o que fará com que o texto "ok" seja gravado no arquivo para o qual o link aponta.
A segunda vulnerabilidade é causada pela falta de um limite no tamanho dos dados extraídos do arquivo comprimido, o que pode ser usado para criar "zip bombs" (no arquivo comprimido podem estar dados que permitem atingir o nível máximo de compressão para o formato zip — cerca de 28 milhões de vezes; nesse caso, por exemplo, um arquivo zip especialmente preparado de 10 MB levará à descompressão de cerca de 281 TB de dados).
Fonte: opennet.ru
