
मॉडल सीरियलाइज़ेशन हमलों से सुरक्षा
मशीन लर्निंग (ML) मॉडल इंटरनेट पर, टीमों के भीतर और टीमों के बीच सार्वजनिक रूप से साझा किए जाते हैं। फाउंडेशन मॉडल के उदय ने सार्वजनिक ML मॉडलों के आगे के प्रशिक्षण/फाइन-ट्यूनिंग के लिए बढ़ते उपभोग को जन्म दिया है। ML मॉडलों का उपयोग महत्वपूर्ण निर्णय लेने और मिशन-महत्वपूर्ण अनुप्रयोगों को संचालित करने के लिए तेजी से किया जा रहा है। इसके बावजूद, मॉडलों की स्कैनिंग अभी भी उस कठोरता के साथ नहीं की जाती जिसके साथ आपके इनबॉक्स में आई PDF फ़ाइल की जाती है।
इसे बदलने की आवश्यकता है, और सही टूलिंग पहला कदम है।

ModelScan Protect AI का एक ओपन सोर्स प्रोजेक्ट है जो यह निर्धारित करने के लिए मॉडलों को स्कैन करता है कि उनमें असुरक्षित कोड है या नहीं। यह कई मॉडल फॉर्मेट को सपोर्ट करने वाला पहला मॉडल स्कैनिंग टूल है। ModelScan वर्तमान में निम्न का समर्थन करता है: H5, Pickle, और SavedModel फॉर्मेट। यह आपको PyTorch, TensorFlow, Keras, Sklearn, XGBoost का उपयोग करते समय सुरक्षित रखता है, और आगे और भी फॉर्मेट आ रहे हैं।
यदि आप अपने मॉडलों को स्कैन करना शुरू करने के लिए तैयार हैं, तो यह सरल है:
pip install modelscan
इसे इंस्टॉल करने के बाद, एक मॉडल स्कैन करें:
modelscan -p /path/to/model_file.pkl
मॉडल अक्सर स्वचालित पाइपलाइनों से बनाए जाते हैं, कुछ किसी डेटा वैज्ञानिक के लैपटॉप से आ सकते हैं। दोनों ही स्थितियों में, उपयोग से पहले मॉडल को एक मशीन से दूसरी मशीन पर स्थानांतरित करना आवश्यक होता है। मॉडल को डिस्क पर सहेजने की वह प्रक्रिया सीरियलाइज़ेशन कहलाती है।
मॉडल सीरियलाइज़ेशन हमला वह है जिसमें वितरण से पहले सीरियलाइज़ेशन (सेविंग) के दौरान मॉडल की सामग्री में दुर्भावनापूर्ण कोड जोड़ा जाता है — ट्रोजन हॉर्स का एक आधुनिक संस्करण।
यह हमला मॉडलों की सेविंग और लोडिंग प्रक्रिया का फायदा उठाकर कार्य करता है। जब आप model = torch.load(PATH) के साथ एक मॉडल लोड करते हैं, तो PyTorch फ़ाइल की सामग्री खोलता है और उसके भीतर के कोड को चलाना शुरू कर देता है। मॉडल लोड करते ही एक्सप्लॉइट निष्पादित हो जाता है।
मॉडल सीरियलाइज़ेशन हमले का उपयोग निम्न को निष्पादित करने के लिए किया जा सकता है:
ये हमले अविश्वसनीय रूप से सरल हैं और आप हमारे 📓notebooks फ़ोल्डर में कार्यशील उदाहरण देख सकते हैं।
ModelScan मजबूत ओपन-सोर्स स्कैनिंग प्रदान करता है। यदि आपको व्यापक AI सुरक्षा की आवश्यकता है, तो Guardian पर विचार करें। यह हमारा एंटरप्राइज़-ग्रेड मॉडल स्कैनिंग उत्पाद है।

यदि आपके मशीन लर्निंग फ्रेमवर्क के साथ मॉडल लोड करना स्वचालित रूप से हमले को निष्पादित करता है, तो ModelScan दुर्भावनापूर्ण कोड को लोड किए बिना मॉडल की सामग्री की जाँच कैसे करता है?
सरल, यह फ़ाइल की सामग्री को एक स्ट्रिंग की तरह एक बार में एक बाइट पढ़ता है, असुरक्षित कोड सिग्नेचर की तलाश में। यह इसे अविश्वसनीय रूप से तेज़ बनाता है, मॉडलों को उस समय में स्कैन करता है जो आपके कंप्यूटर को डिस्क से कुल फ़ाइल आकार को प्रोसेस करने में लगता है (अधिकांश मामलों में सेकंड)। यह सुरक्षित भी है।
ModelScan असुरक्षित कोड को इस प्रकार वर्गीकृत करता है:

