סוכן AI מציע תיקוני אבטחה באמצעות Pull Requests
התרעת אבטחה מופעלת. LLM קורא את ההקשר. הוא כותב תיקון קונפיגורציה. הוא פותח GitHub Pull Request. LLM שני סוקר את העבודה. אדם ממזג את התיקון.
הסוכן לעולם לא נוגע בסביבת הפרודקשן. הוא לעולם לא ממזג בעצמו.
בקרים (controllers) רגילים של Kubernetes פשוט מנסים שוב. אם pod קורס בגלל קונפיגורציה שגויה, הבקר מפעיל אותו מחדש לנצח. הוא לא פותר את שורש הבעיה. לאבטחה יש את אותה הבעיה. SIEM מעלה התרעה. אדם חייב לקרוא אותה ולכתוב תיקון. התהליך הזה איטי.
בנינו סוכן כדי לפתור זאת. הוא קורא התרעות אבטחה ובודק את התשתית כדי לכתוב טיוטה. זה לא אוטופילוט. זה מחולל טיוטות. כל השאר נשאר תחת שליטה אנושית ובשליטת GitOps.
איך זה עובד:
• Wazuh מזהה התקפות ושומר התרעות בבסיס נתונים. • bridge מושך התרעות חדשות ומפעיל את הסוכן. • הסוכן משתמש בכלים מוגבלים. הוא יכול לקרוא/לכתוב קבצים, ליצור branches ולהשתמש ב-GitHub API. הוא עורך רק קבצי קונפיגורציה. • ArgoCD עוקב אחר ה-repo. שום דבר לא נפרס (deploys) עד שאדם ממזג את ה-PR.
אנחנו משתמשים בשתי שכבות הגנה:
בדיקות קוד. כללים שאינם LLM מאמתים את ה-diff. אנחנו בודקים אם השינוי נשאר בתוך קבצי קונפיגורציה. אנחנו בודקים אם נתיב השרת תואם להתראה. אנחנו בודקים את גודל ה-diff. אם הבדיקה נכשלת, ה-PR נעצר.
סקירה של 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
