A equipe da Checkmarx Research descobriu uma sofisticada campanha de ataque que aproveitou a infraestrutura Python falsa para atingir a cadeia de suprimentos de software, afetando mais de 170.000 usuários, incluindo a organização Top.gg GitHub e vários desenvolvedores individuais. Esse ataque multifacetado envolveu técnicas como a tomada de conta por meio de cookies de navegador roubados, contribuições de código malicioso verificadas, o estabelecimento de um espelho Python personalizado e a disseminação de pacotes nocivos através do registro PyPi.
PRINCIPAIS INSIGHTS
- Ataque silencioso à cadeia de suprimentos de software: Os invasores orquestraram um ataque silencioso à cadeia de suprimentos de software, empregando várias táticas para roubar informações confidenciais de vítimas desavisadas. Isso incluiu a criação de ferramentas maliciosas de código aberto com descrições atraentes para atrair vítimas, a maioria das quais provavelmente foi redirecionada de mecanismos de busca.
- O Uso de um Espelho Python Falso: Uma pedra angular desta campanha foi a distribuição de uma dependência maliciosa por meio de uma infraestrutura Python falsificada, que estava ligada a projetos populares no GitHub e pacotes Python legítimos. Os invasores não apenas sequestraram contas do GitHub para espalhar pacotes Python maliciosos, mas também se envolveram em engenharia social para ampliar seu alcance.
- Uma carga útil evasiva de vários estágios: o ataque apresentou uma carga útil complexa de vários estágios projetada para coletar dados valiosos, como senhas e credenciais de sistemas infectados, antes de exfiltrar esses dados para a infraestrutura dos invasores. Notavelmente, um espelho falso de pacotes Python foi implantado, distribuindo uma versão envenenada do pacote “colorama” amplamente usado.
Uma vítima notável compartilhou sua experiência de encontrar atividades suspeitas relacionadas ao pacote “colorama“, o que acabou levando à percepção de que eles haviam sido hackeados. Essa conta ressalta a discrição e o engano empregados na campanha, com os invasores aproveitando espelhos Python falsos e typosquatting para enganar os usuários e espalhar malware por meio de repositórios maliciosos do GitHub.
A ESPINHA DORSAL TÉCNICA DO ATAQUE
O espelho Python falso, aparecendo sob o domínio “files[.] pypihosted[.] org“, imitou o espelho oficial do pacote Python, desempenhando um papel crucial no sucesso do ataque. Ao hospedar uma versão adulterada da “colorama” carregada de código malicioso e utilizar identidades roubadas do GitHub para cometer alterações em repositórios respeitáveis, os invasores mostraram uma compreensão sofisticada das vulnerabilidades da cadeia de suprimentos de software.
TÉCNICAS DE ATAQUE USADAS
O ataque à cadeia de suprimentos de software aproveitando a falsa infraestrutura Python utilizou uma complexa gama de técnicas para comprometer mais de 170.000 usuários. Aqui está um detalhamento das principais técnicas de ataque usadas:
- Aquisição de conta por meio de cookies roubados do navegador: Os invasores obtiveram acesso não autorizado às contas do GitHub roubando cookies de sessão. Isso permitiu que eles ignorassem as medidas de autenticação e executassem atividades maliciosas sem a necessidade de saber as senhas das contas.
- Contribuições de código malicioso com confirmações verificadas: Utilizando as contas sequestradas, os invasores contribuíram com código malicioso para projetos respeitáveis. Essas contribuições muitas vezes apareciam como legítimas devido ao uso de confirmações verificadas, tornando-as mais difíceis de detectar.
- Configurando um espelho personalizado do Python: Um elemento central da campanha foi o estabelecimento de um espelho de pacote Python falsificado. Este espelho hospedava versões envenenadas de pacotes Python populares, incluindo uma versão adulterada de “colorama” que continha código malicioso.
- Publicando pacotes maliciosos no Registro do PyPi: Os invasores publicaram pacotes nocivos no Python Package Index (PyPi), explorando a confiança dentro da comunidade Python neste repositório. Esses pacotes geralmente tinham descrições de clickbait para atrair vítimas, muitas das quais eram redirecionadas de mecanismos de busca.
- Typosquatting e Fake Python Mirror para distribuição de pacotes: O domínio “files[.] pypihosted[.] org” foi registrado como parte do ataque, habilmente typosquating o domínio oficial do espelho Python para enganar os usuários a baixar pacotes maliciosos.
- Engenharia social para aumentar a credibilidade e visibilidade: Ao assumir contas respeitáveis do GitHub, os invasores foram capazes de estrelar vários repositórios maliciosos, aumentando sua visibilidade e a probabilidade de outros usuários confiarem e baixarem dessas fontes.
- Carga maliciosa evasiva de vários estágios: o ataque implantou uma carga útil de vários estágios que inicialmente parecia benigna, mas foi projetada para coletar e exfiltrar dados valiosos, como senhas e credenciais, de sistemas infectados. Essa carga útil era sofisticada, empregando técnicas de ofuscação e evasão para evitar a detecção.
Cada uma dessas técnicas demonstra a profunda compreensão dos invasores sobre engenharia social e vulnerabilidades técnicas dentro da cadeia de suprimentos de software. A combinação desses métodos permitiu um ataque altamente eficaz e prejudicial.
HOSPEDANDO UMA ‘COLORAMA’ ENVENENADA
Os invasores hospedaram uma versão envenenada da “colorama”, um pacote amplamente usado na comunidade Python com mais de 150 milhões de downloads mensais. Veja como eles executaram essa parte de seu ataque sofisticado:
- Copiando e modificando “Colorama”: Os agentes de ameaças começaram copiando o pacote legítimo “colorama” e inserindo código malicioso nele. Esse código foi projetado para fazer parte da funcionalidade do pacote, dificultando a detecção sem uma inspeção completa.
- Ocultando o código malicioso: A carga prejudicial foi ocultada dentro do pacote “colorama” modificado usando space-padding. Esse método empurrou o código mal-intencionado para fora da tela nos editores de texto, exigindo que os usuários rolassem horizontalmente para descobri-lo. Essa técnica diminuiu significativamente a probabilidade de o conteúdo malicioso ser detectado durante a revisão casual.
- Usando um domínio Typosquatted para hospedagem: A versão modificada e maliciosa de “colorama” foi hospedada em um espelho Python falso. Esse espelho era acessível por meio de um domínio que se assemelhava muito ao serviço oficial de hospedagem de pacotes Python, aproveitando o typosquatting para enganar os usuários. O domínio “files[.] pypihosted[.] org” foi usado para este fim, imitando o legítimo “files.pythonhosted.org”.
- Distribuindo o pacote envenenado: Para espalhar a “colorama” envenenada, os atacantes manipularam dependências do projeto. Eles cometeram alterações em projetos respeitáveis no GitHub, modificando os arquivos para incluir a versão do pacote malicioso hospedado em seu espelho falso. Isso garantiu que, quando o projeto fosse instalado ou atualizado, a “colorama” envenenada seria baixada e executada.
requirements.txt
- Distribuindo o pacote envenenado: Para espalhar a “colorama” envenenada, os atacantes manipularam dependências do projeto. Eles cometeram alterações em projetos respeitáveis no GitHub, modificando os arquivos para incluir a versão do pacote malicioso hospedado em seu espelho falso. Isso garantiu que, quando o projeto fosse instalado ou atualizado, a “colorama” envenenada seria baixada e executada.
- Evadindo a detecção: O uso estratégico de um domínio typosquatted, juntamente com o método de ocultar código malicioso dentro de um pacote legítimo, tornou este ataque particularmente evasivo. Os esforços dos invasores para misturar o pacote malicioso em dependências normais tornaram desafiador para os usuários e ferramentas automatizadas identificar a ameaça.
Ao hospedar esse pacote envenenado “colorama” em sua falsa infraestrutura Python e vinculá-lo a projetos populares, os invasores foram capazes de executar um ataque silencioso à cadeia de suprimentos, comprometendo os sistemas de desenvolvedores e usuários desavisados. Esse ataque ressalta a importância de verificar as fontes de dependências de software e a necessidade de vigilância diante de ameaças cibernéticas cada vez mais sofisticadas.

