O repositório de pacotes Python PyPI (Python Package Index) suspendeu temporariamente o registro de novos usuários e a criação de novos projetos devido ao contínuo carregamento em massa de pacotes maliciosos durante um ataque automatizado. A restrição foi imposta após 566 pacotes com código malicioso terem sido carregados no repositório nos dias 26 e 27 de março, estilizados como 16 bibliotecas populares do Python.
Os nomes dos pacotes são formados utilizando type squatting, ou seja, a atribuição de nomes semelhantes que diferem por caracteres isolados, como temsorflow em vez de tensorflow, requyests em vez de requests, asyincio em vez de asyncio, etc. Durante esses ataques, os criminosos contam com usuários desatentos que cometem erros de digitação ou não percebem as diferenças nos nomes ao procurar ou clicar em links deixados em fóruns e chats onde os invasores deixam instruções enganosas.
Os pacotes maliciosos são baseados em código de bibliotecas legítimas, incorporando modificações específicas que instalam malware no sistema, que busca e envia dados confidenciais e arquivos contendo senhas, chaves de acesso, carteiras de criptomoedas, tokens e cookies de sessão. O código malicioso é inserido no arquivo setup.py, que é executado durante a instalação do pacote. Durante a ativação, a modificação executa o download de componentes principais maliciosos de fontes externas. servidor.
Em dois dias, os criminosos carregaram 29 variantes maliciosas do pacote tensorflow, 26 do BeautifulSoup, 26 do PyGame, 15 do SimpleJson, 38 do Matplotlib, 26 do PyTorch, 67 do CustomTKInter, 28 do selenium, 17 do playwright, 15 do asyncio e 67 do requirements. Além disso, foram identificados casos isolados de falsificação das bibliotecas requests, py-cord, colorama, capmonstercloudclient, pillow e bip-utils.
Destaca-se o ataque à comunidade Top.gg, que possui 170 mil usuários. Durante o ataque, o invasor conseguiu comprometer a conta de GitHub de um dos desenvolvedores do top.gg, através do roubo de cookies do navegador. O atacante também adicionou três pacotes ao repositório PyPI e registrou domínios pypihosted.org e pythanhosted.org, onde foi organizado um espelho para a distribuição da dependência maliciosa aos pacotes.
Através de uma conta do GitHub invadida no repositório do projeto top.gg, onde estava hospedada a biblioteca Python sobre a API Top.gg, foi feita uma alteração que adicionou um arquivo requirements.txt. Este arquivo continha uma lista de dependências a serem baixadas, que incluía um link para um clone malicioso do pacote 'colorama', hospedado em um domínio falso, pypihosted.org, com a expectativa de que os desenvolvedores não percebessem a diferença em relação ao domínio legítimo pythonhosted.org, de onde os pacotes do PyPI são normalmente baixados.
Fonte: opennet.ru
