Nota: O seguinte artigo irá ajudá-lo com: Pacote Python antigo volta à vida e entrega carga maliciosa
Um ataque à cadeia de suprimentos recentemente detectado abusou de um pacote Python antigo, mas legítimo, para entregar uma carga maliciosa. Leia mais sobre como o invasor conseguiu fazer isso e como se proteger disso.
Os pacotes Python geralmente são atualizados com frequência à medida que seus desenvolvedores adicionam novas funcionalidades ou recursos, removem bugs ou aumentam a estabilidade.
Um antigo pacote Python chamado “ctx”, não atualizado desde 2014, de repente voltou à vida com novas atualizações. Mas, conforme descoberto por Yee Ching Tok, ISC Handler no SANS.edu Internet Storm Center, o novo pacote continha conteúdo malicioso entregue por um agente de ameaças.
Qual foi a carga maliciosa?
Os pacotes Python podem ser atualizados usando o comando “pip” muito facilmente na linha de comando. Aqueles que precisam atualizar pacotes Python – sejam eles es de sistema, desenvolvedores, equipe de TI ou usuários finais – geralmente consideram isso como garantido e livre de riscos.
VEJA: Violação de senha: Por que cultura pop e senhas não se misturam (PDF grátis) (TechRepublic)
Ctx é uma biblioteca Python para ar dicionários Python usando notação de ponto. O pacote ctx original deixou de ser atualizado em dezembro de 2014 com a versão 0.1.2 (Figura A).
Figura A
A nova página ctx em pypi.org revela novas mudanças, com a v0.2.6 lançada em 21 de maio deste ano (Figura B).
Figura B
Mudanças de versão estranhas devem ser um primeiro aviso sobre a página. Qualquer desenvolvedor comum provavelmente usaria um bom versionamento e não pularia de 0.1.2 para 0.2.6.
Como pode ser visto na Figura B, a atualização de maio de 2022 consistiu em pouco mais do que a de 2014, embora uma análise cuidadosa dos dois arquivos tenha revelado que algumas linhas de código foram adicionadas (Figura C).
Figura C
De acordo com Tok, esse código adicional tenta “recuperar o ID da chave de o da AWS, o nome do computador e a chave de o secreta da AWS quando um dicionário é criado”.
O manipulador ISC relata que “o criminoso está tentando obter todas as variáveis de ambiente, codificá-las em Base64 e encaminhar os dados para um aplicativo da web sob o controle do criminoso” (Figura D).
Figura D
A Python Security estima que 27.000 versões maliciosas deste software foram baixadas do PyPI, com a maioria dos s “excedentes” sendo conduzidos por espelhos.
Foi um incidente isolado?
A pesquisa feita no domínio do aplicativo web fraudulento levou o pesquisador a outro pedaço de código, desta vez não em Python, mas em PHP hospedado no GitHub (Figura E).
Figura E
Dado que esse código também tenta roubar IDs de chave de o da AWS, parece altamente plausível que esse ataque tenha sido feito pelos mesmos invasores.
Como isso aconteceu?
O mantenedor original do pacote ctx usou um endereço de e-mail personalizado que pode ser visto no código (Figura F).
Figura F
O domínio registrado por essa pessoa expirou recentemente e foi registrado pelo invasor em 14 de maio. Isso permitiu que o invasor criasse o mesmo endereço de e-mail e redefinisse a senha antes de assumir o controle total do repositório de pacotes e enviar código malicioso.
Como as pessoas podem se proteger?
Os mantenedores de pacotes devem sempre verificar se suas credenciais são seguras e devem habilitar a autenticação multifator. Se um invasor obtiver o a credenciais válidas para manutenção de pacotes, se a MFA estiver habilitada, ele não poderá atualizar o repositório com conteúdo mal-intencionado.
es de sistema, funcionários de TI e desenvolvedores não devem aceitar cegamente os pacotes atualizados. As diferenças no código devem ser analisadas antes de implantar qualquer atualização.
Embora isso possa parecer difícil quando as diferenças podem estar espalhadas por centenas ou milhares de linhas de código, o foco deve ser colocado em algumas funções selecionadas que certamente seriam usadas pelos invasores. Código envolvendo comunicações de rede, ou partes do código sendo ofuscadas, devem gerar alarmes.
Novas atualizações devem ser testadas com verificações de conteúdo comportamental em um ambiente de teste seguro. Uma ferramenta que não tem negócios se comunicando em uma rede que de repente tem deve levantar bandeiras vermelhas.
Aprenda com mais de uma dúzia de cursos de treinamento online da TechRepublic Academy para desenvolvedores Python iniciantes agora.