# मॉडल, Packages और Plugins dependencies के रूप में — LLM Application Security

Source: https://www.geekswithgeeks.com/hi/llm-security/p-supply

> मॉडल files और AI tooling पर सामान्य supply-chain स्वच्छता लागू करें।

## आप दूसरों का कोड और डेटा चलाते हैं

LLM application कई तृतीय-पक्ष हिस्सों पर निर्भर है: hubs से डाउनलोड की **मॉडल files**, **Python और JavaScript packages**, **datasets**, **agent plugins और MCP servers**, **prompt templates** और **container images**। हर एक दुर्भावनापूर्ण या compromised हो सकता है। व्यावहारिक नियम: **भरोसेमंद, सत्यापन-योग्य स्रोतों** से डाउनलोड करें; **संस्करण pin करें और hashes या हस्ताक्षर verify करें**; dependencies scan करें; लोड होने पर कोड चला सकने वाले formats की जगह **सुरक्षित serialisation formats** (जैसे safetensors या सादा JSON) पसंद करें; अपरिचित मॉडल और tools **sandbox** में चलाएँ; तृतीय-पक्ष **plugins और tools** की माँगी अनुमतियों की समीक्षा करें; **मिलते-जुलते नामों** (typosquatting, AI सहायक द्वारा गढ़े package नामों समेत जिन्हें हमलावर पंजीकृत कर सकते हैं) से सावधान रहें; और उपयोग किए मॉडल, datasets व packages का licences सहित **bill of materials** रखें। मॉडल providers को vendors मानें: उनकी सुरक्षा और डेटा शर्तों की समीक्षा करें।

## जो लोड करते हैं उस पर भरोसा करें; जो परोसते हैं उसे बाँधें

मॉडल, packages और plugins dependencies हैं; requests और tokens वे संसाधन हैं जिन्हें हमलावर जला सकता है।

![तीन क्षेत्र: artefacts, plugins, खपत।](assets/figures/llm-security/section-6-map.svg) — चित्र 6.1 — Artefacts, plugins और खपत।

## अविश्वसनीय pickle लोड करना कोड चलाता है, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। यहाँ सारे हमले स्थानीय डेटा पर हानिरहित प्रदर्शन हैं, कोई असली system उपयोग नहीं हुआ। ऐसे object को unpickle करना जिसका `__reduce__` `print` लौटाता है, लोड होने के दौरान वही call चलाता है; यहाँ यह हानिरहित print है, पर असली हमलावर कोई भी command चलाता। JSON, केवल-डेटा format, कोड नहीं चला सकता। इसीलिए अविश्वसनीय स्रोतों की pickle-आधारित मॉडल files ख़तरनाक हैं।

```python
import pickle, json

class Payload:                                               # a harmless stand-in for a malicious object
    def __reduce__(self):
        return (print, ("[!] code ran while LOADING the file",))

blob = pickle.dumps(Payload())
print("loading an untrusted pickle...")
pickle.loads(blob)                                           # merely loading executes code

data = json.loads('{"weights": [0.1, 0.2]}')                  # data-only formats cannot run code on load
print("json loaded safely:", data)

```

Output:

```
loading an untrusted pickle...
[!] code ran while LOADING the file
json loaded safely: {'weights': [0.1, 0.2]}
```

## Bill of materials रखें

मॉडल, datasets और packages को संस्करण व licences सहित सूचीबद्ध करें ताकि एक के compromised होने पर जल्दी प्रतिक्रिया दे सकें।

**Quiz:** अज्ञात स्रोत की pickle file लोड करना जोखिम भरा क्यों है?

- [ ] Pickle files हमेशा बहुत बड़ी होती हैं
- [x] Unpickling लोड होने के दौरान मनमाना कोड चला सकता है
- [ ] Pickle संख्याएँ नहीं रख सकता
- [ ] यह सिर्फ़ प्रशिक्षण धीमा करता है

*Answer:* Unpickling लोड होने के दौरान मनमाना कोड चला सकता है. केवल-डेटा formats पसंद करें और किसी भी मॉडल file का स्रोत verify करें।
