AI-സജ്ജീകരിച്ച GitHub Actions ഒരു കമന്റിലൂടെ മാത്രം തട്ടിയെടുക്കപ്പെടാം (hijacked). ഇത് വഴി API കീകൾ, ക്ലൗഡ് ടോക്കണുകൾ, മറ്റ് രഹസ്യ വിവരങ്ങൾ എന്നിവ ചോർത്താൻ സാധ്യതയുണ്ട്. ഒരു പബ്ലിക് ട്രിഗർ, “skip prompts” ഫ്ലാഗ് ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന ഒരു AI ടൂൾ, വെളിപ്പെടുത്തപ്പെട്ട രഹസ്യ വിവരങ്ങൾ എന്നിവ ചേർന്ന് വിവരങ്ങൾ ചോർത്താൻ എളുപ്പമുള്ള ഒരു വഴി സൃഷ്ടിക്കുന്ന 22 ഓപ്പൺ സോഴ്സ് റിപ്പോസിറ്ററികൾ ഒരു സുരക്ഷാ ഗവേഷകൻ കണ്ടെത്തി.

ഈ പിഴവ് എങ്ങനെ പ്രവർത്തിക്കുന്നു

പല പ്രോജക്റ്റുകളും ഇപ്പോൾ AI ഏജന്റുകളെ—Claude Code, GitHub Copilot CLI എന്നിവയുൾപ്പെടെ—നേരിട്ട് CI പൈപ്പ്‌ലൈനുകളിൽ ഉൾപ്പെടുത്തുന്നുണ്ട്. ഒരു വർക്ക്ഫ്ലോ സ്റ്റെപ്പ് ഒരു ഷെൽ കമാൻഡ് പ്രവർത്തിപ്പിക്കുകയും, ഇന്ററാക്ടീവ് പെർമിഷൻ അഭ്യർത്ഥനകൾ അവഗണിക്കണമെന്ന് ടൂളിനോട് പറയുന്ന ഒരു ഫ്ലാഗ് ചേർക്കുകയും ചെയ്യുന്നു. ഒരു പബ്ലിക് ഇൻപുട്ട്—അതായത് ഒരു ഇഷ്യൂ, ഒരു കമന്റ്, അല്ലെങ്കിൽ ഒരു പുൾ റിക്വസ്റ്റ് ടൈറ്റിൽ—ലൂടെ വർക്ക്ഫ്ലോ ആരംഭിക്കുമ്പോൾ, AI ഒരു കമാൻഡ് ആയി പരിഗണിക്കുന്ന ഒരു വരി ടെക്സ്റ്റ് പോസ്റ്റ് ചെയ്താൽ മാത്രം മതി ആക്രമണകാരിക്ക് കാര്യം നടക്കും.

“skip prompts” ഫ്ലാഗ് കാരണം നിയന്ത്രണങ്ങളില്ലാത്ത ഷെൽ ആക്സസ് ലഭിച്ച AI, വർക്ക്ഫ്ലോ വെളിപ്പെടുത്തുന്ന ഏതൊരു എൻവയോൺമെന്റ് വേരിയബിളോ ഫയലോ വായിക്കും. ആ ജോബിൽ API കീകൾ, ക്ലൗഡ് സർവീസ് ടോക്കണുകൾ അല്ലെങ്കിൽ ഫുൾ സർവീസ്-അക്കൗണ്ട് ക്രെഡൻഷ്യലുകൾ തുടങ്ങിയ രഹസ്യ വിവരങ്ങൾ ലോഡ് ചെയ്യുന്നുണ്ടെങ്കിൽ, AI ആ വിവരങ്ങൾ ആക്രമണകാരിയുടെ നിയന്ത്രണത്തിലുള്ള ഒരു സെർവറിലേക്ക് അയക്കും. ഇതിനായി കോഡിൽ മാറ്റങ്ങളോ പുതിയ ഡിപെൻഡൻസികളോ ആവശ്യമില്ല, വെറുമൊരു നിസ്സാരമെന്ന് തോന്നുന്ന കമന്റ് മതിയാകും.

