.
Mais de 170.000 usuários foram afetados por um ataque usando infraestrutura Python falsa com “exploração bem-sucedida de múltiplas vítimas”.
De acordo com CheckMarx, o ataque teve como alvo a organização Top.gg GitHub, bem como outros desenvolvedores. O invasor recorreu a várias técnicas de ataque à cadeia de suprimentos para distribuir pacotes Python PyPI infectados por malware.
O malware roubou dados de navegadores, Discord (o aplicativo de bate-papo preferido dos membros do Top.gg), carteiras criptografadas e arquivos que correspondiam a determinadas palavras-chave. No momento, não está claro para onde esses dados foram enviados.
Houve várias vertentes para o ataque extremamente complicado – clones de pacotes Python populares, como Colorama, um domínio doppelganger ou typosquatted para pacotes Python. Também foram relatadas invasões de contas de membros confiáveis da comunidade GitHub. Todas essas táticas foram usadas para roubar com sucesso dados de usuários de um número indeterminado de desenvolvedores.
Os pacotes Python maliciosos foram carregados em novembro de 2022, mas o ataque só começou para valer em fevereiro passado, quando o domínio doppelganger foi registrado. O domínio PyPI oficial é pythonhosted.org, embora o domínio pypihosted semelhante (agora retirado pela Cloudflare) estivesse aberto e o invasor o registrasse. O invasor certificou-se de que o URL real e as strings de URL falsas parecessem quase idênticas. Na verdade, a única diferença entre os dois era o nome de domínio, pythonhosted versus pypihosted.
O site falso do pacote Python hospedava a popular ferramenta Colorama com alguns malwares adicionados. O código é, na verdade, apenas uma linha curta anexada à segunda linha, mas com vários espaços para que fique invisível sem rolar para a direita. Esse código extra instala o malware real, que é ofuscado ainda mais para ocultar seu verdadeiro propósito. O malware também sobrevive a reinicializações.
A próxima etapa foi substituir as instâncias do domínio PyPI genuíno pela URL doppelganger no GitHub. Pip, o gerenciador de pacotes do Python, permite que os codificadores escolham uma URL específica para capturar dependências, o que tornou isso possível.
É claro que nem qualquer um pode se comprometer com um grande projeto do GitHub como o Top.gg, e é por isso que o invasor invadiu várias contas do GitHub, como editor-syntax, um dos mantenedores do Top.gg. Não está claro como a conta da sintaxe do editor foi comprometida, mas pode ter sido através de cookies roubados, o que teria permitido ao invasor obter acesso sem precisar da senha.
Por meio de sua conta no GitHub, o invasor fez um commit no Top.gg que aparentemente mudou uma coisa, mas também inseriu o pacote Colorama falso entre vários URLs reais, fazendo com que ele se destacasse menos. Em repositórios mantidos por outras contas comprometidas, o invasor realizou commits onde vários pacotes hospedados no site real foram adicionados junto com o pacote falso do Colorama. Isso também ajudou a ocultar a existência do URL doppelganger porque é fácil ignorar uma única alteração de nome de domínio entre várias linhas de código alterado.
Em 3 de março, os usuários do Top.gg perceberam que o repositório GitHub estava comprometido e informaram ao editor-syntax que ele havia feito o commit que adicionou a URL doppelganger. Ele primeiro disse “Eu nem contribuí para esse repositório”, mas quando um usuário mostrou a ele que sua conta definitivamente fez isso, ele respondeu “mano, o que?”
É impossível saber exatamente quantos usuários podem ter sido afetados, mas o fato de o malware ter chegado ao repositório GitHub de um servidor Discord com 170.000 servidores sugere que poderiam ter sido pelo menos milhares ou até dezenas de milhares.
Os desenvolvedores vêm se esforçando há anos para garantir a integridade de gerenciadores de pacotes de código aberto como o PyPI, mas certamente é difícil se defender contra ataques que utilizam tantos vetores como este. ®
.