LLM પ્રોમ્પ્ટ ઇન્જેક્શન અને ગાર્ડરેલ સુરક્ષા
LLMs માં સૂચનાઓ (instructions) અને ડેટા વચ્ચે કોઈ સ્પષ્ટ સીમા હોતી નથી. કોન્ટેક્સ્ટ વિન્ડોમાં રહેલી દરેક વસ્તુ ટોકન્સનો એક જ પ્રવાહ છે. જ્યારે હુમલાખોરનો ડેટા સૂચના તરીકે કામ કરે છે, ત્યારે પ્રોમ્પ્ટ ઇન્જેક્શન થાય છે. તમે માત્ર ફિલ્ટર કરીને સુરક્ષિત બની શકતા નથી. તમારે 'ડિફેન્સ-ઇન-ડેપ્થ' (defense-in-depth) સાથે તેનું સંચાલન કરવું આવશ્યક છે.
સામાન્ય સુરક્ષા પદ્ધતિઓની નિષ્ફળતા:
- કીવર્ડ બ્લોકલિસ્ટ્સ (Keyword Blocklists): હુમલાખોરો તેને બાયપાસ કરવા માટે સમાનાર્થી શબ્દો, ખોટી જોડણી અથવા વિવિધ ભાષાઓનો ઉપયોગ કરે છે. સ્ટ્રિંગ્સને ફિલ્ટર કરવાથી ઈરાદા (intent) ને ફિલ્ટર કરી શકાતા નથી.
- આઉટપુટ રિડેક્શન (Output Redaction): હુમલાખોરો ગુપ્ત માહિતીના ટુકડા કરી શકે છે અથવા તેને એન્કોડ કરી શકે છે જેથી લિટરલ સ્ટ્રિંગ મેચ નિષ્ફળ જાય.
- LLM જજિસ (LLM Judges): કોઈ અલગ મોડેલને સોશિયલ એન્જિનિયરિંગ દ્વારા એવું માનવા માટે મજબૂર કરી શકાય છે કે કોઈ ગુપ્ત માહિતી નુકસાનકારક નથી.
- માનવીય સમીક્ષા (Human Review): માણસો રેન્ડર્ડ ટેક્સ્ટ જુએ છે, રો (raw) બાઈટ્સ નહીં. તેઓ ASCII સ્મગલિંગમાં વપરાતા છુપાયેલા અક્ષરો જોઈ શકતા નથી.
ASCII સ્મગલિંગ (ASCII Smuggling) એ એક મોટો ખતરો છે. તે સૂચનાઓને છુપાવવા માટે યુનિકોડ ટેગ્સ (Unicode Tags) અથવા ઝીરો-વિડ્થ સ્પેસ (zero-width spaces) જેવા અદ્રશ્ય અક્ષરોનો ઉપયોગ કરે છે. મોડેલ તેને વાંચે છે, પરંતુ માણસને કંઈ દેખાતું નથી. આનાથી ઈમેલ અથવા કેલેન્ડર દ્વારા ઓળખની છેતરપિંડી (identity spoofing) અને ડેટા એક્સફિલ્ટ્રેશન (data exfiltration) શક્ય બને છે.
તમારા એપ્લિકેશનનું રક્ષણ કેવી રીતે કરવું:
- રો પેલોડ્સને સેનિટાઇઝ કરો (Sanitize raw payloads): મોડેલ સુધી પહોંચતા પહેલા કંટ્રોલ કેરેક્ટર્સ અને ઝીરો-વિડ્થ કેરેક્ટર્સને દૂર કરો.
- એલોલિસ્ટ્સ (allowlists) નો ઉપયોગ કરો: ખરાબ કેટેગરીઓને શોધવાને બદલે તમને જરૂરી ચોક્કસ યુનિકોડ કેટેગરીઓ વ્યાખ્યાયિત કરો.
- ડેટા નોર્મલાઇઝ કરો (Normalize data): તમામ ઇનપુટ્સ પર NFKC-normalization નો ઉપયોગ કરો.
- ગુપ્ત માહિતી ઘટાડો (Minimize secrets): જો મોડેલને જરૂર ન હોય તો કોન્ટેક્સ્ટ વિન્ડોમાં સંવેદનશીલ ડેટા ન મૂકો.
- RAG ને અવિશ્વસનીય માનો: મોડેલ માટે તમે મેળવેલા કોઈપણ દસ્તાવેજને સંભવિત ઇન્જેક્શન વેક્ટર માનો.
- અસાધારણ બાબતો પર નજર રાખો: એવા ઇનપુટ્સને ફ્લેગ કરો જ્યાં દેખીતી લંબાઈ (visible length) રો કોડ-પોઈન્ટ કાઉન્ટ (raw code-point count) થી અલગ હોય.
સુરક્ષા એ પાઇપલાઇનનો ખામી છે, માત્ર મોડેલની ખામી નથી. તેનો ઉકેલ તમારા એપ્લિકેશન કોડમાં રહેલો છે.
Source: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
Optional learning community: https://t.me/GyaanSetuAi