യഥാർത്ഥ ലോക ഉദാഹരണങ്ങൾ

ഗവേഷകൻ ഇതിനകം പരിഹരിക്കപ്പെട്ട (patched) മൂന്ന് സുരക്ഷാ പിഴവുകളുള്ള റിപ്പോസിറ്ററികൾ സ്ഥിരീകരിച്ചു:

  • pymc-labs/pymc-marketing – പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (prompt injection) വഴി ഒരു പബ്ലിക് ഇഷ്യൂ ഉപയോഗിച്ച് Anthropic API കീ കൈക്കലാക്കാൻ സാധിക്കും.
  • MadAppGang/dingo – ഈ വർക്ക്ഫ്ലോ Claude Code-ന് പൂർണ്ണമായ Bash ആക്സസ് നൽകുകയും ഒരേ ജോബിൽ തന്നെ രണ്ട് രഹസ്യ വിവരങ്ങൾ വെളിപ്പെടുത്തുകയും ചെയ്തു.
  • MadAppGang/claudish – dingo പ്രോജക്റ്റിലെ അതേ സുരക്ഷാ പിഴവുള്ള ടെംപ്ലേറ്റ് തന്നെ ഇതിലും ഉപയോഗിച്ചിരുന്നു.

ഒരു സജീവമായ ക്ലൗഡ്-സർവീസ് അക്കൗണ്ട് കീ കണ്ടെത്തിയതിനെത്തുടർന്ന്, ഗവേഷകൻ അത് ഒരു പ്രമുഖ AI പ്രൊവൈഡറുടെ സുരക്ഷാ ടീമിനെ നേരിട്ട് അറിയിച്ചു. മറ്റ് പന്ത്രണ്ട് റിപ്പോർട്ടുകൾ മെയിന്റൈനർമാരുടെ പക്കൽ പരിശോധനക്കായി നിലവിലുണ്ട്; പരിഹാരങ്ങൾ നടപ്പിലാക്കുന്നത് വരെ അവരുടെ പേരുകൾ വെളിപ്പെടുത്തിയിട്ടില്ല.

എന്താണ് അപകടസാധ്യത

ഒരു ആക്രമണകാരി രഹസ്യ വിവരങ്ങൾ ചോർത്തിക്കഴിഞ്ഞാൽ, അതിന്റെ ആഘാതം പെട്ടെന്നുള്ളതും വലിയ സാമ്പത്തിക നഷ്ടമുണ്ടാക്കുന്നതും ആകാം. ഒരു ക്ലൗഡ്-സർവീസ് അക്കൗണ്ട് കീ ഉപയോഗിച്ച് കമ്പ്യൂട്ട് റിസോഴ്സുകൾ, സ്റ്റോറേജ് ബക്കറ്റുകൾ, മറ്റ് പെയ്ഡ് സർവീസുകൾ എന്നിവയിലേക്ക് നിയന്ത്രണങ്ങളില്ലാത്ത ആക്സസ് ലഭിക്കും. ഒരു ലാർജ്-ലാംഗ്വേജ് മോഡൽ പ്രൊവൈഡറുടെ API കീ ഉപയോഗിച്ച് പരിധിയില്ലാത്ത ക്വറികൾ നടത്താനും അതുവഴി ആയിരക്കണക്കിന് ഡോളർ ചിലവാകാനും സാധ്യതയുണ്ട്. ഈ എക്സ്പ്ലോയിറ്റ് CI എൻവയോൺമെന്റിനുള്ളിൽ തന്നെ പ്രവർത്തിക്കുന്നതിനാൽ, ബ്രീച്ച് താഴെ പറയുന്ന രീതിയിൽ പടരാം: കോംപ്രമൈസ് ചെയ്യപ്പെട്ട റണ്ണറിൽ നിർമ്മിക്കുന്ന ഏതൊരു ആർട്ടീഫക്റ്റിലും മാൽവേരിയസ് കോഡ് ഉൾപ്പെട്ടേക്കാം, ഇത് ഒരു സിംഗിൾ റിപ്പോസിറ്ററിയെ ഒരു സപ്ലൈ-ചെയിൻ വെക്റ്ററാക്കി മാറ്റുന്നു.

