Mais de 170.000 usuários teriam sido afetados por um ataque usando infraestrutura Python falsa com “exploração bem-sucedida de várias vítimas”. De acordo com a CheckMarx, membros da organização Top.gg GitHub, bem como outros desenvolvedores, foram alvos, e tudo dependia de várias técnicas de ataque à cadeia de suprimentos para distribuir pacotes Python PyPI infectados por malware.
Esse malware roubou dados dos navegadores das pessoas, do Discord (o aplicativo de bate-papo preferido dos membros Top.gg), carteiras de criptomoedas e arquivos que correspondiam a certas palavras-chave. Até o momento, não está claro para onde esses dados foram enviados.
Havia várias pontas para esse ataque notavelmente complicado: clones de pacotes Python populares como Colorama, um domínio doppelganger ou typosquatted para pacotes Python e ofuscação de código. Também são relatadas invasões de contas entre membros confiáveis da comunidade do GitHub. Todas essas táticas foram usadas para roubar com sucesso os dados do usuário de um número indeterminado de desenvolvedores.
Mais de 170 mil usuários prejudicados por falhas em pacotes Python
Os pacotes Python maliciosos foram carregados em novembro de 2022, mas o ataque só começou a sério em fevereiro passado, quando o domínio doppelganger foi registrado. O domínio oficial do PyPI é pythonhosted.org, embora o domínio pypihosted semelhante (agora retirado da nuvem pela Cloudflare) estivesse disponível e o invasor o registrasse. O invasor se certificou de que a URL real e as cadeias de caracteres de URL falsas pareciam quase idênticas. Na verdade, a única diferença entre os dois era o nome de domínio, pythonhosted versus pypihosted.
O falso site do pacote Python hospedou a popular ferramenta Colorama com alguns malwares adicionados. O código é, na verdade, apenas uma linha curta que foi anexada à segunda linha, mas com toneladas de espaços para que ficasse invisível sem rolar para a direita. Este código extra instala o malware real, que é ofuscado ainda mais para esconder seu verdadeiro propósito. O malware também sobrevive a reinicializações.
A próxima etapa foi substituir instâncias do domínio PyPI genuíno pela URL doppelganger no GitHub. Pip, o gerenciador de pacotes para Python, permite que os codificadores escolham uma URL específica para pegar dependências, que é o que tornou isso possível.
Projeto
Não é qualquer um que pode fazer um compromisso com um grande projeto do GitHub como 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 do editor foi comprometida, mas pode ter sido por meio de cookies roubados, o que permitiria que o invasor obtivesse acesso sem precisar da senha.
Por meio de sua conta no GitHub, o invasor fez um compromisso com Top.gg que aparentemente mudou uma coisa, mas também inseriu o pacote falso da Colorama entre várias URLs reais, fazendo com que ele se destacasse menos. Em repositórios mantidos por outras contas comprometidas, o invasor fez commits onde vários pacotes hospedados no site real foram adicionados junto com o pacote falso da Colorama. Isso também ajudou a ocultar a existência da 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, Top.gg usuários perceberam que o repositório do GitHub estava comprometido e informaram ao editor-sintaxe que ele havia feito a confirmação que adicionou a URL doppelganger. Ele primeiro disse “eu nem contribuí para esse repositório”, mas uma vez que um usuário mostrou a ele que sua conta definitivamente fez isso, ele respondeu “mano o quê”.
É impossível saber quantos usuários exatamente podem ter sido afetados, mas o fato de que o malware chegou ao repositório GitHub de um servidor Discord de 170.000 pessoas sugere que poderia ter sido pelo menos milhares ou até dezenas de milhares.
Os desenvolvedores têm feito esforços 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 quanto este.