यदि कोई समस्या पाई जाती है, तो कारण निर्धारित करने के लिए तुरंत मॉडल के निर्माता से संपर्क करें।
कुछ मामलों में, डेटा वैज्ञानिक के रूप में चीजों का पुनरुत्पादन आसान बनाने के लिए मॉडल में कोड एम्बेडेड हो सकता है, लेकिन यह आपको हमले के प्रति खोल देता है। यह निर्धारित करने के लिए अपने विवेक का उपयोग करें कि क्या यह आपके वर्कलोड के लिए उपयुक्त है।
यह लगातार विस्तारित होता रहेगा, इसलिए हमारे रिलीज़ नोट्स में बदलावों पर नज़र रखें।
वर्तमान में, ModelScan सभी Pickle व्युत्पन्न फॉर्मेट और कई अन्य का समर्थन करता है:
ModelScan आपके सिस्टम पर एक Python पैकेज के रूप में इंस्टॉल किया जाता है (Python 3.9 से 3.12 समर्थित)। जैसा कि ऊपर दिखाया गया है, आप इसे अपने टर्मिनल में यह चलाकर इंस्टॉल कर सकते हैं:
pip install modelscan
इसे अपने प्रोजेक्ट की निर्भरताओं में शामिल करने के लिए ताकि यह सभी के लिए उपलब्ध हो, इसे अपने requirements.txt या pyproject.toml में इस प्रकार जोड़ें:
modelscan = ">=0.1.1"
Tensorflow या HD5 फॉर्मेट वाले मॉडलों के स्कैनर के लिए एक्स्ट्रा के साथ इंस्टॉलेशन की आवश्यकता होती है:
pip install 'modelscan[ tensorflow, h5py ]'
ModelScan CLI के माध्यम से निम्नलिखित आर्ग्युमेंट्स का समर्थन करता है:
याद रखें कि मॉडल किसी भी अन्य रूप के डिजिटल मीडिया की तरह हैं, उपयोग से पहले आपको किसी भी अविश्वसनीय स्रोत की सामग्री को स्कैन करना चाहिए।
CLI एग्ज़िट स्टेटस कोड निम्न हैं:
0: स्कैन सफलतापूर्वक पूरा हुआ, कोई भेद्यता नहीं मिली1: स्कैन सफलतापूर्वक पूरा हुआ, भेद्यताएँ मिलीं2: स्कैन विफल, स्कैनिंग के दौरान modelscan ने एक त्रुटि उत्पन्न की3: टूल को कोई समर्थित फ़ाइल पास नहीं की गई4: उपयोग त्रुटि, CLI को अमान्य या अपूर्ण विकल्प पास किए गएजबकि ModelScan को CLI के माध्यम से आसानी से उपयोग किया जा सकता है, आप इसे सीधे अपने Python अनुप्रयोगों या वर्कफ़्लो में भी एकीकृत कर सकते हैं।
from modelscan.modelscan import ModelScan
from modelscan.settings import DEFAULT_SETTINGS
# Initialize ModelScan with default settings
scanner = ModelScan(settings=DEFAULT_SETTINGS)
# Scan a model file or directory
results = scanner.scan("/path/to/model_file.pkl")
# Check if issues were found
if scanner.issues.all_issues:
print(f"Found {len(scanner.issues.all_issues)} issues!")
# Access issues by severity
issues_by_severity = scanner.issues.group_by_severity()
for severity, issues in issues_by_severity.items():
print(f"{severity}: {len(issues)} issues")
# Generate a report (default is console output)
scanner.generate_report()
आप स्कैन व्यवहार को अपनी स्वयं की सेटिंग्स के साथ अनुकूलित कर सकते हैं:
# Start with default settings and customize
custom_settings = DEFAULT_SETTINGS.copy()
# Update settings as needed
custom_settings["reporting"]["module"] = "modelscan.reporting.json_report.JSONReport"
custom_settings["reporting"]["settings"]["output_file"] = "scan_results.json"
# Initialize with custom settings
scanner = ModelScan(settings=custom_settings)
एक बार स्कैन पूरा हो जाने पर, यदि कोई समस्या पाई जाती है तो आपको इस प्रकार का आउटपुट दिखाई देगा:

