Hack Alerta

Hackers Backdoor SDK Python Telnyx no PyPI para Roubar Credenciais de Nuvem e Dev

O TeamPCP comprometeu o SDK Python da Telnyx no PyPI, usando esteganografia em arquivos WAV para esconder credenciais. Versões 4.87.1 e 4.87.2 foram afetadas, exigindo rotação de credenciais e remoção de backdoors persistentes em sistemas Windows, Linux e Kubernetes.

Ataque à Cadeia de Suprimentos Python Alcança SDK Telnyx

Um pacote Python amplamente utilizado foi transformado silenciosamente em uma arma, deixando a maioria dos desenvolvedores afetados sem saber que o comprometimento havia ocorrido. Em 27 de março de 2026, um ator de ameaças conhecido como TeamPCP carregou duas versões maliciosas do SDK Python da Telnyx no PyPI, o repositório principal onde desenvolvedores Python baixam pacotes de software.

As versões comprometidas, 4.87.1 e 4.87.2, permaneceram ativas por cerca de quatro horas antes que o PyPI intervenisse e colocasse ambas em quarentena. Durante essa janela curta, qualquer desenvolvedor ou sistema que executou uma simples instalação de pacote poderia ter sido infectado silenciosamente, sem aviso, sem erro e sem sinal visível de que algo estava errado.

Escopo e Impacto do Comprometimento

O pacote Telnyx não é uma biblioteca pequena ou obscura. Ele puxa aproximadamente 750.000 downloads por mês, o que significa que o potencial de explosão deste ataque se estende muito além dos usuários diretos para cada projeto, pipeline e serviço que depende dele. O que torna este ataque especialmente preocupante é o quão preciso ele foi.

Apenas um único arquivo dentro do pacote foi alterado. Todo o resto do pacote era byte por byte idêntico à versão limpa. O código malicioso foi executado no momento em que qualquer aplicativo importou a biblioteca, exigindo zero cliques, zero configuração e zero interação do usuário.

Análise Técnica da Cadeia de Infecção

Os analistas da Hexastrike identificaram o ataque como parte de uma campanha de cadeia de suprimentos mais ampla e de movimento rápido pelo TeamPCP, um grupo ligado ao ator de ameaças mais antigo TeamTNT. Os pesquisadores notaram que o mesmo grupo já havia atingido Trivy da Aqua Security, Checkmarx, LiteLLM e mais de 46 pacotes npm em apenas nove dias.

Cada novo ataque mostrou mais sofisticação que o anterior, e o comprometimento da Telnyx é a versão mais completa que eles analisaram até agora. O ataque seguiu uma estrutura de três etapas. Primeiro, o pacote trojanizado acionou um carregador específico da plataforma. Segundo, esse carregador buscou um payload oculto de um servidor remoto, escondido dentro de um arquivo de áudio WAV usando esteganografia.

Terceiro, o payload decodificado implantou um coletor de credenciais completo que coletou silenciosamente chaves SSH, credenciais de provedores de nuvem, segredos do Kubernetes, configurações de banco de dados, carteiras de criptomoedas e arquivos de ambiente antes de criptografar tudo e enviá-lo para um servidor controlado pelo atacante.

Mecanismo de Infeção Furtivo

O ponto de entrada para todo o ataque foi uma modificação dentro de um arquivo chamado _client.py. Quando o Python carrega a biblioteca Telnyx, ele executa automaticamente o código dentro desse arquivo. O TeamPCP adicionou duas chamadas de função na parte inferior, setup() para sistemas Windows e FetchAudio() para Linux e macOS.

Ambas as funções verificaram o sistema operacional primeiro e pararam silenciosamente se estivessem na plataforma errada. Todos os erros possíveis foram capturados e ignorados silenciosamente usando um manipulador de exceção em branco, o que significa que o aplicativo executando a biblioteca nunca travaria ou lançaria um alerta.

Esconder o Payload em Arquivos de Áudio

Para esconder o que essas funções realmente faziam, o atacante envolveu cada string sensível dentro de um auxiliar de codificação base64. URLs, caminhos de pasta, nomes de arquivos e cabeçalhos foram todos codificados para que uma rápida olhada no código não revelasse o ataque. Uma vez decodificado, o caminho Windows baixou um arquivo chamado hangup.wav de um servidor de comando e controle em 83.142.209.203:8080.

Aquele arquivo não era realmente áudio. Era um contêiner WAV válido escondendo um binário executável dentro de suas quadros de áudio usando esteganografia. O binário foi extraído, decodificado usando uma chave XOR e escrito na pasta Inicialização do Windows sob o nome msbuild.exe, um nome emprestado de uma ferramenta legítima da Microsoft para evitar suspeitas.

Comportamento em Linux e macOS

No Linux e macOS, a abordagem foi diferente, mas igualmente furtiva. Em vez de soltar um arquivo, o código decodificou um grande payload Python armazenado em uma variável e o executou em um processo filho desanexado. Esse processo continuou a ser executado mesmo após o aplicativo pai fechar.

Ele baixou um segundo arquivo WAV chamado ringtone.wav, puxou o coletor Python oculto dos dados de áudio e o executou inteiramente na memória, nunca escrevendo o script em disco. Uma vez que o coletor terminou de coletar credenciais, os resultados foram criptografados com AES-256-CBC e a chave de sessão foi envolvida usando uma chave pública RSA-4096 fixa.

Medidas de Mitigação e Resposta a Incidentes

As organizações devem tratar qualquer instalação das versões 4.87.1 ou 4.87.2 como um comprometimento confirmado e iniciar a resposta a incidentes imediatamente. Todas as credenciais acessíveis dos sistemas afetados devem ser rotacionadas, incluindo chaves SSH, credenciais AWS, GCP e Azure, tokens do Kubernetes, credenciais do Docker, senhas de banco de dados, chaves de API e quaisquer segredos armazenados em arquivos de ambiente.

Simplesmente desinstalar o pacote não remove o backdoor persistente. No Linux, o arquivo ~/.config/sysmon/sysmon.py e seu serviço systemd associado devem ser removidos manualmente. No Windows, msbuild.exe na pasta Inicialização e o arquivo oculto .lock devem ser excluídos.

Em ambientes Kubernetes, quaisquer pods nomeados node-setup-* em kube-system devem ser auditados e removidos, e cada nó deve ser verificado quanto a um serviço systemd inesperado nomeado sysmon.service. Os desenvolvedores também devem fixar todas as dependências em versões exatas, usar arquivos de bloqueio, habilitar autenticação de dois fatores nas contas do PyPI, usar credenciais de curta duração sempre que possível, evitar armazenar segredos em arquivos .env em disco e bloquear conexões de saída para 83.142.209.203, checkmarx.zone e a sub-rede mais ampla 83.142.209.0/24 no nível do firewall.

O que os CISOs devem fazer agora

A segurança da cadeia de suprimentos de software é crítica. A instalação de pacotes deve ser monitorada rigorosamente, e a verificação de integridade de pacotes deve ser implementada para detectar alterações não autorizadas. A segmentação de rede e o controle de saída são essenciais para limitar o impacto de um comprometimento. A conscientização dos desenvolvedores sobre a segurança de dependências deve ser reforçada.


Baseado em publicação original de Cyber Security News
Publicado pela Redação Hack Alerta com base em fontes externas citadas e monitoramento editorial do Hack Alerta. Para decisões técnicas, operacionais ou jurídicas, confirme sempre os detalhes na fonte original.