AI ഏജന്റ് Pull Requests വഴി സുരക്ഷാ പരിഹാരങ്ങൾ നിർദ്ദേശിക്കുന്നു

ഒരു സുരക്ഷാ മുന്നറിയിപ്പ് (security alert) ലഭിക്കുന്നു. ഒരു LLM അതിന്റെ സാഹചര്യം വിശകലനം ചെയ്യുന്നു. അത് ഒരു കോൺഫിഗറേഷൻ പരിഹാരം തയ്യാറാക്കുന്നു. തുടർന്ന് ഒരു GitHub Pull Request തുറക്കുന്നു. രണ്ടാമതൊരു LLM ആ ജോലി പരിശോധിക്കുന്നു. ഒടുവിൽ ഒരു മനുഷ്യൻ ആ പരിഹാരം മെർജ് (merge) ചെയ്യുന്നു.

ഈ ഏജന്റ് ഒരിക്കലും പ്രൊഡക്ഷൻ (production) പരിസ്ഥിതിയിൽ നേരിട്ട് ഇടപെടുന്നില്ല. അത് സ്വയം മെർജ് ചെയ്യുന്നതുമില്ല.

സാധാരണ Kubernetes കൺട്രോളറുകൾ വീണ്ടും ശ്രമിക്കുക (retry) മാത്രമേ ചെയ്യുന്നുള്ളൂ. തെറ്റായ കോൺഫിഗറേഷൻ കാരണം ഒരു പോഡ് (pod) ക്രാഷ് ആയാൽ, കൺട്രോളർ അത് വീണ്ടും വീണ്ടും റീസ്റ്റാർട്ട് ചെയ്തുകൊണ്ടേയിരിക്കും. ഇത് പ്രശ്നത്തിന്റെ മൂലകാരണം പരിഹരിക്കുന്നില്ല. സുരക്ഷാ രംഗത്തും ഇതേ പ്രശ്നമുണ്ട്. ഒരു SIEM മുന്നറിയിപ്പ് നൽകുന്നു. അത് വായിച്ച് പരിഹാരം എഴുതാൻ ഒരു മനുഷ്യൻ ആവശ്യമാണ്. ഈ പ്രക്രിയ വളരെ സാവധാനത്തിലാണ് നടക്കുന്നത്.

ഇത് പരിഹരിക്കാനായി ഞങ്ങൾ ഒരു ഏജന്റ് നിർമ്മിച്ചു. ഇത് സുരക്ഷാ മുന്നറിയിപ്പുകൾ വായിക്കുകയും ഇൻഫ്രാസ്ട്രക്ചർ പരിശോധിക്കുകയും ചെയ്ത് ഒരു ഡ്രാഫ്റ്റ് (draft) തയ്യാറാക്കുന്നു. ഇതൊരു ഓട്ടോപൈലറ്റ് (autopilot) സംവിധാനമല്ല, മറിച്ച് ഒരു ഡ്രാഫ്റ്റ് ജനറേറ്റർ മാത്രമാണ്. മറ്റെല്ലാ കാര്യങ്ങളും മനുഷ്യന്റെയും GitOps നിയന്ത്രണത്തിലും തുടരുന്നു.

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു:

• Wazuh ആക്രമണങ്ങൾ കണ്ടെത്തുകയും മുന്നറിയിപ്പുകൾ ഒരു ഡാറ്റാബേസിൽ സേവ് ചെയ്യുകയും ചെയ്യുന്നു. • ഒരു ബ്രിഡ്ജ് (bridge) പുതിയ മുന്നറിയിപ്പുകൾ എടുക്കുകയും ഏജന്റിനെ പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു. • ഏജന്റ് പരിമിതമായ ടൂളുകൾ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ. ഫയലുകൾ വായിക്കാനും എഴുതാനും, ബ്രാഞ്ചുകൾ (branches) നിർമ്മിക്കാനും, GitHub API ഉപയോഗിക്കാനും ഇതിന് സാധിക്കും. കോൺഫിഗറേഷൻ ഫയലുകളിൽ മാത്രമേ ഇത് മാറ്റങ്ങൾ വരുത്തുകയുള്ളൂ. • ArgoCD റെപ്പോ (repo) നിരീക്ഷിക്കുന്നു. ഒരു മനുഷ്യൻ PR മെർജ് ചെയ്യുന്നത് വരെ ഒന്നും ഡിപ്ലോയ് (deploy) ചെയ്യപ്പെടില്ല.

