𝗟𝗟𝗠 𝗣𝗿𝗼𝗺𝗽𝘁 𝗜𝗻𝗷𝗲𝗰𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗚𝘂𝗮𝗿𝗱𝗿𝗮𝗶𝗹 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆
LLMs मध्ये सूचना (instructions) आणि डेटा यांच्यामध्ये कोणतीही स्पष्ट सीमा नसते. कॉन्टेक्स्ट विंडोमधील (context window) सर्व काही टोकन्सचा एक प्रवाह असतो. जेव्हा हल्लेखोराचा डेटा सूचना म्हणून काम करतो, तेव्हा 'प्रॉम्प्ट इंजेक्शन' (prompt injection) घडते. तुम्ही केवळ फिल्टरिंग करून सुरक्षितता मिळवू शकत नाही. तुम्हाला 'डिफेन्स-इन-डेप्थ' (defense-in-depth) पद्धतीने याचे व्यवस्थापन करावे लागेल.
सामान्य संरक्षणात्मक उपायांचे अपयश:
- कीवर्ड ब्लॉकलिस्ट (Keyword Blocklists): हल्लेखोर त्यांना बगल देण्यासाठी समानार्थी शब्द, चुकीचे स्पेलिंग किंवा वेगवेगळ्या भाषांचा वापर करतात. स्ट्रिंग्स फिल्टर केल्याने हेतू (intent) फिल्टर होत नाही.
- आउटपुट रिडक्शन (Output Redaction): हल्लेखोर गुपिते (secrets) तुकड्यांमध्ये विभागू शकतात किंवा एन्कोड करू शकतात, ज्यामुळे थेट स्ट्रिंग मॅचिंग अयशस्वी होते.
- 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) वापर करा: वाईट कॅटेगरी शोधण्याऐवजी तुम्हाला आवश्यक असलेल्या विशिष्ट युनिकोड कॅटेगरी परिभाषित करा.
- डेटा नॉर्मलाईज करा (Normalize data): सर्व इनपुट्सवर NFKC-नॉर्मलायझेशन वापरा.
- गुपिते कमीत कमी ठेवा (Minimize secrets): मॉडेलला गरज नसेल तर संवेदनशील डेटा कॉन्टेक्स्ट विंडोमध्ये ठेवू नका.
- RAG ला अविश्वसनीय समजा: मॉडेलसाठी तुम्ही मिळवलेला कोणताही दस्तऐवज हा संभाव्य इंजेक्शन वेक्टर (injection vector) असू शकतो असे गृहीत धरा.
- विसंगतींवर लक्ष ठेवा: ज्या इनपुट्समध्ये दृश्यमान लांबी (visible length) आणि रॉ कोड-पॉइंट काउंट (raw code-point count) यामध्ये फरक आहे, त्यांना फ्लॅग करा.
सुरक्षा ही केवळ मॉडेलमधील त्रुटी नसून ती पाइपलाइनमधील त्रुटी आहे. याचे निराकरण तुमच्या ॲप्लिकेशन कोडमध्ये आहे.
Source: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
Optional learning community: https://t.me/GyaanSetuAi