𝗬𝗼𝘂𝗿 𝗥𝗲𝗽𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗜𝘀 𝗔𝗻 𝗔𝘁𝘁𝗮𝗰𝗸 𝗦𝘂𝗿𝗳𝗮𝗰𝗲 𝗡𝗼𝘄
AI സുരക്ഷ എന്നാൽ മോശം കോഡ് എഴുതുന്നതിൽ നിന്ന് ഒരു മോഡലിനെ തടയുക എന്നാണ് മിക്കവരും കരുതുന്നത്.
ആ കാഴ്ചപ്പാട് വളരെ പരിമിതമാണ്.
യഥാർത്ഥ അപകടം എന്നത് AI കോഡ് എഴുതുന്നതിന് മുമ്പ് വായിക്കുന്ന കാര്യങ്ങളിലാണ്. നിങ്ങളുടെ റെപ്പോസിറ്ററി (repository) ഇനി വെറുമൊരു കോഡ് സൂക്ഷിക്കാനുള്ള ഇടം മാത്രമല്ല. ഒരു AI ഏജന്റിനെ സംബന്ധിച്ചിടത്തോളം, അത് ഒരു ഇൻപുട്ട് സ്ട്രീം (input stream) ആണ്.
ഒരു ഏജന്റ് നിങ്ങളുടെ README, പഴയ മൈഗ്രേഷൻ കുറിപ്പുകൾ (migration notes), കാലഹരണപ്പെട്ട ഡോക്യുമെന്റേഷൻ, ലോക്കൽ ഇൻസ്ട്രക്ഷൻ ഫയലുകൾ എന്നിവ വായിക്കുന്നു. അത് डिपൻഡൻസി സ്ക്രിപ്റ്റുകൾ (dependency scripts), ഷെൽ ഹുക്കുകൾ (shell hooks), മുൻപത്തെ കോഡ് മാറ്റങ്ങൾ എന്നിവയും കാണുന്നു.
ഡെവലപ്പർമാർ പലപ്പോഴും ഈ കോൺടെക്സ്റ്റിനെ നിഷ്പക്ഷമായിട്ടാണ് കാണുന്നത്. പഴയ കുറിപ്പുകളെ അവർ വെറും അനാവശ്യമായവയായി കാണുന്നു. എന്നാൽ ഒരു AI ഏജന്റ് അവയെ നിർദ്ദേശങ്ങളായിട്ടാണ് കാണുന്നത്.
എന്താണ് സാധാരണ എന്ന് തീരുമാനിക്കാൻ ഒരു ഏജന്റ് നിങ്ങളുടെ പ്രോജക്റ്റ് കോൺടെക്സ്റ്റ് ഉപയോഗിക്കുകയാണെങ്കിൽ, തെറ്റായ കോൺടെക്സ്റ്റ് പ്രശ്നങ്ങൾക്ക് കാരണമായേക്കാം.
മോശം കോൺടെക്സ്റ്റ് നിസ്സാരമായേക്കാം:
- കാലഹരണപ്പെട്ട സെറ്റപ്പ് ഗൈഡുകൾ
- പഴയ APIs ഉപയോഗിക്കുന്ന ഉദാഹരണങ്ങൾ
- യാഥാർത്ഥ്യവുമായി പൊരുത്തപ്പെടാത്ത ആർക്കിടെക്ചർ കുറിപ്പുകൾ
- സുരക്ഷിതമല്ലാത്ത അനുമാനങ്ങളുള്ള ടെസ്റ്റ് ഫയലുകൾ
മോശം കോൺടെക്സ്റ്റ് ശത്രുതാപരമായേക്കാം:
- ഫയലുകളിൽ ഒളിപ്പിച്ചു വെച്ചിരിക്കുന്ന പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (Prompt injection) നിർദ്ദേശങ്ങൾ
- അധിക കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്ന डिपൻഡൻസി സ്ക്രിപ്റ്റുകൾ
- എക്സിക്യൂഷൻ പാത്തുകൾ (execution paths) വിപുലീകരിക്കുന്ന ഹുക്ക് കോൺഫിഗറേഷനുകൾ
- AI-യെ സുരക്ഷിതമല്ലാത്ത രീതികളിലേക്ക് നയിക്കുന്ന വിഷലിപ്തമായ (poisoned) ഉദാഹരണങ്ങൾ
പരാജയപ്പെടുന്ന രീതി ഒന്ന് തന്നെയാണ്. നിങ്ങൾ ഉദ്ദേശിക്കാത്ത ഒരു അടിസ്ഥാനത്തിൽ നിന്നാണ് ഏജന്റ് പ്രവർത്തിക്കുന്നത്.
ഇത് പരിഹരിക്കാൻ, ഏജന്റുകളെ വെറും ഓട്ടോകംപ്ലീറ്റ് (autocomplete) ടൂളുകളായി കാണുന്നത് നിങ്ങൾ നിർത്തണം. അവ ഓട്ടോമേഷൻ ആണ്. അവയെ ഇൻഫ്രാസ്ട്രക്ചർ (infrastructure) പോലെ പരിഗണിക്കുക.
നിങ്ങളുടെ വർക്ക്ഫ്ലോ സുരക്ഷിതമാക്കാൻ ഈ ഘട്ടങ്ങൾ പാലിക്കുക:
വ്യാപ്തി പരിമിതപ്പെടുത്തുക (Limit the scope) മൂന്ന് ഫയലുകൾ മാത്രം ആവശ്യമുള്ള ഒരു ഏജന്റിന് നിങ്ങളുടെ മുഴുവൻ സിസ്റ്റത്തിനും ആക്സസ് നൽകരുത്. പരിമിതമായ ജോലികളും (narrow tasks) ഡിസ്പോസബിൾ വർക്ക്ട്രീകളും (disposable worktrees) ഉപയോഗിക്കുക.
നിങ്ങളുടെ നിർദ്ദേശങ്ങൾ പരിശോധിക്കുക (Audit your instructions) മാർഗനിർദ്ദേശത്തിനായി നിങ്ങളുടെ ഏജന്റ് ഉപയോഗിക്കുന്ന ഫയലുകൾ വായിക്കുക. ഡോക്യുമെന്റേഷൻ പഴയതാണെങ്കിൽ, അത് നീക്കം ചെയ്യുകയോ ശരിയാക്കുകയോ ചെയ്യുക. അതിൽ കമാൻഡുകൾ ഉണ്ടെങ്കിൽ, അവയെ സിസ്റ്റം കോഡ് പോലെ പരിഗണിക്കുക.
എക്സിക്യൂഷൻ സുരക്ഷിതമാക്കുക (Harden execution) അപകടസാധ്യതയുള്ള ജോലികൾ ഒരു സാൻഡ്ബോക്സിൽ (sandbox) പ്രവർത്തിപ്പിക്കുക. നിങ്ങളുടെ ക്രെഡൻഷ്യലുകൾ (credentials) പരിമിതപ്പെടുത്തുക. CI പൈപ്പ്ലൈനുകൾ പരിശോധിക്കുന്നത് പോലെ ഹുക്ക് കോൺഫിഗറേഷനുകളും പരിശോധിക്കുക. ടെസ്റ്റുകൾ പ്രവർത്തിപ്പിക്കുന്നത് നിങ്ങളുടെ ഷെല്ലിലെ (shell) എല്ലാ രഹസ്യങ്ങൾക്കും (secrets) ആക്സസ് നൽകുന്നില്ലെന്ന് ഉറപ്പാക്കുക.
സുതാര്യത ഉറപ്പാക്കുക (Demand visibility) നിങ്ങൾക്ക് ഈ ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകാൻ കഴിയണം:
- ഏജന്റ് എന്താണ് വായിച്ചത്?
- അത് ഏതൊക്കെ ടൂളുകളാണ് വിളിച്ചത്?
- അത് ഏതൊക്കെ ഫയലുകളിലാണ് മാറ്റം വരുത്തിയത്?
- ഏതൊക്കെ കമാൻഡുകളാണ് പ്രവർത്തിച്ചത്?
- അത് എന്തൊക്കെ അനുമാനങ്ങളാണ് നടത്തിയത്?
ഒരു AI ഏജന്റിനെ ഷെൽ ആക്സസും (shell access) വേഗത്തിൽ ടൈപ്പ് ചെയ്യാനുള്ള കഴിവും ഉള്ള ഒരു ജൂനിയർ ഡെവലപ്പർ ആയി കരുതുക. ഒരു പുതിയ ജൂനിയർ ഡെവലപ്പർക്ക് ഒന്നാം ദിവസം തന്നെ നിങ്ങൾ പ്രൊഡക്ഷൻ ക്രെഡൻഷ്യലുകൾ (production credentials) നൽകില്ലല്ലോ. പകരം നിങ്ങൾ അവർക്ക് ചെറിയ ജോലികളും, വൃത്തിയുള്ള ഒരു എൻവയോൺമെന്റും, കർശനമായ റിവ്യൂ പ്രക്രിയയും നൽകും.
നിങ്ങളുടെ AI ഏജന്റുകളെയും അതുപോലെ തന്നെ പരിഗണിക്കുക.
നിങ്ങളുടെ കോൺടെക്സ്റ്റ് ക്ലീൻ ചെയ്യുക. നിങ്ങളുടെ സ്കോപ്പ് പരിമിതപ്പെടുത്തുക. നിങ്ങളുടെ എക്സിക്യൂഷൻ സാൻഡ്ബോക്സ് ചെയ്യുക. ഓരോ ഡിഫും ഒരു മനുഷ്യൻ എഴുതിയതുപോലെ പരിശോധിക്കുക.
സ്രോതസ്സ്: https://dev.to/hefty_69a4c2d631c9dd70724/your-repo-context-is-an-attack-surface-now-5dhj