यहाँ हमारे पास एक ऐसा मॉडल है जिसमें ReadFile और WriteFile दोनों के लिए एक असुरक्षित ऑपरेटर है। स्पष्ट रूप से हम नहीं चाहते कि हमारे मॉडल मनमाने ढंग से फ़ाइलें पढ़ें और लिखें। अब हम इस मॉडल के निर्माता से संपर्क करेंगे ताकि यह निर्धारित किया जा सके कि वे इससे क्या करने की अपेक्षा करते हैं। इस विशेष मामले में यह एक हमलावर को हमारे AWS क्रेडेंशियल पढ़ने और उन्हें किसी अन्य स्थान पर लिखने की अनुमति देता है।
उपयोग के लिए यह एक सख्त NO है।
एड-हॉक स्कैनिंग एक बेहतरीन पहला कदम है, कृपया इसे स्वयं, सहकर्मियों और मित्रों में इस आदत के रूप में डालें कि जब भी वे किसी नए मॉडल को एक्सप्लोर करने के लिए डाउनलोड करें तो यह करें। यह प्रोडक्शन MLOps प्रक्रियाओं के लिए सुरक्षा में सुधार करने के लिए पर्याप्त नहीं है।
निम्नलिखित को पूरा करने के लिए मॉडल स्कैनिंग को एक से अधिक बार करने की आवश्यकता है:
नीचे दिए गए लाल ब्लॉक एक पारंपरिक ML पाइपलाइन में इसे उजागर करते हैं।

प्रक्रियाएँ फाइन-ट्यूनिंग या LLM, फाउंडेशनल मॉडल, या बाहरी मॉडल के किसी भी संशोधन के लिए समान होंगी।
यदि यह आपकी ML पाइपलाइनों के बाहर किया जाता है, तो मॉडलों की तैनाती के दौरान उपयोग को सुरक्षित करने के लिए अपने CI/CD सिस्टम की तैनाती प्रक्रियाओं में स्कैन एम्बेड करें।
📓notebooks फ़ोल्डर के अंदर आप कई नोटबुक एक्सप्लोर कर सकते हैं जो दिखाते हैं कि TensorFlow और PyTorch जैसे विभिन्न ML फ्रेमवर्क के विरुद्ध मॉडल सीरियलाइज़ेशन हमले कैसे किए जा सकते हैं।
यह जानने के लिए कि ये हमले वास्तव में कैसे काम करते हैं, 🖹 मॉडल सीरियलाइज़ेशन हमला एक्सप्लेनर देखें।
यदि आप स्टैटिक संदर्भ में मॉडलों का मूल्यांकन करने के लिए कोई अन्य दृष्टिकोण पाते हैं, तो कृपया संपर्क करें, हमें और अधिक जानना अच्छा लगेगा!
Copyright 2024 Protect AI
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
हम Matthieu Maitre से काफी प्रेरित थे, जिन्होंने PickleScan बनाया। हम उनके काम की सराहना करते हैं और ModelScan के साथ इसे महत्वपूर्ण रूप से विस्तारित किया है। ModelScan को PickleScan के समान भावना से OSS किया गया है।
हमें खुशी होगी यदि आप हमारे ओपन सोर्स ModelScan प्रोजेक्ट में योगदान करें। यदि आप योगदान देना चाहते हैं, तो कृपया योगदान पृष्ठ पर दिए गए विवरण का पालन करें।
| ML लाइब्रेरी | API | सीरियलाइज़ेशन फॉर्मेट | modelscan समर्थन |
|---|
| Pytorch | torch.save() and torch.load() | Pickle | हाँ |
| Tensorflow | tf.saved_model.save() | Protocol Buffer | हाँ |
| Keras | keras.models.save(save_format= 'h5') | HD5 (Hierarchical Data Format) | हाँ |
| keras.models.save(save_format= 'keras') | Keras V3 (Hierarchical Data Format) | हाँ | |
| क्लासिक ML लाइब्रेरीज़ (Sklearn, XGBoost आदि) | pickle.dump(), dill.dump(), joblib.dump(), cloudpickle.dump() | Pickle, Cloudpickle, Dill, Joblib | हाँ |
| उपयोग | आर्ग्युमेंट | विवरण |
|---|
modelscan -h | -h or --help | उपयोग सहायता देखें |
modelscan -v | -v or --version | संस्करण जानकारी देखें |
modelscan -p /path/to/model_file | -p or --path | स्थानीय रूप से संग्रहीत मॉडल स्कैन करें |
modelscan -p /path/to/model_file --settings-file ./modelscan-settings.toml | --settings-file | कस्टम कॉन्फ़िगरेशन का उपयोग करके स्थानीय रूप से संग्रहीत मॉडल स्कैन करें |
modelscan create-settings-file | -l or --location | एक कॉन्फ़िगर करने योग्य सेटिंग्स फ़ाइल बनाएं |
modelscan -r | -r or --reporting-format | आउटपुट का प्रारूप। विकल्प हैं console, json, या custom (settings-file में परिभाषित किए जाने हेतु)। डिफ़ॉल्ट console है |
modelscan -r reporting-format -o file-name | -o or --output-file | आउटपुट रिपोर्ट के लिए वैकल्पिक फ़ाइल नाम |
modelscan --show-skipped | --show-skipped | स्कैन के दौरान छोड़ी गई फ़ाइलों की सूची प्रिंट करें |