AI ایجنٹ پل ریکویسٹس (Pull Requests) کے ذریعے سیکیورٹی کے حل تجویز کرتا ہے

ایک سیکیورٹی الرٹ (alert) جاری ہوتا ہے۔ ایک LLM سیاق و سباق (context) کو پڑھتا ہے۔ یہ کنفیگریشن کا حل لکھتا ہے۔ یہ ایک GitHub Pull Request کھولتا ہے۔ دوسرا LLM کام کا جائزہ لیتا ہے۔ ایک انسان اس حل کو مرج (merge) کر دیتا ہے۔

ایجنٹ پروڈکشن (production) کو کبھی نہیں چھوتا۔ یہ خود سے کبھی مرج نہیں کرتا۔

عام Kubernetes کنٹرولرز صرف دوبارہ کوشش (retry) کرتے ہیں۔ اگر غلط کنفیگریشن کی وجہ سے کوئی پوڈ (pod) کریش ہو جائے، تو کنٹرولر اسے بار بار ری اسٹارٹ کرتا رہتا ہے۔ یہ اصل وجہ (root cause) کو ٹھیک نہیں کرتا۔ سیکیورٹی کے ساتھ بھی یہی مسئلہ ہے۔ ایک SIEM الرٹ جاری کرتا ہے۔ ایک انسان کو اسے پڑھنا اور حل لکھنا پڑتا ہے۔ یہ عمل سست ہے۔

ہم نے اس مسئلے کو حل کرنے کے لیے ایک ایجنٹ بنایا ہے۔ یہ سیکیورٹی الرٹس کو پڑھتا ہے اور ڈرافٹ لکھنے کے لیے انفراسٹرکچر کا جائزہ لیتا ہے۔ یہ آٹو پائلٹ (autopilot) نہیں ہے۔ یہ صرف ایک ڈرافٹ جنریٹر ہے۔ باقی سب کچھ انسان اور GitOps کے کنٹرول میں رہتا ہے۔

یہ کیسے کام کرتا ہے:

• Wazuh حملوں کا پتہ لگاتا ہے اور الرٹس کو ڈیٹا بیس میں محفوظ کرتا ہے۔ • ایک برج (bridge) نئے الرٹس حاصل کرتا ہے اور ایجنٹ کو شروع کرتا ہے۔ • ایجنٹ محدود ٹولز استعمال کرتا ہے۔ یہ فائلیں پڑھ/لکھ سکتا ہے، برانچز (branches) بنا سکتا ہے، اور GitHub API استعمال کر سکتا ہے۔ یہ صرف کنفیگریشن فائلیں ایڈٹ کرتا ہے۔ • ArgoCD ریپوزٹری (repo) پر نظر رکھتا ہے۔ جب تک کوئی انسان PR کو مرج نہیں کرتا، کچھ بھی ڈیپلائے (deploy) نہیں ہوتا۔

ہم دو حفاظتی تہیں (safety layers) استعمال کرتے ہیں:

  1. کوڈ چیک۔ غیر-LLM رولز 'diff' کی تصدیق کرتے ہیں۔ ہم چیک کرتے ہیں کہ آیا تبدیلی صرف کنفیگریشن فائلوں تک محدود ہے۔ ہم چیک کرتے ہیں کہ آیا سرور کا راستہ (path) الرٹ سے مطابقت رکھتا ہے۔ ہم 'diff' کے سائز کو چیک کرتے ہیں۔ اگر یہ ناکام ہو جائے، تو PR رک جاتی ہے۔

  2. دوسرا LLM ریویو۔ ایک مختلف ماڈل فیملی PR کو پڑھتی ہے۔ یہ اپنی رائے فراہم کرتی ہے۔ ہم ایک مختلف ماڈل استعمال کرتے ہیں کیونکہ ماڈلز اکثر اپنی ہی باتوں سے اتفاق کرتے ہیں۔ ہم ماڈل کو یہ بھی کہتے ہیں کہ وہ PR کے متن پر بھروسہ نہ کرے۔ یہ حملہ آوروں کو الرٹ میں کمانڈز چھپانے سے روکتا ہے۔

ڈویلپمنٹ کے دوران ہم نے کیا تبدیلیاں کیں:

• ہم نے Cloud LLMs سے ہٹ کر Ollama کا استعمال کرتے ہوئے اپنے خود کے سرور پر منتقل ہو گئے۔ اس سے ڈیٹا نجی رہتا ہے اور سروس میں تعطل سے بچا جا سکتا ہے۔ • ہم نے "ToolCalling" ایجنٹس کو "CodeAgent" سے بدل دیا۔ چھوٹے ماڈلز صاف ستھرا JSON بھیجنے میں مشکل محسوس کرتے ہیں۔ CodeAgent اس کے بجائے Python لکھتا ہے۔ اس سے غلطیاں اور مراحل 20 سے کم ہو کر 3 سے 8 رہ گئے۔ • ہم نے "run_shell" ٹولز کو مخصوص Git ٹولز سے بدل دیا۔ یہ "rm -rf" جیسی خطرناک کمانڈز کو روکتا ہے۔ • ہم نے بہتر نیٹ ورک استحکام کے لیے "push" سیٹ اپ سے "pull" سیٹ اپ پر منتقل ہو گئے۔

ہم LLM کے ساتھ ایک تیز رفتار جونیئر ڈویلپر کی طرح پیش آتے ہیں۔ اس کے ڈرافٹس مفید ہیں کیونکہ ایجنٹ اور آپ کے پروڈکشن ماحول کے درمیان انسان اور ثانوی چیک موجود ہوتے ہیں۔

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

اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi