
LLM आउटपुट और AI-जनित सामग्री को डेटा एक्सफ़िल्ट्रेशन संकेतों (EchoLeak, CVE-2025-32711) के लिए स्कैन करें, इससे पहले कि वे उपयोगकर्ताओं या डाउनस्ट्रीम सिस्टम तक पहुँचें।
डेटा बहिर्वाह (exfiltration) संकेतों के लिए LLM आउटपुट और AI-जनित सामग्री को स्कैन करें, इससे पहले कि वे उपयोगकर्ताओं, लॉग्स या डाउनस्ट्रीम सिस्टम तक पहुँचें।
आधुनिक LLM एप्लिकेशन नियमित रूप से संवेदनशील प्रॉम्प्ट, आंतरिक दस्तावेज़, API प्रतिक्रियाएँ और उपयोगकर्ता डेटा संसाधित करते हैं। यह एक नई सुरक्षा सीमा उत्पन्न करता है: आउटपुट परत।
EchoLeak हमलों का परिवार (CVE-2025-32711 सहित) यह प्रदर्शित करता है कि कैसे छिपे या अस्पष्ट (obfuscated) पेलोड जनरेटेड टेक्स्ट में एम्बेड किए जा सकते हैं और उपकरणों, लिंक्स या पार्सिंग श्रृंखलाओं के माध्यम से डेटा बहिर्वाह के लिए उपयोग किए जा सकते हैं।
पारंपरिक स्कैनर फ़ाइलों, निर्भरताओं और रनटाइम ट्रैफ़िक पर ध्यान केंद्रित करते हैं। वे जनरेटेड मॉडल आउटपुट का उद्देश्य-निर्मित (purpose-built) तरीके से निरीक्षण नहीं करते हैं।
exfil-scan एक "LLM प्रतिक्रियाओं के लिए वायरस स्कैनर" प्रदान करता है:
| श्रेणी | गंभीरता | क्या पता लगाया जाता है |
|---|---|---|
| छिपा हुआ टेक्स्ट | HIGH | पेलोड छिपाने के लिए उपयोग किए जाने वाले ज़ीरो-चौड़ाई और अदृश्य यूनिकोड अनुक्रम |
| एन्कोडेड डेटा | HIGH | Base64/hex/octal/unicode एस्केप रन जो संभवतः एन्कोडेड सामग्री ले जाते हैं |
| URL में डेटा | MEDIUM | संदिग्ध रूप से लंबे क्वेरी स्ट्रिंग्स और एन्कोडेड URL पैरामीटर पेलोड |
| मेटाडेटा लीक | HIGH | संरचित/असंरचित आउटपुट में क्रेडेंशियल-जैसी कुंजियाँ और टोकन प्रारूप |
| यूनिकोड स्टेगानोग्राफी | MEDIUM | द्विदिश नियंत्रण (bidirectional controls) और मिश्रित-लिपि होमोग्लिफ़-शैली शब्द |
| संरचनात्मक विसंगतियाँ | LOW | अत्यधिक न्यूलाइन/टैब रन और प्रतिस्थापन-वर्ण एन्कोडिंग कलाकृतियाँ |
low, medium, highstdin, एकल फ़ाइल या निर्देशिका से इनपुटtext, json, markdown या html में आउटपुटgit clone https://github.com/your-org/exfil-scan.git
cd exfil-scan
pip install -e .
pip install exfil-scan
pip install -e ".[dev]"
pytest
echo 'api_key: sk-ABCDEFGHIJKLMNOPQRSTUVWXYZ123456' | exfil-scan
exfil-scan --input output.txt
exfil-scan --directory ./model-logs --recursive
नोट्स:
--input या --directory में से किसी एक का उपयोग करें, दोनों का नहीं।stdin से पढ़ता है।1 के साथ समाप्त होती है।exfil-scan --input suspicious.txt --format text
अपेक्षित शैली:
exfil-scan report
=================
Scanned targets: 1
Total findings: 2
1. [HIGH] metadata_leaks/known_token_format:openai_key
Location: suspicious.txt:1:10
Description: Matched known credential/token format (openai_key).
exfil-scan --input suspicious.txt --format json
अपेक्षित संरचना:
{
"finding_count": 2,
"scanned_targets": ["suspicious.txt"],
"findings": [
{
"category": "metadata_leaks",
"rule": "known_token_format:openai_key",
"severity": "HIGH",
"description": "Matched known credential/token format (openai_key).",
"location": "suspicious.txt:1:10",
"snippet": "..."
}
]
}
exfil-scan --directory ./outputs --recursive --format html --output report.html
अपेक्षित व्यवहार:
exfil-scan --input suspicious.txt --format markdown --output report.md
अपेक्षित शैली:
# exfil-scan Report
- Scanned targets: 1
- Total findings: 2
रिपॉजिटरी default-config.yaml के साथ आती है।
आप --config के साथ अपनी स्वयं की फ़ाइल पास कर सकते हैं।
संवेदनशीलता ट्यूनिंग:
low: कम गलत सकारात्मकता, बड़े थ्रेसहोल्डmedium: संतुलित डिफ़ॉल्टhigh: अधिक सूक्ष्म पैटर्न पकड़ता हैCLI संवेदनशीलता ओवरराइड:
exfil-scan --input out.txt --sensitivity high
आप अपने स्वयं के टोकन प्रारूप और मेटाडेटा कुंजियाँ जोड़ सकते हैं:
sensitivity: medium
rules:
metadata_keys:
- api_key
- db_password
- internal_token
token_patterns:
custom_jwt: "\\beyJ[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\b"
corp_secret: "\\bcorp_[A-Za-z0-9]{24,}\\b"
फिर चलाएँ:
exfil-scan --input response.log --config ./my-config.yaml
मॉड्यूल ज़िम्मेदारियाँ:
exfil_scan/cli.py: तर्क पार्सिंग, इनपुट चयन, आउटपुट रेंडरिंग, निकास हैंडलिंगexfil_scan/config.py: डिफ़ॉल्ट, YAML लोडिंग, पुनरावर्ती मर्ज, प्रोफ़ाइल सामान्यीकरणexfil_scan/scanner.py: छह डिटेक्शन इंजन, फाइंडिंग डेटाक्लासेस, रिपोर्ट फ़ॉर्मेटिंगtests/test_scan.py: डिटेक्शन और आउटपुट-प्रारूप रिग्रेशन परीक्षणनिष्पादन प्रवाह:
| कोड | अर्थ |
|---|---|
0 | कोई निष्कर्ष नहीं (स्वच्छ) |
1 | निष्कर्ष पाए गए |
2 | रनटाइम या तर्क त्रुटि |
यह CI एकीकरण को सीधा बनाता है:
exfil-scan --directory ./artifacts --recursive --format json --output exfil-report.json
यदि कोई डिटेक्शन पाया जाता है, तो आपका जॉब निकास कोड 1 के आधार पर तुरंत विफल हो सकता है।
परीक्षण चलाएँ:
pytest
कवरेज में शामिल हैं:
exfil-scan एक ह्यूरिस्टिक स्कैनर है।
इसे जोखिम कम करने और संदिग्ध आउटपुट को सतह पर लाने के लिए डिज़ाइन किया गया है, न कि सामग्री सुरक्षा साबित करने के लिए।
अनुशंसित तैनाती पैटर्न:
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
पूर्ण शर्तों के लिए LICENSE देखें।
योगदान का स्वागत है। PR खोलते समय, शामिल करें:
| विकल्प | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
-i, --input | path | none | एक इनपुट फ़ाइल स्कैन करें |
-d, --directory | path | none | किसी निर्देशिका में सभी समर्थित फ़ाइलों को स्कैन करें |
-r, --recursive | flag | false | --directory के साथ नेस्टेड निर्देशिकाओं में पुनरावृत्ति करें |
-c, --config | path | none | YAML कॉन्फ़िग फ़ाइल पथ |
-s, --sensitivity | low|medium|high | config/default | संवेदनशीलता प्रोफ़ाइल ओवरराइड करें |
-f, --format | text|json|html|markdown | text | रिपोर्ट प्रारूप प्रस्तुत करें |
-o, --output | path | stdout | प्रस्तुत रिपोर्ट को फ़ाइल में लिखें |
--version | flag | n/a | CLI संस्करण प्रिंट करें |
-h, --help | flag | n/a | उपयोग और तर्क दिखाएँ |