ഞങ്ങൾ രണ്ട് സുരക്ഷാ പാളികൾ (safety layers) ഉപയോഗിക്കുന്നു:

  1. കോഡ് പരിശോധനകൾ (Code checks). LLM അല്ലാത്ത നിയമങ്ങൾ ഉപയോഗിച്ച് മാറ്റങ്ങൾ (diff) പരിശോധിക്കുന്നു. മാറ്റങ്ങൾ കോൺഫിഗറേഷൻ ഫയലുകളിൽ മാത്രമാണോ എന്ന് ഞങ്ങൾ ഉറപ്പുവരുത്തുന്നു. സെർവർ പാത്ത് (server path) മുന്നറിയിപ്പുമായി പൊരുത്തപ്പെടുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നു. മാറ്റങ്ങളുടെ വലിപ്പം (size of the diff) പരിശോധിക്കുന്നു. പരിശോധനയിൽ പരാജയപ്പെട്ടാൽ PR തടയപ്പെടുന്നു.

  2. രണ്ടാമതൊരു LLM റിവ്യൂ. മറ്റൊരു മോഡൽ ഫാമിലി PR പരിശോധിക്കുന്നു. അത് ഒരു അഭിപ്രായം നൽകുന്നു. മോഡലുകൾ പലപ്പോഴും തങ്ങൾ തന്നെ നൽകിയ ഉത്തരങ്ങളോട് യോജിച്ചുപോകുന്നതിനാൽ ഞങ്ങൾ മറ്റൊരു മോഡൽ ഉപയോഗിക്കുന്നു. PR-ലെ ടെക്സ്റ്റിനെ വിശ്വസിക്കരുതെന്ന് ഞങ്ങൾ മോഡലിനോട് നിർദ്ദേശിക്കുന്നുമുണ്ട്. ഇത് ആക്രമണകാരികൾ മുന്നറിയിപ്പുകളിൽ കമാൻഡുകൾ ഒളിപ്പിച്ചു വെക്കുന്നത് തടയാൻ സഹായിക്കുന്നു.

വികസന വേളയിൽ ഞങ്ങൾ വരുത്തിയ മാറ്റങ്ങൾ:

• ഞങ്ങൾ Cloud LLM-കളിൽ നിന്ന് Ollama ഉപയോഗിച്ച് സ്വന്തം സെർവറിലേക്ക് മാറി. ഇത് ഡാറ്റാ സ്വകാര്യത ഉറപ്പാക്കുകയും സേവന തടസ്സങ്ങൾ ഒഴിവാക്കുകയും ചെയ്യുന്നു. • ഞങ്ങൾ "ToolCalling" ഏജന്റുകൾക്ക് പകരം "CodeAgent" ഉപയോഗിച്ചു. ചെറിയ മോഡലുകൾക്ക് കൃത്യമായ JSON അയക്കാൻ പ്രയാസമാണ്. പകരം CodeAgent പൈത്തൺ (Python) ഉപയോഗിച്ച് എഴുതുന്നു. ഇത് പിശകുകളും ഘട്ടങ്ങളും 20-ൽ നിന്നും 3-8 ആയി കുറച്ചു. • "run_shell" ടൂളുകൾക്ക് പകരം പ്രത്യേക Git ടൂളുകൾ ഉപയോഗിച്ചു. ഇത് "rm -rf" പോലുള്ള അപകടകരമായ കമാൻഡുകൾ തടയുന്നു. • മികച്ച നെറ്റ്‌വർക്ക് സ്ഥിരതയ്ക്കായി ഞങ്ങൾ "push" സെറ്റപ്പിൽ നിന്ന് "pull" സെറ്റപ്പിലേക്ക് മാറി.

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

Source: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj

Optional learning community: https://t.me/GyaanSetuAi