ഞാൻ Claude Code-ന് താക്കോലുകൾ നൽകി. ഒരു വേർമും (Worm) അത് ചെയ്തു.
AI കോഡിംഗ് ഏജന്റുകൾ ജയിലബ്രേക്ക് ചെയ്യപ്പെടുകയല്ല ചെയ്യുന്നത്. നിങ്ങൾ അവയെ എന്തിനുവേണ്ടിയാണോ നിർമ്മിച്ചത്, അത് തന്നെയാണ് അവ ചെയ്യുന്നത്. കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കാൻ അവ നിങ്ങളുടെ ക്രെഡൻഷ്യലുകൾ ഉപയോഗിക്കുന്നു. പ്രശ്നം എന്തെന്നാൽ, അക്രമികൾക്ക് (attackers) ഇൻപുട്ട് നൽകാൻ സാധിക്കും എന്നതാണ്.
അടുത്തകാലത്തുണ്ടായ സുരക്ഷാ വീഴ്ചകൾ (vulnerabilities) ഇത് സംഭവിക്കുന്ന മൂന്ന് വ്യത്യസ്ത രീതികൾ കാണിക്കുന്നു.
- സപ്ലൈ ചെയിൻ വേർം (The Supply Chain Worm)
Mini Shai-Hulud എന്ന പേരുള്ള ഒരു വേർം 170-ലധികം പാക്കേജുകളെ ബാധിച്ചു. ഇത് താക്കോലുകൾ മോഷ്ടിച്ച് പോകുക മാത്രമല്ല ചെയ്യുന്നത്. ഇത് നിങ്ങളുടെ കോൺഫിഗറേഷൻ ഫയലുകളിൽ (config files) സ്വയം എഴുതിച്ചേർക്കുന്നു. ഇത്
.vscode/tasks.jsonഅല്ലെങ്കിൽ.claude/settings.jsonഫയലുകളിൽ ഒളിച്ചിരിക്കുന്നു. നിങ്ങൾ ഒരു ഫോൾഡർ തുറക്കുമ്പോഴോ ഒരു സെഷൻ തുടങ്ങുമ്പോഴോ ഈ ഫയലുകൾ ഓട്ടോമാറ്റിക്കായി കോഡ് പ്രവർത്തിപ്പിക്കുന്നു. നിങ്ങൾ മോശം പാക്കേജ് ഡിലീറ്റ് ചെയ്താലും, ആ മാൽവേരിയസ് ഹുക്ക് (malicious hook) നിങ്ങളുടെ ഡിസ്കിൽ തന്നെ അവശേഷിക്കും.
- സപ്ലൈ ചെയിൻ വേർം (The Supply Chain Worm)
Mini Shai-Hulud എന്ന പേരുള്ള ഒരു വേർം 170-ലധികം പാക്കേജുകളെ ബാധിച്ചു. ഇത് താക്കോലുകൾ മോഷ്ടിച്ച് പോകുക മാത്രമല്ല ചെയ്യുന്നത്. ഇത് നിങ്ങളുടെ കോൺഫിഗറേഷൻ ഫയലുകളിൽ (config files) സ്വയം എഴുതിച്ചേർക്കുന്നു. ഇത്
- അലൗലിസ്റ്റ് ബൈപാസ് (The Allowlist Bypass)
ഓട്ടോ-റൺ സുരക്ഷിതമാക്കാൻ Cursor എഡിറ്റർ ഒരു അലൗലിസ്റ്റ് (allowlist) ഉപയോഗിക്കുന്നു.
exportപോലുള്ള ഷെൽ ബിൽറ്റ്-ഇന്നുകൾ (shell built-ins) ഉപയോഗിച്ച് ഇതിനെ മറികടക്കാൻ അക്രമികൾക്ക് സാധിച്ചു. പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (prompt injection) ഉപയോഗിച്ച്, ഒരു അക്രമിക്കായി ഏജന്റിനെ ഒരു വിഷലിപ്തമായ എൻവയോൺമെന്റ് വേരിയബിൾ (poisoned environment variable) സെറ്റ് ചെയ്യാൻ പ്രേരിപ്പിക്കാം. ഇത് അംഗീകരിച്ച ഒരു കമാൻഡ് നിങ്ങൾ ഉദ്ദേശിക്കാത്ത രീതിയിൽ പ്രവർത്തിക്കാൻ കാരണമാകുന്നു. ഈ സുരക്ഷാ നിയന്ത്രണം പരാജയപ്പെട്ടത് അത് മനുഷ്യർക്ക് വേണ്ടിയാണോ നിർമ്മിച്ചത്, യന്ത്രങ്ങൾക്കല്ല എന്നതുകൊണ്ടാണ്.
- അലൗലിസ്റ്റ് ബൈപാസ് (The Allowlist Bypass)
ഓട്ടോ-റൺ സുരക്ഷിതമാക്കാൻ Cursor എഡിറ്റർ ഒരു അലൗലിസ്റ്റ് (allowlist) ഉപയോഗിക്കുന്നു.
- പ്രോട്ടോക്കോൾ പിഴവ് (The Protocol Flaw)
mcp-remoteപ്രോക്സിക്ക് ഗുരുതരമായ ഒരു കമാൻഡ് ഇൻജക്ഷൻ പിഴവുണ്ട് (command injection flaw). നിങ്ങൾ ഒരു മാൽവേരിയസ് MCP സെർവറുമായി ബന്ധപ്പെട്ടാൽ, ഹാൻഡ്ഷേക്കിനിടെ (handshake) അത് നിങ്ങളുടെ മെഷീനിൽ കമാൻഡുകൾ പ്രവർത്തിപ്പിച്ചേക്കാം. ക്ലയന്റ് താൻ ബന്ധപ്പെടുന്ന സെർവറിനെ വിശ്വസിക്കുന്നത് കൊണ്ടാണ് ഇത് സംഭവിക്കുന്നത്.
- പ്രോട്ടോക്കോൾ പിഴവ് (The Protocol Flaw)
ഇതിന്റെ കാതലായ പ്രശ്നം ലളിതമാണ്. ഒരു കോഡിംഗ് ഏജന്റ് ഡാറ്റയും കമാൻഡുകളും തമ്മിലുള്ള അതിർവരമ്പ് ഇല്ലാതാക്കുന്നു. ഒരു LLM നിർദ്ദേശങ്ങളെയും (instructions) പുറത്തുനിന്നുള്ള ഡാറ്റയെയും ഒരേപോലെ കാണുന്നു. നിങ്ങൾ പറയുന്നതും ലോകം ഏജന്റിനോട് പറയുന്നതും തമ്മിൽ യാതൊരു വേർതിരിവുമില്ല.
നിങ്ങളെ എങ്ങനെ സംരക്ഷിക്കാം:
- നിങ്ങളുടെ എൻവയോൺമെന്റ് വേരിയബിളുകളിൽ (environment variables) ദീർഘകാലം നിലനിൽക്കുന്ന കീകൾക്ക് പകരം കുറഞ്ഞ സമയം മാത്രം നിലനിൽക്കുന്ന ടോക്കണുകൾ ഉപയോഗിക്കുക.
- രഹസ്യവിവരങ്ങളോ (secrets) പ്രൊഡക്ഷനോ (production) സ്പർശിക്കുന്ന ഏതൊരു ടാസ്കിനും ഓട്ടോ-റൺ ഓഫ് ചെയ്യുക.
.claude/settings.jsonപോലുള്ള നിങ്ങളുടെ കോൺഫിഗറേഷൻ ഫയലുകളിൽ അപ്രതീക്ഷിതമായ മാറ്റങ്ങൾ ഉണ്ടോ എന്ന് ശ്രദ്ധിക്കുക.- പ്രൊവനൻസ് അറ്റസ്റ്റേഷനുകളെ (provenance attestations) ഉറവിടത്തിന്റെ തെളിവായി കാണുക, സുരക്ഷയുടെ തെളിവായിട്ടല്ല.
- നിങ്ങളുടെ ഡിപെൻഡൻസികളെ (dependencies) പ്രത്യേക ഹാഷുകളിലേക്ക് (hashes) പിൻ ചെയ്യുക.
നിങ്ങളുടെ AI ഏജന്റിനെ മറ്റ് ഉയർന്ന അധികാരമുള്ള പ്രോസസ്സുകൾ (high-privilege processes) പോലെ പരിഗണിക്കുക. അതിന് കർശനമായ അതിർവരമ്പുകൾ ആവശ്യമാണ്.
നിങ്ങൾ ഏജന്റുകളെ ഓട്ടോ-റൺ മോഡിൽ പ്രവർത്തിപ്പിക്കുന്നുണ്ടെങ്കിൽ, അത് എപ്പോൾ പ്രവർത്തിപ്പിക്കണം എന്നും എപ്പോൾ നിർത്തണം എന്നും നിങ്ങൾ എങ്ങനെ തീരുമാനിക്കും?
Source: https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
Optional learning community: https://t.me/GyaanSetuAi