AI സഹായത്തോടെയുള്ള CI ഉപയോഗിക്കുന്ന ടീമുകൾക്ക് ഇത് വലിയൊരു വെല്ലുവിളിയാണ്. ഓട്ടോ-ജനറേറ്റഡ് കോഡ്, ലിന്റിംഗ് അല്ലെങ്കിൽ ഡോക്യുമെന്റേഷൻ എന്നിവയുടെ സൗകര്യം ഒരു പബ്ലിക് കമന്റ് രഹസ്യമായ ഒരു ബാക്ക്‌ഡോർ ആയി മാറാനുള്ള സാധ്യതയുമായി തുലനം ചെയ്യേണ്ടതുണ്ട്.

എന്തുകൊണ്ടാണ് ഈ പിഴവ് തിരിച്ചറിയാൻ പ്രയാസമാകുന്നത്

ഗവേഷകൻ ആദ്യം സമർപ്പിച്ച ആറ് റിപ്പോർട്ടുകൾ പിന്നീട് പിൻവലിക്കേണ്ടി വന്നു. GitHub Actions-ന്റെ പെർമിഷൻ ചെക്കുകളെക്കുറിച്ചുള്ള അനുമാനങ്ങൾ കാരണമാണ് ഇത് സംഭവിച്ചത്, അല്ലാതെ ആക്ഷന്റെ സോഴ്സ് കോഡ് പരിശോധിക്കാത്തതുകൊണ്ടല്ല. ഡോക്യുമെന്റേഷനും ഉൾക്കാഴ്ചയും തെറ്റിദ്ധരിപ്പിച്ചേക്കാം; AI-സജ്ജീകരിച്ച ഒരു സ്റ്റെപ്പിന്റെ സുരക്ഷാ നിലവാരം സ്ഥിരീകരിക്കാനുള്ള ഏക വിശ്വസനീയമായ മാർഗ്ഗം, ആ ടൂൾ പ്രവർത്തിപ്പിക്കുന്ന കോഡും അത് ബന്ധിപ്പിച്ചിരിക്കുന്ന വർക്ക്ഫ്ലോ YAML-ഉം പരിശോധിക്കുക എന്നതാണ്.

പ്രതിരോധ മാർഗങ്ങൾ (Mitigation checklist)

നിങ്ങൾ ഒരു GitHub Actions വർക്ക്ഫ്ലോയിൽ ഒരു AI CLI അല്ലെങ്കിൽ സമാനമായ ടൂൾ ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, മെർജ് ചെയ്യുന്നതിന് മുമ്പ് ഈ രണ്ട് ചോദ്യങ്ങൾക്ക് ഉത്തരം കണ്ടെത്തുക:

  1. ആരാണ് വർക്ക്ഫ്ലോ പ്രവർത്തിപ്പിക്കാൻ (trigger) കഴിയുന്നത്? ട്രിഗറുകൾ വിശ്വസനീയമായ ഇവന്റുകളിലേക്ക് (ഉദാഹരണത്തിന്, പ്രൊട്ടക്റ്റഡ് ബ്രാഞ്ചുകളിലേക്കുള്ള പുഷുകൾ) പരിമിതപ്പെടുത്തുക, അല്ലെങ്കിൽ പുറത്തുനിന്നുള്ള കൺട്രിബ്യൂട്ടർമാർ തുടങ്ങുന്ന റണ്ണുകൾക്ക് വ്യക്തമായ അനുമതി ആവശ്യമാക്കുക. അധിക നിയന്ത്രണങ്ങളില്ലാതെ on: issue_comment അല്ലെങ്കിൽ on: issues ഉപയോഗിക്കുന്നത് ഒഴിവാക്കുക.

  2. ഏത് രഹസ്യ വിവരങ്ങളാണ് ഒരേ ജോബിൽ ലോഡ് ചെയ്യുന്നത്? നിയന്ത്രണങ്ങളില്ലാത്ത ഷെൽ ആക്സസ് ഉള്ള ഒരു AI ഏജന്റ് പ്രവർത്തിക്കുന്ന ജോബിൽ ഒരിക്കലും API കീകൾ, ക്ലൗഡ് ടോക്കണുകൾ അല്ലെങ്കിൽ സർവീസ്-അക്കൗണ്ട് ക്രെഡൻഷ്യലുകൾ വെളിപ്പെടുത്തരുത്. രഹസ്യ വിവരങ്ങൾ അടങ്ങിയ സ്റ്റെപ്പുകളെ AI ടൂളുകൾ ഉപയോഗിക്കാത്ത ഒറ്റപ്പെട്ട ജോബുകളിലേക്കോ റണ്ണറുകളിലേക്കോ മാറ്റുക.

