AI Agent Pull Requests द्वारे सुरक्षा सुधारणा (Security Fixes) सुचवतो

एक सुरक्षा अलर्ट (security alert) ट्रिगर होतो. एक LLM संदर्भ वाचते. ते कॉन्फिगरेशन सुधारणा (configuration fix) लिहिते. ते GitHub Pull Request उघडते. दुसरे LLM कामाचा आढावा घेते. एक माणूस ती सुधारणा मर्ज (merge) करतो.

हा एजंट प्रोडक्शनला (production) कधीही स्पर्श करत नाही. तो स्वतःहून कधीही मर्ज करत नाही.

सामान्य Kubernetes controllers फक्त पुन्हा प्रयत्न (retry) करतात. जर चुकीच्या कॉन्फिगरेशनमुळे एखादा pod क्रॅश झाला, तर controller त्याला सतत रीस्टार्ट करत राहतो. तो मूळ कारणाचे (root cause) निराकरण करत नाही. सुरक्षेच्या बाबतीतही हीच समस्या आहे. SIEM एक अलर्ट जनरेट करते. माणसाला तो वाचून सुधारणा लिहावी लागते. ही प्रक्रिया संथ आहे.

आम्ही हे सोडवण्यासाठी एक एजंट तयार केला आहे. तो सुरक्षा अलर्ट वाचतो आणि मसुदा (draft) लिहिण्यासाठी इन्फ्रास्ट्रक्चर तपासतो. हे 'ऑटोपायलट' नाही. हे केवळ 'ड्राफ्ट जनरेटर' आहे. बाकी सर्व काही मानवी आणि GitOps नियंत्रणाखाली राहते.

ते कसे कार्य करते:

• Wazuh हल्ले शोधते आणि अलर्ट डेटाबेसमध्ये सेव्ह करते. • एक bridge नवीन अलर्ट घेते आणि एजंट सुरू करते. • एजंट मर्यादित टूल्स वापरतो. तो फाइल्स वाचू/लिहू शकतो, branches तयार करू शकतो आणि GitHub API वापरू शकतो. तो फक्त कॉन्फिगरेशन फाइल्समध्ये बदल करतो. • ArgoCD रिपॉझिटरीवर लक्ष ठेवते. जोपर्यंत एखादा माणूस PR मर्ज करत नाही, तोपर्यंत काहीही डिप्लॉय (deploy) होत नाही.

आम्ही दोन सुरक्षा स्तर (safety layers) वापरतो:

  1. कोड तपासणी (Code checks). Non-LLM नियम 'diff' पडताळून पाहतात. बदल फक्त कॉन्फिगरेशन फाइल्सपुरता मर्यादित आहे की नाही, हे आम्ही तपासतो. सर्व्हर पाथ (server path) अलर्टशी जुळतो का, हे आम्ही तपासतो. आम्ही diff चा आकार तपासतो. जर तपासणीत त्रुटी आढळली, तर PR थांबवली जाते.

  2. दुसरे LLM रिव्ह्यू. मॉडेलचा एक वेगळा प्रकार (model family) PR वाचतो. तो आपले मत मांडतो. आम्ही वेगळे मॉडेल वापरतो कारण मॉडेल्स अनेकदा स्वतःच्याच मतांशी सहमत असतात. आम्ही मॉडेलला PR मधील मजकुरावर विश्वास न ठेवण्यासही सांगतो. यामुळे हल्लेखोर अलर्टमध्ये कमांड्स लपवू शकत नाहीत.

डेव्हलपमेंट दरम्यान आम्ही काय बदलले:

• आम्ही Cloud LLMs कडून Ollama वापरून आमच्या स्वतःच्या सर्व्हरकडे वळलो आहोत. यामुळे डेटा खाजगी राहतो आणि सेवा खंडित होण्यापासून वाचते. • आम्ही "ToolCalling" एजंट्सच्या जागी "CodeAgent" वापरले. लहान मॉडेल्सना स्वच्छ JSON पाठवताना अडचण येते. त्याऐवजी CodeAgent पायथन (Python) लिहितो. यामुळे त्रुटी आणि पायऱ्यांची संख्या २०+ वरून ३-८ पर्यंत कमी झाली. • आम्ही "run_shell" टूल्सच्या जागी विशिष्ट Git टूल्स वापरले. यामुळे "rm -rf" सारख्या धोकादायक कमांड्स रोखल्या जातात. • नेटवर्कची स्थिरता सुधारण्यासाठी आम्ही "push" सेटअपकडून "pull" सेटअपकडे वळलो आहोत.

आम्ही LLM कडे एका वेगवान ज्युनिअर डेव्हलपरप्रमाणे वागतो. त्याचे मसुदे उपयुक्त आहेत कारण एजंट आणि तुमचे प्रोडक्शन एन्व्हायरनमेंट (production environment) यांच्यामध्ये मानव आणि दुय्यम तपासणी (secondary checks) असतात.

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

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