AI एजेंट Pull Requests के माध्यम से सुरक्षा सुधार (Security Fixes) का प्रस्ताव देता है
एक सुरक्षा अलर्ट (security alert) ट्रिगर होता है। एक LLM संदर्भ (context) को पढ़ता है। यह एक कॉन्फ़िगरेशन सुधार लिखता है। यह एक GitHub Pull Request खोलता है। एक दूसरा LLM काम की समीक्षा करता है। एक इंसान उस सुधार को मर्ज (merge) करता है।
एजेंट कभी भी प्रोडक्शन (production) को नहीं छूता है। यह अपने आप कभी मर्ज नहीं करता है।
सामान्य Kubernetes controllers केवल पुन: प्रयास (retry) करते हैं। यदि खराब कॉन्फ़िगरेशन के कारण कोई pod क्रैश हो जाता है, तो controller उसे बार-बार रीस्टार्ट करता रहता है। यह मूल कारण (root cause) को ठीक नहीं करता है। सुरक्षा के साथ भी यही समस्या है। एक SIEM अलर्ट जारी करता है। एक इंसान को इसे पढ़ना होगा और सुधार लिखना होगा। यह प्रक्रिया धीमी है।
हमने इसे हल करने के लिए एक एजेंट बनाया है। यह सुरक्षा अलर्ट पढ़ता है और ड्राफ्ट लिखने के लिए इंफ्रास्ट्रक्चर (infrastructure) को देखता है। यह कोई ऑटोपायलट नहीं है। यह एक ड्राफ्ट जनरेटर है। बाकी सब कुछ इंसान और GitOps के नियंत्रण में रहता है।
यह कैसे काम करता है:
• Wazuh हमलों का पता लगाता है और अलर्ट को डेटाबेस में सहेजता है। • एक bridge नए अलर्ट खींचता है और एजेंट को शुरू करता है। • एजेंट सीमित टूल्स का उपयोग करता है। यह फ़ाइलों को पढ़/लिख सकता है, branches बना सकता है और GitHub API का उपयोग कर सकता है। यह केवल कॉन्फ़िगरेशन फ़ाइलों को ही एडिट करता है। • ArgoCD रिपॉजिटरी (repo) पर नज़र रखता है। जब तक कोई इंसान PR को मर्ज नहीं करता, तब तक कुछ भी डिप्लॉय नहीं होता है।
हम दो सुरक्षा स्तरों (safety layers) का उपयोग करते हैं:
कोड चेक। Non-LLM नियम diff की पुष्टि करते हैं। हम जाँचते हैं कि क्या बदलाव कॉन्फ़िगरेशन फ़ाइलों तक ही सीमित है। हम जाँचते हैं कि क्या सर्वर पाथ अलर्ट से मेल खाता है। हम diff के आकार की जाँच करते हैं। यदि यह विफल हो जाता है, तो PR रुक जाता है।
दूसरा LLM रिव्यू। एक अलग मॉडल फैमिली PR को पढ़ती है। यह अपनी राय देती है। हम एक अलग मॉडल का उपयोग करते हैं क्योंकि मॉडल अक्सर खुद से ही सहमत हो जाते हैं। हम मॉडल को PR टेक्स्ट पर भरोसा न करने के लिए भी कहते हैं। यह हमलावरों को अलर्ट में कमांड छिपाने से रोकता है।
विकास (development) के दौरान हमने क्या बदला:
• हमने Cloud LLMs से हटकर 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
