LLM प्रॉम्प्ट इंजेक्शन और गार्डरेल सुरक्षा
LLMs में निर्देशों (instructions) और डेटा के बीच कोई स्पष्ट सीमा नहीं होती है। कॉन्टेक्स्ट विंडो (context window) में सब कुछ टोकन का एक ही प्रवाह (stream) होता है। प्रॉम्प्ट इंजेक्शन तब होता है जब हमलावर का डेटा निर्देशों के रूप में कार्य करता है। आप केवल फ़िल्टरिंग के माध्यम से सुरक्षा प्राप्त नहीं कर सकते। आपको इसे 'डिफेंस-इन-डेप्थ' (defense-in-depth) के साथ प्रबंधित करना होगा।
सामान्य सुरक्षा उपायों (defenses) की विफलता:
- कीवर्ड ब्लॉकलिस्ट (Keyword Blocklists): हमलावर इनसे बचने के लिए पर्यायवाची शब्दों, गलत वर्तनी (misspellings), या विभिन्न भाषाओं का उपयोग करते हैं। स्ट्रिंग्स को फ़िल्टर करने से इरादे (intent) को फ़िल्टर नहीं किया जा सकता।
- आउटपुट रेडैक्शन (Output Redaction): हमलावर रहस्यों को खंडित (fragment) या एनकोड कर सकते हैं ताकि लिटरल स्ट्रिंग मैच विफल हो जाए।
- LLM जज (LLM Judges): एक अलग मॉडल को सोशल इंजीनियरिंग के माध्यम से यह विश्वास दिलाने के लिए हेरफेर किया जा सकता है कि कोई रहस्य हानिरहित है।
- मानवीय समीक्षा (Human Review): इंसान रेंडर किया गया टेक्स्ट देखते हैं, रॉ बाइट्स (raw bytes) नहीं। वे ASCII स्मगलिंग में उपयोग किए जाने वाले छिपे हुए वर्णों (hidden characters) को नहीं देख सकते।
ASCII स्मगलिंग (ASCII Smuggling) एक बड़ा खतरा है। यह निर्देशों को छिपाने के लिए यूनिकोड टैग्स (Unicode Tags) या ज़ीरो-विड्थ स्पेस (zero-width spaces) जैसे अदृश्य वर्णों का उपयोग करता है। मॉडल उन्हें पढ़ लेता है, लेकिन इंसान को कुछ दिखाई नहीं देता। यह ईमेल या कैलेंडर के माध्यम से पहचान की धोखाधड़ी (identity spoofing) और डेटा चोरी (data exfiltration) की अनुमति देता है।
अपने एप्लिकेशन की रक्षा कैसे करें:
- रॉ पेलोड को सैनिटाइज करें (Sanitize raw payloads): मॉडल तक पहुँचने से पहले कंट्रोल कैरेक्टर्स और ज़ीरो-विड्थ कैरेक्टर्स को हटा दें।
- अलालिस्ट (Allowlists) का उपयोग करें: खराब श्रेणियों का पीछा करने के बजाय उन विशिष्ट यूनिकोड श्रेणियों को परिभाषित करें जिनकी आपको आवश्यकता है।
- डेटा को नॉर्मलाइज़ करें: सभी इनपुट्स पर NFKC-नॉर्मलाइजेशन का उपयोग करें।
- रहस्यों को कम से कम रखें: यदि मॉडल को आवश्यकता नहीं है, तो कॉन्टेक्स्ट विंडो में संवेदनशील डेटा न डालें।
- RAG को अविश्वसनीय मानें: मान लें कि मॉडल के लिए आपके द्वारा प्राप्त किया गया कोई भी दस्तावेज़ एक संभावित इंजेक्शन वेक्टर (injection vector) हो सकता है।
- विसंगतियों (anomalies) पर नज़र रखें: उन इनपुट्स को फ्लैग करें जहाँ दृश्य लंबाई (visible length) रॉ कोड-पॉइंट काउंट (raw code-point count) से भिन्न होती है।
सुरक्षा एक पाइपलाइन की खामी है, न कि केवल एक मॉडल की खामी। इसका समाधान आपके एप्लिकेशन कोड में निहित है।
स्रोत: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi