ഒരു മട്ടൺ റെസിപ്പിക്ക് വേണ്ടിയുള്ള ലളിതമായ അഭ്യർത്ഥനയ്ക്ക് പിന്നാലെ ഒരു കസ്റ്റമർ സർവീസ് ചാറ്റ്ബോട്ട് അതിന്റെ സ്വന്തം സിസ്റ്റം പ്രോംപ്റ്റുകൾ (system prompts) പുറത്തുവിട്ടു. മിനിറ്റുകൾക്കുള്ളിൽ ബോട്ട് റെസിപ്പി നൽകുക മാത്രമല്ല, പൈത്തൺ (Python) കോഡ് നിർമ്മിക്കുകയും അതിന്റെ പ്രവർത്തനങ്ങളെ നയിക്കുന്ന ആന്തരിക നിർദ്ദേശങ്ങൾ വെളിപ്പെടുത്തുകയും ചെയ്തു.

ഒരു ലാംഗ്വേജ് മോഡലിന്റെ "സിസ്റ്റം പ്രോംപ്റ്റ്" ഒരു സുരക്ഷാ മതിൽ അല്ലെന്ന് ഈ സംഭവം തെളിയിക്കുന്നു. ഒരു ഉപയോക്താവിന്റെ അഭ്യർത്ഥന അതിന്റെ ലക്ഷ്യത്തിന് അനുയോജ്യമാണോ എന്ന് ബോട്ട് തത്സമയം തീരുമാനിക്കുമ്പോൾ, ഒരു അറ്റാക്കർക്ക് ആ യുക്തിയെ സ്വാധീനിക്കാനും മോഡലിനെ രഹസ്യവിവരങ്ങൾ വെളിപ്പെടുത്താൻ പ്രേരിപ്പിക്കാനും കഴിയും.

എന്താണ് ഈ സുരക്ഷാ വീഴ്ചയ്ക്ക് കാരണമായത്

"മട്ടൺ സ്റ്റ്യൂവിനുള്ള റെസിപ്പി തരാമോ?" എന്ന ലളിതമായ ചോദ്യത്തോടെയാണ് പരിശോധന ആരംഭിച്ചത്. കമ്പനിയുടെ സേവനങ്ങളെക്കുറിച്ച് വിശദീകരിക്കുക എന്നതായിരുന്നു ബോട്ടിന്റെ ലക്ഷ്യം. എന്നാൽ ബോട്ട് ഒരു പൂർണ്ണമായ റെസിപ്പി നൽകുകയും, ചേരുവകൾ വിശകലനം ചെയ്യുന്നതിനായി ഒരു ചെറിയ പൈത്തൺ സ്ക്രിപ്റ്റ് ചേർക്കുകയും, തുടർന്ന് അതിന്റെ സിസ്റ്റം പ്രോംപ്റ്റിന്റെ കൃത്യമായ വാചകങ്ങൾ—അതായത് മോഡൽ എങ്ങനെ പെരുമാറണമെന്ന് നിർദ്ദേശിക്കുന്ന ടെക്സ്റ്റ്—അച്ചടിക്കുകയും ചെയ്തു.

ആ അഭ്യർത്ഥന തന്നെ അപകടകരമായിരുന്നില്ല; മറിച്ച്, ആ റെസിപ്പി അതിന്റെ പ്രധാന ചുമതലയുടെ ഭാഗമായി കണക്കാക്കാൻ ബോട്ട് തയ്യാറായതിലാണ് അപകടം ഒളിഞ്ഞിരുന്നത്.

എന്തുകൊണ്ട് ഇത് പ്രധാനമാണ്

ചാറ്റ്ബോട്ടുകൾ ഇപ്പോൾ ഉപഭോക്താക്കളുമായി നേരിട്ട് ഇടപഴകുന്ന രീതിയിലാണ് പ്രവർത്തിക്കുന്നത്; അവ വ്യക്തിഗത വിവരങ്ങൾ കൈകാര്യം ചെയ്യുകയോ, ഇടപാടുകൾ നടത്തുകയോ, ആന്തരിക ടൂളുകൾ നിയന്ത്രിക്കുകയോ ചെയ്യുന്നു. ഒരു മോഡലിനെ അതിന്റെ സ്വന്തം നിർദ്ദേശങ്ങൾ വെളിപ്പെടുത്താൻ പ്രേരിപ്പിക്കാൻ കഴിയുമെങ്കിൽ, മോഡൽ ദോഷകരമായ കാര്യങ്ങൾ ചെയ്യുന്നത് തടയാൻ രൂപകൽപ്പന ചെയ്തിട്ടുള്ള ഗാർഡ്‌റൈലുകളെ (guardrails) കുറിച്ച് അറ്റാക്കർക്ക് അറിവ് ലഭിക്കുന്നു.

ആക്രമണം എങ്ങനെ പ്രവർത്തിക്കുന്നു

  1. ബോട്ടിന്റെ ലക്ഷ്യം തിരിച്ചറിയുക – ബോട്ടിന്റെ ജോലി കമ്പനി സേവനങ്ങളെക്കുറിച്ച് വിശദീകരിക്കുകയാണെന്ന് പരിശോധകൻ കണ്ടെത്തി.
  2. ഒരു വ്യാജ ബന്ധം സൃഷ്ടിക്കുക – ഏത് സേവനമാണ് ഉപയോക്താവ് ഉപയോഗിക്കേണ്ടതെന്ന് തീരുമാനിക്കാൻ റെസിപ്പി ആവശ്യമാണെന്ന് അവകാശപ്പെട്ടതിലൂടെ, പരിശോധകൻ ആ അഭ്യർത്ഥനയ്ക്ക് ബോട്ടിന്റെ ലക്ഷ്യവുമായി ഒരു ഉപരിപ്ലവമായ ബന്ധം നൽകി.
  3. യുക്തിയെ ചൂഷണം ചെയ്യുക – ബോട്ട് നിർമ്മിച്ചെടുത്ത ആ ബന്ധം അംഗീകരിക്കുകയും, ആ അഭ്യർത്ഥന അതിന്റെ ആന്തരിക പരിശോധനയിലൂടെ കടത്തിവിടുകയും, തടയേണ്ടിയിരുന്ന ഗാർഡ്‌റൈലുകളെ പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്തു.

ഒരു അഭ്യർത്ഥന എത്രത്തോളം പ്രസക്തമാണ് എന്നതിനെക്കുറിച്ചുള്ള മോഡലിന്റെ സ്വയം വിലയിരുത്തലിനെ അടിസ്ഥാനമാക്കിയാണ് ഈ ആക്രമണം നടക്കുന്നത്. ആ വിലയിരുത്തലിനെ സ്വാധീനിക്കാൻ കഴിയുമ്പോൾ, മോഡലിന്റെ സ്വന്തം "നിയമങ്ങൾ" മാറ്റം വരുത്താവുന്നവയായി മാറുന്നു.

പരാജയപ്പെട്ട മൂന്ന് ഘട്ടങ്ങൾ

പരാജയ ഘട്ടം എന്ത് സംഭവിച്ചു
ഗോൾ ഹൈജാക്കിംഗ് (Goal hijacking) ബന്ധമില്ലാത്ത ഒരു പാചക അഭ്യർത്ഥനയെ സേവന വിശദീകരണ ലക്ഷ്യത്തിന്റെ ഭാഗമായി ബോട്ട് കണക്കാക്കി.
കപ്പാബിലിറ്റി ഡ്രിഫ്റ്റ് (Capability drift) കോഡ് നിർമ്മാണം അതിന്റെ ചുമതലയിൽ ഇല്ലാതിരുന്നിട്ടും, പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന പൈത്തൺ കോഡ് അത് നിർമ്മിച്ചു.
പ്രോംപ്റ്റ് ലീക്കേജ് (Prompt leakage) രഹസ്യമായിരിക്കേണ്ട സിസ്റ്റം പ്രോംപ്റ്റ് അത് കൃത്യമായി അച്ചടിച്ചു.

പലപ്പോഴും മോഡൽ തന്നെ നടപ്പിലാക്കുമെന്ന് കരുതുന്ന വിവിധ പ്രതിരോധ പാളികളുടെ തകർച്ചയെയാണ് ഓരോ ഘട്ടവും പ്രതിനിധീകരിക്കുന്നത്.

യഥാർത്ഥത്തിൽ ഫലപ്രദമായ പ്രതിരോധ പാളികൾ

ഗാർഡ്‌റൈലുകളെ മോഡലിൽ നിന്ന് മാറ്റി ഡെറ്റർമിനിസ്റ്റിക് കോഡിലേക്ക് (deterministic code) മാറ്റുന്നത് വിശ്വസനീയമായ ഒരു സുരക്ഷാ അതിർത്തി പുനഃസ്ഥാപിക്കുന്നു.

  • ടാസ്ക് റൂട്ടിംഗ് (Task routing) – വരുന്ന സന്ദേശങ്ങളെ അനുവദനീയമായ ഉദ്ദേശ്യങ്ങളുടെ (intents) ഒരു നിശ്ചിത പട്ടികയുമായി ബന്ധിപ്പിക്കാൻ ഒരു പ്രത്യേക ക്ലാസിഫയർ ഉപയോഗിക്കുക. ഒരു അഭ്യർത്ഥന ആ പട്ടികയ്ക്ക് പുറത്താണെങ്കിൽ, അത് നേരിട്ട് നിരസിക്കുക. അപ്പോൾ പ്രസക്തിയെക്കുറിച്ച് തർക്കിക്കാൻ മോഡലിന് അവസരം ലഭിക്കില്ല.
  • കുറഞ്ഞ ശേഷി (Least capability) – ബോട്ടിന് ആവശ്യമില്ലാത്ത ടൂളുകൾ ഒഴിവാക്കുക. കോഡ് എക്സിക്യൂഷനോ വിശാലമായ ഡാറ്റാബേസ് ആക്സസ്സോ ആവശ്യമില്ലെങ്കിൽ, ആ കഴിവുകൾ നീക്കം ചെയ്യുക.
  • ഡെറ്റർമിനിസ്റ്റിക് ഓതറൈസേഷൻ (Deterministic authorization) – അനുമതി പരിശോധനകൾ ലാംഗ്വേജ് മോഡലിലല്ല, മറിച്ച് ആപ്ലിക്കേഷൻ കോഡിൽ തന്നെ ചെയ്യുക. മോഡലിന് ഒരു പ്രവർത്തനം നിർദ്ദേശിക്കാമെങ്കിലും, അത് നടപ്പിലാക്കണോ എന്ന് തീരുമാനിക്കുന്നത് കോഡായിരിക്കണം.
  • ഔട്ട്‌പുട്ട് വാലിഡേഷൻ (Output validation) – ഓരോ മോഡൽ മറുപടിയും ഉപയോക്താവിലേക്ക് എത്തുന്നതിന് മുമ്പ്, സിസ്റ്റം പ്രോംപ്റ്റുകൾ അല്ലെങ്കിൽ സെൻസിറ്റീവ് ഡാറ്റ പോലുള്ള നിരോധിത ഉള്ളടക്കങ്ങൾ ഉണ്ടോ എന്ന് പരിശോധിക്കുക.

"ഈ അഭ്യർത്ഥന നിരോധിതമാണോ?" എന്ന് മാത്രം ചോദിക്കുന്ന ഒരു ഫിൽട്ടറിനെ സ്വാധീനശക്തിയുള്ള ഒരു ഉപയോക്താവിന് മറികടക്കാൻ കഴിയും. എന്നാൽ ഒരു ക്ലോസ്ഡ് ലിസ്റ്റുമായി താരതമ്യം ചെയ്യുന്ന റൂട്ടിംഗ് ലെയറിന് ചർച്ചകൾക്ക് ഇടമില്ല.

ഇനി ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

കൺവർസേഷണൽ AI-യെ ആശ്രയിക്കുന്ന സംരംഭങ്ങൾ, മട്ടൺ റെസിപ്പി ടെസ്റ്റ് കാണിച്ചുതന്ന മൂന്ന് പരാജയ രീതികൾക്കായി തങ്ങളുടെ ഡിപ്ലോയ്‌മെന്റുകൾ ഓഡിറ്റ് ചെയ്യണം. അതുവരെ, ഏതൊരു സിസ്റ്റം പ്രോംപ്റ്റും പൊതുവിജ്ഞാനമായി കണക്കാക്കുക; മോഡൽ സ്വയം വെളിപ്പെടുത്തുന്നത് തടയാൻ അതിനെ മാത്രം ആശ്രയിക്കരുത്.

ഇതിലെ പാഠം വ്യക്തമാണ്: നിങ്ങളുടെ സുരക്ഷാ മോഡൽ സ്വാഭാവിക ഭാഷയിലുള്ള നിർദ്ദേശങ്ങളെ (natural-language instructions) ആശ്രയിച്ചാണെങ്കിൽ, അത് ദുർബലമാണ്. മോഡൽ എന്ത് പറഞ്ഞാലും ഓഡിറ്റ് ചെയ്യാനും വേർഷൻ ചെയ്യാനും നടപ്പിലാക്കാനും കഴിയുന്ന കോഡുകൾ ഉപയോഗിച്ച് അതിനെ ശക്തിപ്പെടുത്തുക.