
npm/yarn और Python (pip/poetry/uv) में सप्लाई चेन हमलों का पता लगाएं, आकलन करें और उनका जवाब दें। क्लॉड कोड कौशल + स्वतंत्र स्क्रिप्ट। axios RAT (2026-03-31) और Starlette BadHost CVE-2026-48710 (2026-05-22) के दौरान निर्मित।
npm/yarn और Python (pip/poetry/uv) आपूर्ति श्रृंखला हमलों के लिए एक घटना-प्रतिक्रिया टूलकिट — मुफ्त, स्थानीय, निर्भरता-मुक्त।
SCG नहीं है एक स्कैनिंग इंजन जो कवरेज में व्यावसायिक उपकरणों से प्रतिस्पर्धा करता हो। यह एक Claude Code skill और स्टैंडअलोन शेल टूलकिट है जो तीन काम अच्छी तरह से करता है: (1) जब कोई विशिष्ट घटना घटती है तो आपको एक तेज़, दोहराने योग्य पहला प्रतिक्रिया देता है ("क्या मेरी मशीन अभी प्रभावित है?"), (2) मौजूदा OSS स्कैनर (npm audit, osv-scanner, pip-audit) को एक संरचित पास में समन्वित करता है, और (3) कठिनाई से अर्जित डिज़ाइन-स्वच्छता सबक — विशेष रूप से AI विकास वातावरण के लिए — दस्तावेज़ित करता है जो सामान्य स्कैनर कवर नहीं करते।
इसे वास्तविक घटनाओं के दौरान बनाया और सख्त किया गया था, जिनमें शामिल हैं:
scripts/project-scan-py.sh pip-audit / osv-scanner / CVE-फ़्लैग किए गए संस्करण पहचान के साथ31 मार्च, 2026 को, व्यापक रूप से उपयोग किए जाने वाले axios npm पैकेज (v1.14.1 और v0.30.4) को एक मेंटेनर खाता अधिग्रहण के माध्यम से समझौता किया गया, जिसका श्रेय UNC1069/DPRK-APT (प्रति Google Threat Intelligence Group) को दिया गया। हमले ने एक फैंटम डिपेंडेंसी ([email protected]) इंजेक्ट की जिसने postinstall स्क्रिप्ट के माध्यम से एक क्रॉस-प्लेटफ़ॉर्म RAT तैनात किया, जो वैध सिस्टम प्रक्रियाओं के रूप में प्रच्छन्न था।
Supply Chain Guard (SCG) घटना के दौरान प्रदान करने के लिए बनाया गया था:
SCG मौजूदा सुरक्षा उपकरणों का प्रतिस्थापन नहीं है। यह कई पहचान परतों को एक संरचित सत्यापन फ्रेमवर्क और निर्देशित उपचार के साथ जोड़ता है — जो सक्रिय घटनाओं के दौरान या आपके मौजूदा टूलिंग के साथ आवधिक जांच के रूप में उपयोग के लिए डिज़ाइन किया गया है।
SCG का उपयोग कब करें:
कुछ और कब उपयोग करें:
हम सीमाओं के बारे में ईमानदार रहना पसंद करते हैं, न कि अतिरंजना करना। SCG तीन चीजें है:
एक घटना-प्रतिक्रिया प्लेबुक, कोड के रूप में। जब कोई नामित घटना घटती है (axios RAT, Shai-Hulud, एक नया CVE), SCG "क्या मैं प्रभावित हूं, और यदि हां तो मैं क्या करूं?" को एक निष्पादन योग्य चेकलिस्ट में बदल देता है — 8 सत्यापन गेट, एक गंभीरता मैट्रिक्स, और एक उपचार स्क्रिप्ट जहां प्रत्येक विनाशकारी कार्रवाई के लिए स्पष्ट [y/N] पुष्टिकरण की आवश्यकता होती है। यह इसका प्राथमिक मूल्य है: तेज़, संरचित पहली प्रतिक्रिया जिसके लिए वाणिज्यिक निगरानी उपकरण डिज़ाइन नहीं किए गए हैं।
मौजूदा OSS स्कैनर का एक ऑर्केस्ट्रेटर। L1/L2 परतें npm audit / pip-audit / osv-scanner को लपेटती हैं। अधिकांश कच्ची पहचान शक्ति उधार ली गई है; SCG का योगदान उन्हें एक पास में बंडल करना, फाइलसिस्टम/IOC जांच जोड़ना जो रजिस्ट्री उपकरण नहीं करते, और आउटपुट को पठनीय और कार्रवाई योग्य बनाना है।
वास्तविक डिज़ाइन-स्वच्छता सबक का दस्तावेज़ीकरण (SKILL.md §D.7) — वे चीजें जिनका हमने वास्तव में सामना किया या जांच की: MCP परिवहन विकल्प, GCP डिफ़ॉल्ट-SA सख्तीकरण, इंस्टॉल-समय निष्पादन वैक्टर, और खतरे जो AI देव टूलिंग को लक्षित करते हैं (Shai-Hulud .claude/settings.json पढ़ रहा है, SANDWORM_MODE MCP कॉन्फ़िग को दूषित कर रहा है)। यह स्थान — AI-सहायता प्राप्त विकास के लिए आपूर्ति श्रृंखला स्वच्छता — वह है जहां SCG वास्तव में विभेदित है।
SKILL.md D.2, L3 स्थैतिक सूचियाँ) हाथ से बनाए रखा जाता है — इसमें वे घटनाएं हैं जिनके बारे में हमने पढ़ा है, न कि हजारों दुर्भावनापूर्ण पैकेज जो एक जीवित वाणिज्यिक फ़ीड ट्रैक करता है। हाथ से क्यूरेट की गई सूची नए खतरों की वास्तविक दर के साथ नहीं रह सकती, और हम दिखावा नहीं करते कि ऐसा होता है।क्योंकि हाथ से क्यूरेट किया गया डेटाबेस कवरेज पर जीत नहीं सकता, हम जानबूझकर वहां निवेश कर रहे हैं जहां SCG को बदलना कठिन है, न कि वहां जहां यह हमेशा हारेगा:
स्थैतिक खतरा DB (#2) उल्लेखनीय घटनाओं के आने पर अपडेट होता रहेगा, लेकिन यह स्पष्ट रूप से नहीं है वह दिशा जिसमें हम प्रतिस्पर्धा करने की कोशिश कर रहे हैं।
SCG डोमेन-ड्रिवन डिज़ाइन (DDD) आर्किटेक्चर का पालन करता है जिसमें तीन परतें हैं:``` +-----------------------------------------------------+ | Domain Layer | | Threat models, known threats DB, severity matrix, | | Devil Gate definitions | +-----------------------------------------------------+ | Application Layer | | Use cases, scan pipeline, response protocols, | | Devil execution loop | +-----------------------------------------------------+ | Infrastructure Layer | | Scanner scripts (npm audit, OSV, static list, | | IOC filesystem, network, lockfile integrity) | +-----------------------------------------------------+
### स्कैन पाइपलाइन
यही 5-स्तरीय पाइपलाइन दोनों पारिस्थितिकी तंत्रों पर लागू होती है, प्रत्येक स्तर पर पारिस्थितिकी-विशिष्ट स्कैनर के साथ:```
L1 ──→ L2 ──→ L3 ──→ IOC ──→ LF ──→ assess(SeverityMatrix) ──→ VERDICT
दोनों पाइपलाइन समान SeverityMatrix और Devil Gate Framework को फीड करती हैं।
SKILL.md को अपनी Claude Code स्किल्स निर्देशिका में कॉपी करें:```bash
cp SKILL.md ~/.claude/skills/supply-chain-guard.md
mkdir -p .claude/skills cp SKILL.md .claude/skills/supply-chain-guard.md
फिर Claude Code में उपयोग करें:```
> /supply-chain-guard
> "Check this project for supply chain issues"
> "Is my machine affected by the axios compromise?"
./scripts/env-scan.sh
./scripts/project-scan.sh
./scripts/project-scan-py.sh
./scripts/ioc-scan.sh
./scripts/respond.sh --critical # Full RAT cleanup (npm + Python) ./scripts/respond.sh --high axios 1.14.0 # Pin npm package to safe version ./scripts/respond.sh --high urllib3 2.7.0 # Pin Python package (auto-detects pip/poetry/uv)
> **पायथन रिमेडिएशन डिज़ाइन द्वारा रूढ़िवादी है।** npm के लिए, `--high` स्वचालित रूप से ओवरराइड लागू करता है। पायथन के लिए यह *मार्गदर्शन* करता है: यह आपके मैनेजर (pip/poetry/uv) का पता लगाता है, सटीक पिन कमांड प्रिंट करता है, और केवल सुरक्षित चरण लागू करता है — लॉकफ़ाइल-म्यूटेटिंग और venv-रीबिल्ड कमांड को आपके चलाने के लिए दिखाया जाता है। यह खंडित पायथन पैकेजिंग इकोसिस्टम में एक गलत सकारात्मक को एक सहायक बल-पुनर्स्थापना को ट्रिगर करने से बचाता है।
एक पॉलीग्लॉट रिपॉजिटरी (npm + Python) के लिए, दोनों प्रोजेक्ट स्कैनर्स को क्रमिक रूप से संबंधित उपनिर्देशिकाओं से चलाएं।
> **सुरक्षा डिज़ाइन:** सभी स्कैन स्क्रिप्ट सख्ती से केवल-पढ़ने के लिए हैं — वे कभी भी कुछ भी संशोधित, हटाते या स्थापित नहीं करते हैं। रिमेडिएशन स्क्रिप्ट (`respond.sh`) ही एकमात्र स्क्रिप्ट है जो विनाशकारी संचालन करती है, और **प्रत्येक कार्रवाई के लिए स्पष्ट `[y/N]` पुष्टि** की आवश्यकता होती है जिसमें डिफ़ॉल्ट NO होता है।
---
## स्कैन मोड
### एनवायरनमेंट स्कैन (`env_scan`)
आपकी पूरी डेवलपमेंट मशीन को समझौता संकेतकों के लिए स्कैन करता है।
| चेक | विवरण |
|-------|-------------|
| **IOC: फ़ाइलसिस्टम** | RAT बाइनरी, स्थायित्व तंत्र, स्टेजिंग फ़ाइलें |
| **IOC: नेटवर्क** | सक्रिय C2 कनेक्शन (IP + डोमेन) |
| **IOC: प्रक्रिया** | चल रही दुर्भावनापूर्ण प्रक्रियाएँ |
| **क्रॉस-प्रोजेक्ट** | समझौता किए गए संस्करणों के लिए सभी `package-lock.json` फ़ाइलें स्कैन की गईं |
| **दुर्भावनापूर्ण पैकेज** | किसी भी लॉकफ़ाइल में ज्ञात दुर्भावनापूर्ण पैकेज नाम |
**ट्रिगर:** "this PC", "environment check", "machine-wide"
### प्रोजेक्ट स्कैन — npm/yarn (`project_scan`)
एकल npm/yarn प्रोजेक्ट का गहरा स्कैन। `package.json` वाली निर्देशिका से चलाएँ।
| परत | स्कैनर | विवरण |
|-------|---------|-------------|
| **L1** | `npm audit` | npm रजिस्ट्री के माध्यम से ज्ञात कमज़ोरियाँ |
| **L2** | `osv-scanner` / OSV.dev API | Google का ओपन सोर्स वल्नरेबिलिटी डेटाबेस |
| **L3** | स्थैतिक सूची | हार्डकोडेड ज्ञात-दुर्भावनापूर्ण पैकेज जाँच |
| **IOC** | फ़ाइलसिस्टम + नेटवर्क | RAT आर्टिफैक्ट डिटेक्शन |
| **LF** | लॉकफ़ाइल अखंडता | `npm ci --dry-run` + अखंडता हैश गणना |
**ट्रिगर:** "this project", "npm audit", या cwd में `package.json` मौजूद
### प्रोजेक्ट स्कैन — पायथन (`project_scan_py`, v4 में जोड़ा गया)
एकल पायथन प्रोजेक्ट का गहरा स्कैन। `pyproject.toml`, `requirements*.txt`, `poetry.lock`, या `uv.lock` वाली निर्देशिका से चलाएँ।
| परत | स्कैनर | विवरण |
|-------|---------|-------------|
| **L1** | `pip-audit` | PyPI सलाहकार डेटाबेस के माध्यम से ज्ञात कमज़ोरियाँ (वैकल्पिक — यदि स्थापित नहीं है तो SKIP; `pip install pip-audit` अनुशंसित) |
| **L2** | `osv-scanner` | Google का ओपन सोर्स वल्नरेबिलिटी डेटाबेस `uv.lock` / `poetry.lock` / `requirements*.txt` के विरुद्ध (वैकल्पिक — यदि स्थापित नहीं है तो SKIP) |
| **L3-MAL** | स्थैतिक दुर्भावनापूर्ण सूची (`_L3_LIST`) | ज्ञात अपहृत / टाइपोस्क्वाट पैकेज नाम। PEP 621 सूची, Poetry इनलाइन, और आवश्यकताएँ-शैली घोषणाओं से मेल खाता है (देखें [PR #4](https://github.com/eris-ths/supply-chain-guard/pull/4))। हिट पर FAIL |
| **L3-CVE** | स्थैतिक CVE-ध्वजांकित संस्करण सूची (`_L3_CVE_LIST`) | वैध पैकेजों के ज्ञात कमज़ोर संस्करण (जैसे, `starlette<1.0.1` [BadHost CVE-2026-48710](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/) के लिए)। पायथन की `packaging` लाइब्रेरी के माध्यम से सख्त सेमवर-स्पेक मूल्यांकन। पुष्ट मिलान पर FAIL। यदि कोई पैकेज घोषित है लेकिन कोई लॉकफ़ाइल मौजूद नहीं है तो चेतावनी देता है (संस्करण का मूल्यांकन नहीं कर सकता) |
| **IOC** | फ़ाइलसिस्टम + प्रक्रिया | पायथन-स्वादयुक्त आर्टिफैक्ट जाँच (दुष्ट स्क्रिप्ट, संदिग्ध प्रक्रियाएँ) |
| **LF** | लॉकफ़ाइल अखंडता | सत्यापित करता है कि `uv.lock` / `poetry.lock` / `requirements*.txt` स्वच्छ रूप से पार्स होता है और इसमें पिन किए गए संस्करण हैं |
**ट्रिगर:** "this project" जिसमें पायथन फ़ाइलें मौजूद हैं, या cwd में `pyproject.toml` / `requirements*.txt` / `poetry.lock` / `uv.lock` में से कोई भी
> **निर्भरता नोट:** L1 (`pip-audit`) और L2 (`osv-scanner`) जब उनका संबंधित CLI अनुपस्थित होता है तो एक संकेत के साथ सुंदरता से SKIP हो जाता है। L3 हमेशा-चालू परत है और इसे किसी बाहरी उपकरण की आवश्यकता नहीं है, लेकिन सटीक L3-CVE मूल्यांकन के लिए `pip install packaging` की आवश्यकता है।
---
## खतरा खुफिया
### ज्ञात खतरे डेटाबेस
| ID | तारीख | पैकेज | खतरा अभिनेता | वेक्टर |
|----|------|---------|-------------|--------|
| **T001** | 2026-03-31 | `[email protected]`, `[email protected]` | UNC1069/DPRK-APT | अनुरक्षक समझौता → प्रेत निर्भरता → RAT |
| **T002** | 2018-11 | `[email protected]` | अज्ञात | निर्भरता इंजेक्शन → क्रिप्टो चोरी |
| **T003** | जारी | `crossenv`, `loadsh`, `crypto-js-esm` | विभिन्न | टाइपोस्क्वाटिंग → पोस्टइंस्टॉल एक्सफ़िल्ट्रेशन |
### T001 किल चेन (axios RAT)```
Credential theft → npm publish (bypass CI) → Inject phantom dep (plain-crypto-js)
→ postinstall exec → RAT drop → C2 beacon (sfrclak.com:8000) → Persist
| पैकेज | सुरक्षित | समझौता |
|---|---|---|
| axios (नवीनतम) | 1.14.0 (सटीक) या >=1.14.2 | 1.14.1 |
| axios (पुराना) | 0.30.3 (सटीक) |
SCG एक 8-गेट सत्यापन ढांचा का उपयोग करता है जो 4 श्रेणियों में संगठित है, और एक सीरियल चेन और अभिसरण लूप के रूप में निष्पादित किया जाता है।
S1: Dependency (G1+G2) → S2: Runtime (G3+G4) → S3: Integrity (G5+G6) → S4: Environment (G7+G8) → Any fail? → Fix → Re-run entire chain → All pass? → "No concerns" → Done → 3 rounds without convergence? → Escalate to user
### गंभीरता मैट्रिक्स
| स्तर | स्थिति | कार्रवाई |
|-------|-----------|--------|
| **गंभीर** | RAT आर्टिफैक्ट मिला या दुर्भावनापूर्ण पैकेज स्थापित | नेटवर्क अलग करें → प्रक्रिया समाप्त करें → स्थायित्व हटाएं → पुनः स्थापित करें |
| **उच्च** | समझौता किया गया संस्करण उपयोग में | सुरक्षित संस्करण पिन करें → ओवरराइड करें → `npm ci` → सत्यापित करें |
| **मध्यम** | संदिग्ध पोस्टइंस्टॉल स्क्रिप्ट | मैन्युअल समीक्षा → व्हाइटलिस्ट या हटाएं |
| **निम्न** | लॉकफ़ाइल विचलन | `npm ci` पुनः सिंक |
| **स्पष्ट** | सभी जाँचें पास हो गईं | कोई कार्रवाई आवश्यक नहीं है |
> **सुरक्षा:** गंभीर/उच्च प्रतिक्रियाओं में विनाशकारी संचालन शामिल होते हैं। SCG हमेशा निष्कर्ष प्रस्तुत करता है और सुधारात्मक कार्रवाई करने से पहले स्पष्ट उपयोगकर्ता पुष्टि माँगता है।
---
## स्टैंडअलोन स्क्रिप्ट्स
### `scripts/env-scan.sh`
पूर्ण पर्यावरण स्कैन। IOC आर्टिफैक्ट्स की जाँच करता है, `$HOME` के अंतर्गत सभी लॉकफ़ाइलों को स्कैन करता है (कॉन्फ़िगरेबल), और समझौता किए गए पैकेजों की रिपोर्ट करता है।```bash
./scripts/env-scan.sh [scan_root_dir]
# Default: $HOME
scripts/project-scan.shप्रोजेक्ट-स्तरीय स्कैन। package.json वाली निर्देशिका से चलाएँ।```bash
cd my-project
/path/to/scripts/project-scan.sh
### `scripts/ioc-scan.sh`
केवल IOC स्कैन। फ़ाइलसिस्टम आर्टिफैक्ट्स, चल रही प्रक्रियाओं और नेटवर्क कनेक्शनों की ज्ञात C2 संकेतकों के विरुद्ध जाँच करता है। क्रॉस-प्लेटफ़ॉर्म (macOS/Linux/Windows via PowerShell)।```bash
./scripts/ioc-scan.sh
scripts/respond.shइंटरैक्टिव सुधार। प्रत्येक विनाशकारी कार्रवाई के लिए [y/N] पुष्टि आवश्यक है (डिफ़ॉल्ट: NO).```bash
./scripts/respond.sh --critical
./scripts/respond.sh --high axios 1.14.0 # npm ./scripts/respond.sh --high event-stream 3.3.5 # npm ./scripts/respond.sh --high urllib3 2.7.0 # python (pip/poetry/uv auto-detected)
`--critical` मोड में चरण:
1. नेटवर्क को अलग करें (`/etc/hosts` के माध्यम से C2 डोमेन को ब्लॉक करें)
2. RAT प्रक्रियाओं को समाप्त करें
3. स्थिरता हटाएं (LaunchAgents / crontab / अनुसूचित कार्य)
4. `node_modules` और लॉकफ़ाइल हटाएं, npm कैश साफ़ करें
- **4b (Python):** pip कैश साफ़ करें (सुरक्षित, स्वचालित); venv-पुनर्निर्माण मैन्युअल चरणों के रूप में दिखाया गया है
5. निर्भरताएं पुनः स्थापित करें
6. सत्यापन स्कैन के लिए संकेत (`project-scan.sh` और/या `project-scan-py.sh`)
प्रत्येक चरण जांचता है कि कार्रवाई वास्तव में आवश्यक है या नहीं (उदाहरण के लिए, यदि कोई RAT प्रक्रिया नहीं चल रही है तो "समाप्त करें" को छोड़ देता है) और पुष्टि मांगने से पहले वास्तव में क्या निष्पादित किया जाएगा, यह दिखाता है।
**HIGH** मोड के लिए, npm स्वचालित रूप से ओवरराइड लागू करता है; Python का मार्गदर्शन किया जाता है (मैनेजर का पता लगाएं → पिन कमांड प्रिंट करें → केवल सुरक्षित चरण लागू करें)। [त्वरित प्रारंभ](#quick-start) में Python सुधार नोट देखें।
---
## CI/CD एकीकरण
### GitHub Actions```yaml
name: Supply Chain Guard
on:
pull_request:
paths:
- 'package.json'
- 'package-lock.json'
- 'yarn.lock'
jobs:
scg-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies (hardened)
run: npm ci --ignore-scripts
- name: Run SCG project scan
run: |
chmod +x ./scripts/project-scan.sh
./scripts/project-scan.sh
- name: Run IOC scan
run: |
chmod +x ./scripts/ioc-scan.sh
./scripts/ioc-scan.sh
npm ci --ignore-scripts # Block postinstall execution
yarn install --frozen-lockfile --ignore-scripts
> **कार्रवाइयों को SHA द्वारा पिन करें, टैग द्वारा नहीं।** ऊपर दिया गया उदाहरण पठनीयता के लिए `actions/checkout@v4` का उपयोग करता है, लेकिन टैग को स्थानांतरित किया जा सकता है। उत्पादन में, कार्रवाई आपूर्ति श्रृंखला हमलों को रोकने के लिए पूर्ण कमिट SHA पर पिन करें:
> ```yaml
> - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
> - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
> ```
---
## प्रतिक्रिया प्लेबुक
### यदि गंभीर (RAT का पता चला)
> **घबराएं नहीं।** इन चरणों को क्रम से पालन करें। प्रत्येक चरण में आपकी स्पष्ट पुष्टि आवश्यक है।
1. **नेटवर्क अलगाव** — C2 डोमेन को `/etc/hosts` के माध्यम से ब्लॉक करें
2. **प्रक्रियाओं को समाप्त करें** — RAT प्रक्रियाओं को समाप्त करें (`com.apple.act.mond`, `ld.py`, `wt.exe`)
3. **स्थायित्व हटाएं** — LaunchAgents, crontabs, शेड्यूल किए गए कार्यों को हटाएं
4. **npm साफ़ करें** — `node_modules` और `package-lock.json` हटाएं, npm कैश साफ़ करें
5. **पुनर्स्थापित करें** — नए सिरे से `npm install && npm ci` चलाएं
6. **पुनः स्कैन करें** — पूरी पाइपलाइन फिर से चलाएं, CLEAR की अपेक्षा करें
### यदि उच्च (समझौता संस्करण स्थापित)
1. **सुरक्षित संस्करण को पिन करें** respond.sh का उपयोग करके: ```bash
./scripts/respond.sh --high axios 1.14.0
यह overrides (npm) या resolutions (yarn) को package.json में जोड़ता है, पुनः स्थापित करता है, और सत्यापन के लिए संकेत देता है।
package.json में: ```json
{ "overrides": { "axios": "1.14.0" } }
Yarn: { "resolutions": { "axios": "1.14.0" } }
npm ci| प्रकार | मान |
|---|---|
| C2 डोमेन | sfrclak.com |
| C2 IP | 142.11.206.73 |
| C2 पोर्ट | 8000 |
| प्लेटफ़ॉर्म | के रूप में भेष |
|---|---|
| macOS | Apple सिस्टम प्रक्रिया (com.apple.act.mond) |
| Windows | Windows Terminal (wt.exe in ProgramData) |
SCG ────────────────────────────────── [L1:audit] CLEAR|!!sev [L2:osv] CLEAR|!!vuln-ids [L3:static] CLEAR|!!pkg [IOC:fs] CLEAR|!!C:artifact [IOC:net] CLEAR|!!C:c2 [LF:integ] CLEAR|!!drift ─── Devil Gate(8) ──────────────────── G1:direct_dep G2:transitive G3:rat_fs G4:postinstall G5:lockfile G6:provenance G7:network G8:cicd ─── Devil Chain(R.N) ───────────────── S1:dependency → S2:runtime → S3:integrity → S4:environment ─── Loop ───────────────────────────── R.N → converge|continue [VERDICT] CLEAR|HIGH|CRITICAL ───────────────────────────────────────
---
## संदर्भ
| स्रोत | विवरण |
|--------|-------------|
| [Zenn (JP)](https://zenn.dev/gunta/articles/0152eadf05d173) | जापानी प्रारंभिक रिपोर्ट |
| [Elastic Security Labs](https://elastic.co/security-labs/axios-one-rat-to-rule-them-all) | तकनीकी विश्लेषण (RAT डिसअसेंबली, C2 प्रोटोकॉल, समयरेखा) |
| [SANS](https://sans.org/blog/axios-npm-supply-chain-compromise-malicious-packages-remote-access-trojan) | एंटरप्राइज़ IR प्रक्रियाएँ |
| [Huntress](https://huntress.com/blog/supply-chain-compromise-axios-npm-package) | YARA हस्ताक्षर |
| [Elastic Detections](https://elastic.co/security-labs/axios-supply-chain-compromise-detections) | SIEM पहचान नियम (YARA/osquery/KQL) |
| [Semgrep](https://semgrep.dev/blog/2026/axios-supply-chain-incident-indicators-of-compromise-and-how-to-contain-the-threat/) | स्थैतिक विश्लेषण नियम, रोकथाम मार्गदर्शिका |
| [SOCRadar](https://socradar.io/blog/axios-npm-supply-chain-attack-2026-ciso-guide/) | IOC समयरेखा के साथ CISO मार्गदर्शिका |
| [Wiz](https://wiz.io/blog/axios-npm-compromised-in-supply-chain-attack) | क्लाउड प्रभाव विश्लेषण, कंटेनर स्कैनिंग |
| [NVD CVE-2026-48710](https://nvd.nist.gov/vuln/detail/CVE-2026-48710) | **Primary** — NVD विहित प्रविष्टि (प्रकाशित 2026-05-26, CVSS 3.1 आधार 6.5 MEDIUM, AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N) |
| [GHSA-86qp-5c8j-p5mr](https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr) | **Primary** — GitHub सुरक्षा सलाहकार `Kludex/starlette` पर (प्रकाशित 2026-05-21): "मिसिंग Host हेडर मान्यकरण request.url.path को दूषित करता है, पथ-आधारित सुरक्षा जाँचों को दरकिनार करता है" |
| [Starlette v1.0.1 release notes](https://github.com/Kludex/starlette/releases/tag/1.0.1) | **Primary** — फिक्स रिलीज़ (प्रकाशित 2026-05-21). `starlette>=1.0.1` पिन करें (और ट्रांज़िटिव रिज़ॉल्यूशन के लिए `fastapi>=0.119`) |
| [Starlette BadHost coverage (KuCoin)](https://kucoin.com/news/flash/starlette-vulnerability-exposes-millions-of-ai-agents-to-hackers) | Secondary — Python पारिस्थितिकी तंत्र प्रभाव, AI एजेंट फ्रेमिंग |
| [BadHost AI agent analysis (CryptoBriefing)](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/) | Secondary — FastAPI / vLLM / LiteLLM डाउनस्ट्रीम प्रभाव फ्रेमिंग |
---
## Guild-CLI Devil एकीकरण
यदि आप [guild-cli](https://github.com/eris-ths/guild-cli) (या कोई भी प्रोजेक्ट जो Devil lense वर्कफ़्लो को उजागर करता है) का उपयोग करते हैं, तो SCG को समीक्षा पास के दौरान एक सुरक्षा लेंस के रूप में लागू किया जा सकता है।
### अनुशंसित आह्वान पैटर्न```bash
# Inside a guild-cli review session, in the project root:
~/path/to/supply-chain-guard/scripts/project-scan.sh # for npm/yarn projects
~/path/to/supply-chain-guard/scripts/project-scan-py.sh # for Python projects
# Capture the scan output as evidence for a judgment:
SCG_OUTPUT=$(~/path/to/supply-chain-guard/scripts/project-scan.sh 2>&1 || true)
# (a) Record it as a new judgment (fast-track — no prior review needed):
gate fast-track --from "$USER" \
--action "SCG supply-chain scan (Devil lense)" \
--reason "$SCG_OUTPUT"
# (b) Or attach it as the Devil lense on an existing review request <id>:
gate review <id> --lense devil --verdict concern --note "$SCG_OUTPUT"
Flag notes (verified against guild-cli):
gate reviewrequires an existing<id>,--lense(guild-cli spells it "lense"), and--verdict(ok/concern/reject). It has no--areaflag. To log a fresh finding with no prior review object, usegate fast-trackas in (a).
Devil's Advocate ("壊しにいく") and SCG share the same posture: assume the worst, scan systematically, then converge. SCG provides the supply-chain dimension of a Devil pass — what the project's dependencies might be doing behind your back — alongside other lenses (security / correctness / architecture / user / operations).
respond.sh separately when remediation is required (with explicit user confirmation)tail -50 if neededproject-scan.sh and project-scan-py.sh and merge findingsSCG is a detection tool, not a security guarantee. Being upfront about what it can and cannot do is part of the design.
This software is provided "as-is" without warranty of any kind. By using Supply Chain Guard, you acknowledge and agree to the following:
CLEAR verdict means no matches were found against the tool's known threat patterns. It does not mean your system or project is free from compromise. Novel, unknown, or modified attacks may not be detected.respond.sh) address known indicators of specific threats. They may not fully remove all traces of a sophisticated compromise. If you suspect active compromise, engage a professional incident response team.Understanding what SCG cannot do is as important as knowing what it can.
The Known Threats database (D.2 in SKILL.md) is manually maintained. It is not connected to any live threat feed. There is inherent latency between a new supply chain incident being discovered and this database being updated.
_L3_CVE_LIST entries with strict semver-spec evaluation, and depends on packaging being installed for accurate version matchingAlways cross-reference with live sources such as npm advisories, OSV.dev, and vendor security blogs listed in the References section.
The following IOC paths may, in rare cases, conflict with legitimate software:
| IOC Path | Potential False Positive |
|---|---|
/tmp/.npm-cache/ | Legitimate npm caching in non-standard configurations |
/tmp/ld.py | Unrelated Python scripts with the same filename |
Process name wt.exe | Legitimate Windows Terminal if located in ProgramData |
Always verify IOC findings before running remediation. The ioc-scan.sh script reports findings for human review — it does not take any action. The respond.sh script requires explicit confirmation for every destructive action (default: NO) precisely because of this risk.
lsof-based network checks only detect currently active connections. A C2 beacon that connects intermittently may not be active at scan time.Verify that your copy of SCG has not been tampered with. Compare these SHA-256 checksums against your local files:
```67ac6216cbe18fdf7050fd267bce4157c016e5c60cd4f84f63b8cf71e80ae3b9 scripts/env-scan.sh da01f8362563b55b1553f923a748f07d24f24522366e0545e6ba0c09801f8e54 scripts/project-scan.sh 77e7ebba6d44ea020e511a49bc2cbc974d01495de40d35e8dfb7fcc93008954b scripts/project-scan-py.sh 82aaa4ed898ce354addc064ccf84cca9a498ef4e90fe58613e1110146577609f scripts/ioc-scan.sh 72ed333838b5584c3b1faf889edc81b0e3195c27396c3b36c62aaebf5f952117 scripts/ioc-scan.ps1 0e6b30e57c959180e22e0ba16f860e9fdc7304045947995084703fb14381d12e scripts/respond.sh a44be79d909058c9d216e7cbc5cca736cf8816a492c8d35a6b90c74c042abf5b SKILL.md
<!-- CHECKSUMS-END -->
सत्यापित करने के लिए:```bash
shasum -a 256 scripts/*.sh scripts/*.ps1 SKILL.md
नोट: ये चेकसम नवीनतम रिलीज़ के अनुरूप हैं। यदि आपने स्थानीय रूप से किसी भी फ़ाइल को संशोधित किया है, तो चेकसम भिन्न होंगे। जब SCG अपडेट किया जाता है, तो यह अनुभाग कोड परिवर्तनों के साथ अपडेट किया जाता है।
Eris द्वारा निर्मित — क्योंकि आपकी निर्भरताएँ किसी और का हमला सतह नहीं होनी चाहिए।
| उपकरण | यह क्या करता है | SCG कैसे संबंधित है |
|---|
npm audit | रजिस्ट्री में ज्ञात कमजोरियों की जांच करता है | SCG npm audit को अपनी L1 परत के रूप में शामिल करता है, फिर शीर्ष पर IOC फाइलसिस्टम/नेटवर्क स्कैनिंग, दुर्भावनापूर्ण पैकेज पहचान, और एक संरचित प्रतिक्रिया वर्कफ़्लो जोड़ता है |
osv-scanner | Google के OSV डेटाबेस के विरुद्ध लॉकफ़ाइलों को स्कैन करता है | SCG OSV को अपनी L2 परत के रूप में शामिल करता है। osv-scanner आपके फाइलसिस्टम पर RAT कलाकृतियों या सक्रिय C2 कनेक्शनों की जांच नहीं करता है |
| Snyk / Socket.dev | वास्तविक समय निगरानी, PR जांच, लाइसेंस स्कैनिंग के साथ वाणिज्यिक SaaS | SCG मुफ्त, स्थानीय-प्रथम है, कोई खाता आवश्यक नहीं, तीसरे पक्ष को कोई डेटा नहीं भेजा जाता। निरंतर निगरानी के बजाय तत्काल घटना प्रतिक्रिया के लिए डिज़ाइन किया गया |
| Manual IR | कस्टम स्क्रिप्ट के साथ तदर्थ जांच | SCG एक दोहराने योग्य फ्रेमवर्क (8 सत्यापन गेट, अभिसरण लूप, गंभीरता मैट्रिक्स) प्रदान करता है, न कि एकमुश्त चेकलिस्ट जो प्रति घटना भिन्न होती हैं |
| परत | npm/yarn (project-scan.sh) | Python (project-scan-py.sh) |
|---|
| L1 | npm audit | pip-audit |
| L2 | osv-scanner / OSV.dev API | osv-scanner |
| L3 | Static list (malicious + typosquat) | Static list (malicious / typosquat + CVE-flagged versions) |
| IOC | Filesystem + Network artifacts | Filesystem + Process artifacts (Python-flavored) |
| LF | npm ci --dry-run + integrity count | Lockfile integrity (uv.lock / poetry.lock / requirements*.txt) |
0.30.4| # | गेट | श्रेणी | प्रश्न |
|---|
| G1 | प्रत्यक्ष निर्भरता | निर्भरता विषाक्तता | क्या कोई प्रत्यक्ष निर्भरता समझौता किए गए संस्करण पर है? |
| G2 | संक्रमणीय निर्भरता | निर्भरता विषाक्तता | क्या कोई संक्रमणीय (अप्रत्यक्ष) निर्भरता समझौता किया गया है? |
| G3 | RAT कलाकृतियाँ | रनटाइम समझौता | क्या फाइलसिस्टम पर RAT के निशान हैं? |
| G4 | पोस्टइंस्टॉल स्क्रिप्ट्स | रनटाइम समझौता | क्या संदिग्ध postinstall स्क्रिप्ट्स हैं? |
| G5 | लॉकफ़ाइल अखंडता | अखंडता | क्या लॉकफ़ाइल के साथ छेड़छाड़ की गई है? |
| G6 | उत्पत्ति | अखंडता | क्या पैकेज एक वैध स्रोत/रखरखावकर्ता से है? |
| G7 | नेटवर्क | वातावरण | क्या संदिग्ध बाहरी कनेक्शन हैं? |
| G8 | CI/CD सख्तीकरण | वातावरण | क्या CI/CD पोस्टइंस्टॉल को दरकिनार करता है / फ्रोजन लॉकफ़ाइल लागू करता है? |
| प्लेटफ़ॉर्म | पथ | प्रकार |
|---|
| macOS | /Library/Caches/com.apple.act.mond | RAT बाइनरी |
| macOS | ~/Library/LaunchAgents/com.apple.act.mond.plist | स्थायित्व |
| Windows | %PROGRAMDATA%\wt.exe | RAT बाइनरी (Windows Terminal का रूप धारण किए हुए) |
| Windows | %TEMP%\6202033.vbs | ड्रॉपर |
| Windows | %TEMP%\6202033.ps1 | ड्रॉपर |
| Linux | /tmp/ld.py | RAT स्क्रिप्ट |
| Linux | /tmp/.npm-cache/ | स्टेजिंग निर्देशिका |
| प्लेटफ़ॉर्म | तंत्र | पहचानकर्ता |
|---|
| macOS | लॉन्चएजेंट | com.apple.act.mond |
| Windows | अनुसूचित कार्य | WindowsTerminalUpdate |
| Linux | क्रोंटैब प्रविष्टि | ld.py या .npm-cache का संदर्भ |
| What SCG checks | What SCG does NOT check |
|---|
| Known compromised package versions (hardcoded DB) | Zero-day supply chain attacks with no public advisory |
| Known malicious package names | Typosquats not yet in the static list |
| Specific IOC file paths for known threats | Arbitrary malware dropped to non-standard paths |
| Specific C2 IP addresses and domains | C2 infrastructure that has been rotated or changed |
postinstall scripts in direct dependencies | Obfuscated malicious code within legitimate-looking scripts |