عامل هوش مصنوعی اصلاحات امنیتی را از طریق Pull Request پیشنهاد می‌دهد

یک هشدار امنیتی فعال می‌شود. یک LLM متن را می‌خواند. یک اصلاح پیکربندی می‌نویسد. یک GitHub Pull Request باز می‌کند. یک LLM دوم کار را بازبینی می‌کند. یک انسان اصلاح را merge می‌کند.

این عامل هرگز به محیط تولید (production) دست نمی‌زند. هرگز خودش عملیات merge را انجام نمی‌دهد.

کنترلرهای معمولی Kubernetes فقط تلاش مجدد می‌کنند. اگر یک pod به دلیل پیکربندی اشتباه کرش کند، کنترلر آن را تا ابد دوباره راه‌اندازی می‌کند، اما علت اصلی را اصلاح نمی‌کند. امنیت نیز با همین مشکل روبروست. یک SIEM هشداری صادر می‌کند. یک انسان باید آن را بخواند و اصلاحی بنویسد. این فرآیند کند است.

ما عاملی برای حل این مشکل ساختیم. این عامل هشدارهای امنیتی را می‌خواند و زیرساخت را بررسی می‌کند تا یک پیش‌نویس بنویسد. این یک خلبان خودکار (autopilot) نیست؛ بلکه یک تولیدکننده پیش‌نویس است. بقیه موارد همچنان تحت کنترل انسان و GitOps باقی می‌ماند.

نحوه عملکرد:

• Wazuh حملات را شناسایی کرده و هشدارها را در یک پایگاه داده ذخیره می‌کند. • یک پل (bridge) هشدارهای جدید را دریافت کرده و عامل را فعال می‌کند. • عامل از ابزارهای محدودی استفاده می‌کند. می‌تواند فایل‌ها را بخواند/بنویسد، شاخه (branch) ایجاد کند و از GitHub API استفاده کند. این عامل فقط فایل‌های پیکربندی را ویرایش می‌کند. • ArgoCD مخزن (repo) را زیر نظر دارد. تا زمانی که یک انسان PR را merge نکند، هیچ چیزی مستقر (deploy) نمی‌شود.

ما از دو لایه حفاظتی استفاده می‌کنیم:

۱. بررسی‌های کد. قوانین غیر LLM، diff را تأیید می‌کنند. ما بررسی می‌کنیم که آیا تغییرات فقط در فایل‌های پیکربندی باقی می‌ماند یا خیر. بررسی می‌کنیم که آیا مسیر سرور با هشدار مطابقت دارد یا خیر. اندازه diff را بررسی می‌کنیم. اگر بررسی‌ها با شکست مواجه شوند، PR متوقف می‌شود.

۲. بازبینی توسط دومین LLM. یک خانواده مدل متفاوت، PR را می‌خواند و نظر خود را ارائه می‌دهد. ما از مدل متفاوتی استفاده می‌کنیم زیرا مدل‌ها اغلب با خودشان موافق هستند. همچنین به مدل می‌گوییم که به متن PR اعتماد نکند. این کار از پنهان کردن دستورات توسط مهاجمان در متن هشدار جلوگیری می‌کند.

آنچه در طول توسعه تغییر دادیم:

• ما از LLMهای ابری به سرور خودمان با استفاده از Ollama مهاجرت کردیم. این کار باعث حفظ حریم خصوصی داده‌ها و جلوگیری از قطع سرویس می‌شود. • ما عامل‌های "ToolCalling" را با "CodeAgent" جایگزین کردیم. مدل‌های کوچک در ارسال JSON تمیز با مشکل مواجه هستند. CodeAgent در عوض کد پایتون می‌نویسد. این کار خطاها و مراحل را از ۲۰+ به ۳ تا ۸ کاهش داد. • ما ابزارهای "run_shell" را با ابزارهای اختصاصی Git جایگزین کردیم. این کار از اجرای دستورات خطرناک مانند "rm -rf" جلوگیری می‌کند. • برای پایداری بهتر شبکه، از تنظیمات "push" به تنظیمات "pull" تغییر وضعیت دادیم.

ما با LLM مانند یک توسعه‌دهنده جونیور (junior developer) سریع رفتار می‌کنیم. پیش‌نویس‌های آن مفید هستند زیرا انسان‌ها و بررسی‌های ثانویه بین عامل و محیط تولید شما قرار دارند.

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

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