A implantação do pacote malicioso no ataque usando a falsa infraestrutura Python envolveu um sofisticado processo de várias etapas. Aqui está um detalhamento das etapas pelas quais o pacote malicioso, particularmente o envenenado “colorama”, foi implantado e executado nos sistemas das vítimas:
ETAPA 1: DOWNLOAD INICIAL E EXECUÇÃO
- Repositório mal-intencionado ou download de pacote: o usuário desavisado clona um repositório ou baixa um pacote que contém uma dependência mal-intencionada. Essa dependência aponta para o pacote “colorama” envenenado hospedado no falso espelho Python dos invasores (typosquatted domain “files[.] pypihosted.org”).
- Execução de código malicioso inicial: Após a instalação ou atualização, o pacote malicioso “colorama” executa sua carga útil, que inclui código malicioso adicional. Esta etapa estabelece as bases para uma maior exploração.
ESTÁGIO 2: ATIVAÇÃO DE CÓDIGO MAL-INTENCIONADO
- Código idêntico com trecho malicioso: O pacote “colorama” contém código idêntico à versão legítima, com exceção de um pequeno trecho malicioso. Este trecho foi inicialmente localizado dentro de um arquivo aparentemente inócuo, mas foi estrategicamente colocado para garantir a execução.
- Ofuscação e execução de mais código mal-intencionado: o invasor usou espaço em branco significativo para empurrar o código mal-intencionado para fora da tela em editores de texto, exigindo rolagem horizontal para descoberta. Esse código, uma vez executado, busca outra parte do código Python de um servidor remoto, que instala as bibliotecas necessárias e descriptografa dados codificados.
ESTÁGIO 3: ENTREGA DO PAYLOAD
- Buscando código Python ofuscado adicional: O malware progride para buscar mais código Python ofuscado de outro link externo. Este código é então executado usando a função “exec” do Python, iniciando a próxima fase do ataque.
ETAPA 4: COMPROMETIMENTO DO SISTEMA E COLETA DE DADOS
- Técnicas avançadas de ofuscação: Técnicas como o uso de cadeias de caracteres não inglesas, compactação e nomes de variáveis enganosos complicam a análise e a compreensão do código.
- Implantação de carga maliciosa final: o código verifica o sistema operacional do host comprometido, seleciona uma pasta aleatória e um nome de arquivo para o código Python mal-intencionado final e o recupera de um servidor remoto.
- Mecanismo de persistência: O malware modifica o registro do Windows para criar uma nova chave de execução, garantindo que o código malicioso seja executado sempre que o sistema for reiniciado. Isso permite que o malware mantenha sua presença no sistema comprometido.
ETAPA 5: EXFILTRAÇÃO DE DADOS
- Amplos recursos de roubo de dados: A carga útil final revela a capacidade do malware de atingir uma ampla gama de aplicativos e roubar informações confidenciais. Isso inclui dados de navegadores da web, Discord, carteiras de criptomoedas, sessões do Telegram e muito mais.
- Registro de teclas e roubo de arquivos: um componente de keylogging captura as teclas pressionadas pela vítima e um ladrão de arquivos procura arquivos com palavras-chave específicas, visando diretórios como Desktop e Downloads.
- Exfiltração para o servidor do invasor: Os dados roubados, juntamente com os arquivos compactados em arquivos ZIP, são carregados no servidor do invasor. Várias técnicas, incluindo serviços anônimos de compartilhamento de arquivos e solicitações HTTP diretas, são usadas para exfiltração de dados.
Esses estágios ilustram o planejamento e a execução meticulosos do ataque, mostrando a sofisticação técnica dos atacantes e a compreensão das dependências de software e do comportamento humano. A abordagem de vários estágios não apenas facilitou a implantação da carga maliciosa, mas também ajudou a evitar a detecção, tornando o ataque particularmente prejudicial.
O ataque envolvendo a falsa infraestrutura Python e o pacote envenenado “colorama” também viu a publicação de vários outros pacotes maliciosos no Python Package Index (PyPI). Esses pacotes faziam parte da estratégia dos invasores de distribuir malware por meio do ecossistema de pacotes Python. Abaixo está uma lista de alguns dos pacotes envolvidos nesta campanha, juntamente com seus números de versão e os nomes de usuário dos editores:
- jzyrljroxlca Versão 0.3.2, publicada por usuário pypi/xotifol394 em 21-Jul-23
- WKQUBSXEKBXN Versão 0.3.2, publicada por usuário pypi/xotifol394 em 21-Jul-23
- Eoerbisjxqyv Versão 0.3.2, publicada por usuário pypi/xotifol394 em 21-Jul-23
- Lyfamdorksgb Versão 0.3.2, publicada por usuário pypi/xotifol394 em 21-Jul-23
- Hnuhfyzumkmo Versão 0.3.2, publicada por usuário pypi/xotifol394 em 21-Jul-23
- HBCXUYPPHRNK Versão 0.3.2, publicada por usuário pypi/xotifol394 em 20-Jul-23
- dcrywkqddo Versão 0.4.3, publicada por usuário pypi/xotifol394 em 20-Jul-23
- MJPoytwngddh Versão 0.3.2, publicada por usuário pypi/poyon95014 em 21-Jul-23
- EEAJHJMCLAKF Versão 0.3.2, publicada pelo usuário pypi/tiles77583 em 21-Jul-23
- yocolor Versão 0.4.6, publicada por user pypi/felpes em 05-Mar-24
- coloriv Versão 3.2, publicada pelo usuário pypi/felpes em 22-Nov-22
- cores-it Versão 2.1.3, publicada por usuário pypi/felpes em 17-Nov-22
- pylo-cor Versão 1.0.3, publicada por usuário pypi/felpes em 15-Nov-22
- tipo-cor Versão 0.4, publicada pelo usuário felipefelpes em 01-Nov-22
Esses pacotes, incluindo variações do pacote “colorama” e outros com nomes obscuros ou clickbait, faziam parte de uma estratégia mais ampla para distribuir malware. Os invasores empregaram esses pacotes como vetores para entregar código malicioso aos sistemas das vítimas desavisadas, explorando a confiança depositada no ecossistema PyPI e o uso rotineiro desses pacotes em projetos Python.
Esta lista fornece um instantâneo dos pacotes maliciosos publicados pelos invasores, ilustrando a escala e a diversidade de seus esforços para se infiltrar na cadeia de suprimentos de software. Usuários e desenvolvedores são instados a ter cautela e realizar uma verificação completa antes de incorporar pacotes de terceiros em seus projetos.
Esta campanha exemplifica as estratégias avançadas que os agentes mal-intencionados adotam para se infiltrar e comprometer plataformas confiáveis como PyPI e GitHub. Ele serve como um lembrete gritante da necessidade de diligência ao instalar pacotes e repositórios, mesmo de fontes aparentemente confiáveis. A vigilância, a verificação completa das dependências e a manutenção de medidas de segurança robustas são primordiais para mitigar os riscos representados por ataques tão sofisticados.