കൂടുതൽ സുരക്ഷാ നടപടികൾ:

  • പെർമിഷൻ പ്രോംപ്റ്റുകൾ ഒഴിവാക്കുന്ന ഫ്ലാഗ് നീക്കം ചെയ്യുക, അങ്ങനെ ഷെൽ കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് മുമ്പ് AI ടൂൾ വ്യക്തമായ സ്ഥിരീകരണം ആവശ്യപ്പെടാൻ നിർബന്ധമാക്കുക.
  • AI ടൂളിന് വായിക്കാൻ കഴിയുന്ന ഏതൊരു എൻവയോൺമെന്റ് വേരിയബിളും ക്ലീൻ ചെയ്യുകയോ (sanitize) മറച്ചുവെക്കുകയോ (redact) ചെയ്യുന്ന ഒരു സ്റ്റെപ്പ് ചേർക്കുക.
  • വിവരങ്ങൾ ചോർത്തുന്നത് തടയാൻ നെറ്റ്‌വർക്ക് എഗ്രസ് കൺട്രോളുകൾ (network egress controls) ഉള്ള സെൽഫ്-ഹോസ്റ്റഡ് റണ്ണറുകൾ ഉപയോഗിക്കുക.

മറ്റൊരു വശം: CI-ൽ AI-യുടെ ഉപയോഗം

ഉൽപ്പാദനക്ഷമതയിലെ വർദ്ധനവ് അപകടസാധ്യതയേക്കാൾ വലുതാണെന്ന് ഇതിനെ അനുകൂലിക്കുന്നവർ വാദിക്കുന്നു. ഓട്ടോമേറ്റഡ് കോഡ് നിർദ്ദേശങ്ങൾ റിവ്യൂ സമയം കുറയ്ക്കുകയും AI അധിഷ്ഠിത ടെസ്റ്റിംഗ് ബഗുകൾ നേരത്തെ കണ്ടെത്താൻ സഹായിക്കുകയും ചെയ്യുന്നു. എന്നിരുന്നാലും, ഇതേ സൗകര്യം തന്നെ അറ്റാക്ക് സർഫസ് വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു. AI ഉപേക്ഷിക്കുക എന്നതല്ല, മറിച്ച് ഷെൽ-ലെവൽ പ്രിവിലേജുകൾ ഉള്ള ഏതൊരു ടൂളിനെയും ഒരു സാധ്യമായ വെക്റ്ററായി കാണുക എന്നതാണ് പ്രധാനം.

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

