DVMCP-യ്ക്കെതിരെ capgate പരീക്ഷിക്കുന്നു
Damn Vulnerable MCP (DVMCP) പ്രോജക്റ്റിലെ പത്ത് തകരാറുള്ള MCP സെർവറുകൾക്കെതിരെ ഞാൻ എന്റെ ടൂൾ ആയ capgate പരീക്ഷിച്ചു.
DVMCP ഒരു പഠന സഹായിയാണ്. പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (prompt injection), ടോക്കൺ മോഷണം (token theft), അല്ലെങ്കിൽ കമാൻഡ് ഇൻജക്ഷൻ (command injection) എന്നിങ്ങനെയുള്ള പ്രത്യേക ആക്രമണങ്ങൾ ഓരോ സെർവറും കാണിച്ചുതരുന്നു.
ലക്ഷ്യം ലളിതമായിരുന്നു. ഓരോ ടൂളിനും വേണ്ടി ഞാൻ കൃത്യമായ ഒരു manifest തയ്യാറാക്കി. തുടർന്ന് ഞാൻ ഒരു ചോദ്യം ചോദിച്ചു: capgate നിർമ്മിക്കുന്ന അതിർത്തി (boundary) യഥാർത്ഥത്തിൽ ആക്രമണത്തെ തടയുന്നുണ്ടോ?
ഒരു capability compiler-ന് എന്ത് ചെയ്യാൻ കഴിയും, എന്ത് ചെയ്യാൻ കഴിയില്ല എന്ന് ഈ ഫലങ്ങൾ കൃത്യമായി കാണിച്ചുതരുന്നു.
ഇത് തടയുന്നത് (The Bullseye) Challenge 3-ൽ, ഒരു ടൂളിന് അമിതമായ അനുമതികളുണ്ട് (excessive permissions). ഒരു ഫോൾഡർ മാത്രം വായിക്കാമെന്ന് അവകാശപ്പെടുമെങ്കിലും യഥാർത്ഥത്തിൽ മുഴുവൻ ഡിസ്കും വായിക്കാൻ അതിന് സാധിക്കും. ഒരു സ്വകാര്യ ഫോൾഡറിൽ നിന്ന് സിസ്റ്റം ക്രെഡൻഷ്യലുകൾ (system credentials) മോഷ്ടിക്കാനാണ് ആക്രമണം ശ്രമിക്കുന്നത്. capgate ഇത് തടയുന്നു. ഇത് manifest-നെ അനുവദിക്കപ്പെട്ട ഫോൾഡർ മാത്രം മൗണ്ട് ചെയ്യുന്ന ഒരു Docker container ആയി മാറ്റുന്നു. sandbox-നുള്ളിൽ സ്വകാര്യ ഫയലുകൾ നിലവിലില്ല. അതിനാൽ ആക്രമണം പരാജയപ്പെടുന്നു.
ഇത് നിയന്ത്രിക്കുന്നത് (The Middle Ground) Challenge 7-ൽ, ഒരു ടൂൾ ഒരു API key ചോർത്തുന്നു. ടൂൾ ആ കീ വായിക്കുന്നത് തടയാൻ capgate-ന് കഴിയില്ല, എന്നാൽ വിവരങ്ങൾ പുറത്തേക്ക് കൊണ്ടുപോകുന്നത് (exfiltration) ഇത് തടയുന്നു. ഒരു പ്രത്യേക ഹോസ്റ്റിലേക്ക് മാത്രം കണക്ഷനുകൾ അനുവദിക്കുന്ന ഒരു egress proxy ഇത് നിർമ്മിക്കുന്നു. അതിനാൽ മോഷ്ടിച്ച കീ ആക്രമണകാരിയുടെ സ്വന്തം സെർവറിലേക്ക് അയക്കാൻ അവർക്ക് കഴിയില്ല.
Challenge 8-ൽ, ഒരു ടൂൾ ഏത് ഷെൽ കമാൻഡുകളും (arbitrary shell commands) പ്രവർത്തിക്കാൻ അനുവദിക്കുന്നു. "ഏതൊരു ഷെല്ലും അനുവദിക്കുക" എന്ന് അതിന്റെ ഗ്രാമറിൽ പ്രകടിപ്പിക്കാൻ capgate-ന് കഴിയില്ല. പകരം, അത് ആ ടൂളിനെ ഒരു പരിധിക്കുള്ളിലാക്കുന്നു (boxes the tool). ഒരു ആക്രമണകാരി കമാൻഡ് പ്രവർത്തിപ്പിച്ചാൽ പോലും, ആ പ്രോസസ്സിന് നെറ്റ്വർക്കോ അധിക അധികാരങ്ങളോ (extra privileges) റീഡ്-ഒൺലി ഫയൽസിസ്റ്റമോ (read-only filesystem) ഉണ്ടായിരിക്കില്ല. അതിനാൽ നാശനഷ്ടങ്ങൾ പരിമിതമാണ്.
ഇത് പിഴവുകൾ സംഭവിക്കുന്നത് (The Limits) Challenge 1-ൽ, ആക്രമണം പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (prompt injection) ആണ്. നിർദ്ദേശങ്ങൾ അവഗണിക്കത്തക്ക രീതിയിൽ ആക്രമണകാരി മോഡലിനെ കബളിപ്പിക്കുന്നു. ഇവിടെ capgate ഒന്നും ചെയ്യുന്നില്ല. ഒരു sandbox compiler ഒരു ടൂളിന് എന്തിനൊക്കെ പ്രവേശനം ഉണ്ടെന്ന് പരിമിതപ്പെടുത്തുന്നുണ്ടെങ്കിലും, ഒരു LLM എന്ത് പറയുന്നു എന്ന് നിയന്ത്രിക്കാൻ അതിന് കഴിയില്ല.
ഒരു sandbox പ്രോംപ്റ്റ് ഇൻജക്ഷനെ തടയുമെന്ന് നിങ്ങൾ കരുതുന്നുണ്ടെങ്കിൽ, നിങ്ങൾ തെറ്റാണ്. നാശനഷ്ടങ്ങൾ കുറയ്ക്കുന്നതിലൂടെ പ്രോംപ്റ്റ് ഇൻജക്ഷന്റെ ഉപയോഗക്ഷമത കുറയ്ക്കാൻ മാത്രമേ അതിന് കഴിയൂ.
സംഗ്രഹം • ഒരു കൃത്യമായ പ്രതിരോധം. • നാല് അർത്ഥവത്തായ നിയന്ത്രണങ്ങൾ. • മൂന്ന് പിഴവുകൾ.
capgate ഒരു മാന്ത്രിക പരിഹാരമല്ല (silver bullet). ഇതൊരു പ്രതിരോധ പാളിയാണ് (layer of defense). "ഈ സെർവറിന് എന്തിലേക്കും പ്രവേശനം ഉണ്ട്" എന്ന അവസ്ഥയെ "ഈ സെർവറിന് ഒരു പ്രത്യേക പാത്തിലേക്ക് മാത്രമേ പ്രവേശനം ഉള്ളൂ" എന്നതിലേക്ക് ഇത് മാറ്റുന്നു.
Optional learning community: https://t.me/GyaanSetuAi