in

Duas bibliotecas Python mal-intencionadas foram capturadas roubando chaves SSH e GPG

Foram efetuadas pequenas alterações nos nomes. E isso pode ter enganado alguns desenvolvedores.

Python lidera as principais linguagens de programação 2020 do IEEE por três anos consecutivos

A equipe de segurança do Python removeu duas bibliotecas Python mal-intencionadas do PyPI (Índice de Pacotes Python). Elas foram flagradas roubando chaves SSH e GPG dos projetos dos desenvolvedores infectados.

As duas bibliotecas foram criadas pelo mesmo desenvolvedor e imitavam outras bibliotecas mais populares. Além disso, o desenvolvedor usou uma técnica chamada typosquatting para registrar nomes com aparência semelhante.

A primeira é python3-dateutil, que imitava a popular biblioteca dateutil. A segunda é jeIlyfish (o primeiro L é um I), que imitava a biblioteca jellyfish.

Os dois clones maliciosos foram descobertos no domingo, 1º de dezembro, pelo desenvolvedor de software alemão Lukas Martini. As duas bibliotecas foram removidas no mesmo dia após Martini notificar os desenvolvedores da dateutil e a equipe de segurança do PyPI.

A python3-dateutil foi criada e adicionada no PyPI dois dias antes, em 29 de novembro. Por outro lado, a biblioteca jeIlyfish estava disponível há quase um ano, desde 11 de dezembro de 2018.

Duas bibliotecas Python mal-intencionadas foram capturadas roubando chaves SSH e GPG
As duas bibliotecas infectadas. Imagem: Reprodução | ZDNET.

Duas bibliotecas Python mal-intencionadas

Segundo Martini, o código malicioso estava presente apenas na biblioteca jeIlyfish. O pacote python3-dateutil não continha seu próprio código malicioso, mas importou a biblioteca jeIlyfish, o que significa que era malicioso por associação.

O código baixou e leu uma lista de hashes armazenados em um repositório do GitLab. A natureza e o objetivo desses hashes eram inicialmente desconhecidos, pois nem Martini nem a equipe do PyPI detalharam o comportamento em profundidade antes que a biblioteca fosse prontamente removida do PyPI.

O site ZDNet pediu a Paul Ganssle, membro da equipe de desenvolvimento da dateutil, para examinar mais de perto o código malicioso e colocá-lo em perspectiva.

Ganssle disse ao ZDNet:

O código diretamente na biblioteca jeIlyfish baixa um arquivo chamado hashsum que parece bobagem de um repositório do GitLab, depois o decodifica em um arquivo Python e o executa.

Parece que [este arquivo] tenta extrair chaves SSH e GPG do computador de um usuário e enviá-las para este endereço IP: http://68.183.212.246:32258.

Se eu tivesse que adivinhar qual é o objetivo disso, diria que é descobrir em quais projetos as credenciais funcionam para que o invasor possa comprometer tais projetos.

Desenvolvedores aconselhados a revisar projetos

Ambas as bibliotecas maliciosas foram carregadas no PyPI pelo mesmo desenvolvedor, que usou o nome de usuário olgired2017, que também foi usado para a conta GitLab.

Acredita-se que o olgired2017 tenha criado o clone do dateutil na tentativa de capitalizar a popularidade da biblioteca original e aumentar o alcance do código malicioso. No entanto, isso atraiu mais atenção de mais desenvolvedores e acabou expondo toda a sua operação.

Excluindo o código malicioso, os dois pacotes eram cópias idênticas das bibliotecas originais, o que significa que teriam funcionado como as originais.

Dessa maneira, os desenvolvedores que não prestaram atenção às bibliotecas que baixaram ou importaram em seus projetos devem verificar se usaram os nomes de pacotes corretos e não utilizaram acidentalmente as versões com o código malicioso.

Assim, se eles acidentalmente usaram uma das duas, os desenvolvedores são aconselhados a alterar todas as chaves SSH e GPG que usaram no ano passado.

Essa é a terceira vez que a equipe do PyPI intervém para remover bibliotecas Python mal-intencionadas do repositório oficial. Incidentes semelhantes ocorreram em setembro de 2017 (dez bibliotecas), outubro de 2018 (12 bibliotecas) e julho de 2019 (três bibliotecas).

Fonte: ZDNET

Leia também:

Por que o Python é considerado a melhor linguagem de programação à frente do JavaScript e do C++

Escrito por Leonardo Santana

Profissional da área de manutenção e redes, astrônomo amador, eletrotécnico e apaixonado por TI desde o século passado.