ഈ കണ്ടെത്തലുകൾ AI-സജ്ജീകരിച്ച Actions-ന് കൂടുതൽ കർശനമായ ഡിഫോൾട്ട് പെർമിഷനുകൾ നൽകുന്നതിനെക്കുറിച്ച് GitHub-ന്റെ സെക്യൂരിറ്റി ഫോറങ്ങളിൽ ഇതിനകം തന്നെ ചർച്ചകൾക്ക് തുടക്കമിട്ടിട്ടുണ്ട്. ഭാവിയിലെ പ്ലാറ്റ്‌ഫോം അപ്‌ഡേറ്റുകളിൽ ഇവ ഉൾപ്പെട്ടേക്കാം:

  • നേരിട്ടുള്ള ഷെൽ ആക്സസ് ഇല്ലാതെ, AI ടൂളുകളെ ഒരു സാൻഡ്‌ബോക്സ്ഡ് എൻവയോൺമെന്റിൽ പ്രവർത്തിക്കാൻ നിർബന്ധിക്കുന്ന ഒരു ഫ്ലാഗ്.
  • ഇഷ്യൂ ബോഡികളിലോ കമന്റുകളിലോ ഉള്ള പ്രോംപ്റ്റ്-ഇഞ്ചക്ഷൻ പാറ്റേണുകൾ തിരിച്ചറിയാനുള്ള സംവിധാനം.
  • ഒരു വർക്ക്ഫ്ലോയിൽ പബ്ലിക് ട്രിഗറുകളും സീക്രട്ടുകൾ അടങ്ങിയ ജോബുകളും ഒരേസമയം ഉപയോഗിക്കുമ്പോൾ ലഭിക്കുന്ന ഓട്ടോമേറ്റഡ് അലേർട്ടുകൾ.

നിലവിൽ, ഇതിന്റെ ഉത്തരവാദിത്തം റിപ്പോസിറ്ററി മെയിന്റൈനർമാരുടെ മേലാണ്. തിരിച്ചറിഞ്ഞ 22 റിപ്പോസിറ്ററികളും സൂചിപ്പിക്കുന്നത് ഈ പ്രശ്നം ഒറ്റപ്പെട്ടതല്ല എന്നാണ്; ഇതേ വർക്ക്ഫ്ലോ പാറ്റേൺ പിന്തുടരുന്ന ഏതൊരു പ്രോജക്റ്റും അപകടസാധ്യതയുള്ളതാണ്. ഒരു അറ്റാക്കർ കണ്ടെത്തുന്നതിന് മുമ്പ് തന്നെ CI കോൺഫിഗറേഷനുകൾ വേഗത്തിൽ ഓഡിറ്റ് ചെയ്യുന്നത് വഴി ഈ പ്രശ്നം കണ്ടെത്താൻ സാധിക്കും.

ചുരുക്കത്തിൽ: ഒരു പബ്ലിക് GitHub ഇഷ്യൂവിലെ ഒരു വരി ടെക്സ്റ്റ് മതി നിങ്ങളുടെ CI എൻവയോൺമെന്റിന്മേൽ ഒരു AI ഏജന്റിന് പൂർണ്ണ നിയന്ത്രണം നൽകാനും അവിടെ നിങ്ങൾ സൂക്ഷിച്ചിരിക്കുന്ന സീക്രട്ടുകൾ മോഷ്ടിക്കാനും. നിങ്ങളുടെ വർക്ക്ഫ്ലോകൾ ആർക്കൊക്കെ തുടങ്ങാൻ കഴിയുമെന്ന് പരിശോധിക്കുക, AI ഉപയോഗിക്കുന്ന ഘട്ടങ്ങളിൽ നിന്ന് സീക്രട്ടുകൾ അകറ്റി നിർത്തുക, നിയന്ത്രണമില്ലാത്ത പെർമിഷനുകൾ നൽകുന്ന ഓരോ ഫ്ലാഗും സൂക്ഷ്മമായി പരിശോധിക്കുക. ഒരു സുരക്ഷാ വീഴ്ച ഉണ്ടായാൽ ഉണ്ടാകുന്ന ആഘാതം, കൃത്യമായ പരിശോധനയ്ക്കായി എടുക്കുന്ന പ്രയത്നത്തേക്കാൾ എത്രയോ വലുതാണ്.