Segurança PyPI: Como proteger seus Tokens do ataque GhostAction

Imagem do autor do SempreUpdate Jardeson Márcio
Escrito por
Jardeson Márcio
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista...

Entenda o ataque GhostAction e aprenda a proteger seus pacotes Python com Trusted Publishers.

No início de setembro, um alerta soou na comunidade Python: um ataque sofisticado à cadeia de suprimentos de software, batizado de GhostAction, conseguiu roubar tokens de publicação de pacotes no PyPI (Python Package Index). Esse incidente levantou preocupações imediatas sobre a segurança PyPI e o risco de que milhares de projetos pudessem ser comprometidos.

A boa notícia veio logo depois. A equipe do PyPI confirmou que, apesar do roubo de credenciais, nenhum pacote malicioso foi publicado utilizando os tokens capturados. Ainda assim, o episódio serve como um alerta crucial: confiar em tokens de API de longa duração representa um risco significativo.

Neste artigo, vamos entender o que foi o ataque GhostAction, por que tokens estáticos são uma vulnerabilidade séria e como você pode proteger seus pacotes no PyPI de forma eficaz, migrando para o sistema moderno e seguro dos Trusted Publishers. O objetivo aqui é transformar uma notícia preocupante em uma oportunidade de aprendizado prático para desenvolvedores, equipes de DevOps e profissionais de segurança.

pesquisadores-descobrem-tres-pacotes-maliciosos-no-repositorio-pypi-direcionados-a-sistemas-linux

O que foi o ataque GhostAction?

O GhostAction foi um ataque que explorou fluxos de trabalho maliciosos no GitHub Actions, com o objetivo de exfiltrar segredos armazenados nos repositórios — incluindo tokens de publicação do PyPI.

A investigação revelou que o ataque não se limitou ao ecossistema Python: milhares de credenciais de diferentes serviços e registros de pacotes foram comprometidas. A empresa de segurança GitGuardian teve um papel fundamental na detecção do ataque e na comunicação responsável com os provedores afetados.

Um detalhe curioso (e preocupante) foi que o primeiro e-mail enviado ao PyPI pela GitGuardian caiu na caixa de spam, atrasando a resposta inicial. Felizmente, quando a equipe do PyPI recebeu o alerta, a reação foi rápida e eficiente.

A resposta rápida do PyPI e o alívio da comunidade

Assim que recebeu a confirmação do ataque, a equipe da Python Software Foundation agiu de forma decisiva: todos os tokens potencialmente comprometidos foram imediatamente invalidados. Além disso, os mantenedores afetados foram notificados e orientados a revisar seus fluxos de trabalho de publicação.

Após uma análise minuciosa, concluiu-se que, embora tokens tenham sido roubados, nenhum pacote malicioso foi publicado no PyPI. Essa foi a melhor notícia possível diante do incidente, pois evitou que milhões de desenvolvedores que consomem pacotes Python fossem impactados.

O episódio reforçou a importância de respostas rápidas em incidentes de segurança e abriu espaço para uma discussão mais ampla: até que ponto tokens estáticos realmente nos protegem?

O verdadeiro perigo: Por que tokens de longa duração são um risco?

A maioria dos desenvolvedores está acostumada a usar tokens de API armazenados como GitHub Secrets para automatizar a publicação de pacotes no PyPI. Esses tokens funcionam como chaves estáticas: uma vez gerados, permanecem válidos até serem manualmente revogados.

O problema é que, se um invasor conseguir roubar esse token — seja por meio de um ataque como o GhostAction, seja explorando uma falha em pipelines de CI/CD — ele terá acesso contínuo e irrestrito ao repositório ou serviço protegido.

Mesmo que os tokens estejam armazenados de forma criptografada nos Secrets do GitHub, eles se tornam alvos valiosos, já que podem ser exfiltrados durante a execução de fluxos de trabalho maliciosos. Esse risco é exatamente o que vimos neste ataque: não importa o quão seguro o repositório pareça, se um token estático for exposto, o projeto inteiro fica em perigo.

Esse modelo é claramente insuficiente para o cenário atual de ameaças à cadeia de suprimentos de software. É aqui que entram os Trusted Publishers.

A solução definitiva: Migrando para Trusted Publishers

O que são Trusted Publishers?

Os Trusted Publishers são a abordagem moderna recomendada pelo PyPI para autenticar publicações de pacotes sem depender de tokens estáticos. Em vez de gerar e armazenar um segredo de longa duração, esse modelo utiliza um protocolo padrão chamado OIDC (OpenID Connect).

O OIDC permite que o PyPI estabeleça uma relação de confiança com provedores de CI/CD, como o GitHub Actions, validando identidades de forma dinâmica e segura.

Como eles funcionam?

Em vez de usar um token estático, cada execução de workflow no GitHub pode solicitar ao PyPI um token temporário. Esse token:

  • É emitido automaticamente a cada execução.
  • Tem escopo limitado, válido apenas para a publicação no projeto correspondente.
  • Expira em poucos minutos, tornando-se inútil mesmo que seja roubado.

Na prática, isso significa que não há mais um segredo centralizado para ser exfiltrado. Cada build gera sua própria credencial temporária e restrita.

As vantagens de segurança

A adoção dos Trusted Publishers elimina os principais riscos associados a tokens estáticos:

  • Fim dos segredos de longa duração: não há mais uma chave fixa que pode ser roubada.
  • Escopo limitado: o token temporário só serve para publicar no PyPI e nada mais.
  • Expiração automática: mesmo que seja interceptado, o token não pode ser reutilizado.
  • Auditoria mais clara: cada publicação é associada a um workflow específico, facilitando rastrear incidentes.

Esse modelo reflete uma mudança de paradigma: em vez de confiar em segredos estáticos, a segurança passa a ser baseada em identidade verificada e tokens efêmeros.

Conclusão: Uma lição sobre a segurança da cadeia de suprimentos

O GhostAction poderia ter sido um desastre para a comunidade Python, mas foi contido a tempo. Mesmo assim, o ataque nos lembra que tokens estáticos representam uma vulnerabilidade estrutural em pipelines de CI/CD.

A principal lição não é apenas sobre o PyPI: é sobre a necessidade urgente de adotar práticas modernas de segurança em todo o ciclo de vida de desenvolvimento de software (SDLC).

Se você mantém pacotes no PyPI e utiliza o GitHub Actions, a recomendação é clara: interrompa agora a leitura e configure imediatamente os Trusted Publishers em seus repositórios. Investir alguns minutos nessa configuração pode ser a diferença entre a tranquilidade e um desastre irreversível.

A segurança da cadeia de suprimentos não pode esperar — e o futuro está nos tokens temporários e verificados.

Compartilhe este artigo