Ataque à cadeia de suprimentos compromete crate popular do Rust
Notícias

Ataque à cadeia de suprimentos compromete crate popular do Rust

Acesse nossos conteúdos exclusivos!

Um ataque à cadeia de suprimentos atingiu pacotes distribuídos pelo crates.io, o repositório oficial de bibliotecas reutilizáveis da linguagem Rust. O incidente envolveu uma versão maliciosa do popular crate arrayref e outros pacotes publicados recentemente.

Crate malicioso foi descoberto durante investigação

O caso veio à tona em 20 de agosto, quando a equipe de segurança do Rust recebeu uma denúncia sobre o proc-macro1. A investigação confirmou que o pacote possuía um script de compilação capaz de baixar um payload malicioso durante o processo de build.

A partir daí, os pesquisadores encontraram outros crates com nomes semelhantes e comportamento suspeito, incluindo proc-macro-en, aovine, arone, aronenao e tinymember. Todos foram removidos do crates.io e devem ser considerados maliciosos em qualquer versão.

O caso se tornou mais relevante quando a investigação encontrou uma versão comprometida do arrayref, uma biblioteca bastante conhecida no ecossistema Rust.

arrayref 0.3.10 foi adulterado

A versão 0.3.10 do arrayref  havia sido publicada novamente no repositório com uma dependência do proc-macro1. Ao mesmo tempo, versões legítimas recentes do crate foram marcadas como yanked, fazendo com que a versão comprometida se tornasse a opção mais recente disponível.

A equipe de segurança removeu o arrayref 0.3.10 e restaurou as versões legítimas que haviam sido retiradas.

Outros dois crates do mesmo mantenedor, internment e append-only-vec, também foram afetados. As versões comprometidas foram removidas e a conta do mantenedor foi bloqueada preventivamente.

A equipe de segurança do Rust afirma não acreditar que o responsável pelos pacotes tenha participado deliberadamente do ataque. A hipótese atual é de que o computador ou as credenciais da conta tenham sido comprometidos.

Pacotes ficaram disponíveis por pouco mais de uma hora

Apesar do período relativamente curto, os pacotes ficaram disponíveis tempo suficiente para serem baixados por projetos.

O arrayref 0.3.10 permaneceu no crates.io por 86 minutos, enquanto internment 0.8.7 ficou disponível por 90 minutos e append-only-vec 0.1.9, por 107 minutos. Por isso, a equipe recomenda que desenvolvedores verifiquem suas dependências locais.

Uma forma rápida de procurar pelos arquivos comprometidos é consultar o cache local do Cargo:

find ~/.cargo/registry/cache -type f \( \
-name 'append-only-vec-0.1.9.crate' -o \
 -name 'arrayref-0.3.10.crate' -o \
 -name 'internment-0.8.7.crate' -o \
 -name 'proc-macro1-*.crate' -o \
 -name 'proc-macro-en-*.crate' -o \
 -name 'aovine-*.crate' -o \
 -name 'arone-*.crate' -o \
 -name 'aronenao-*.crate' -o \
 -name 'tinymember-*.crate' \
\) -print

A descoberta inicial foi atribuída à equipe de pesquisa da Nextron Systems GmbH, que reportou o problema à equipe de segurança do Rust.

Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter!

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!
2656 posts

Sobre o Autor
Redator, além de estudante de engenharia e computação.
Artigos