AI Agent Pull Request'ler Aracılığıyla Güvenlik Düzeltmeleri Öneriyor
Bir güvenlik uyarısı tetiklenir. Bir LLM bağlamı okur. Bir yapılandırma düzeltmesi yazar. Bir GitHub Pull Request'i açar. İkinci bir LLM çalışmayı inceler. Bir insan düzeltmeyi birleştirir.
Ajan üretim ortamına (production) asla dokunmaz. Kendi başına asla birleştirme yapmaz.
Normal Kubernetes denetleyicileri (controllers) sadece tekrar dener. Eğer bir pod hatalı yapılandırma nedeniyle çökerse, denetleyici onu sonsuza dek yeniden başlatır. Kök nedeni düzeltmez. Güvenlik de aynı soruna sahiptir. Bir SIEM uyarı verir. Bir insanın bunu okuması ve bir düzeltme yazması gerekir. Bu süreç yavaştır.
Bunu çözmek için bir ajan inşa ettik. Güvenlik uyarılarını okur ve bir taslak yazmak için altyapıyı inceler. Bu bir otopilot değildir. Bu bir taslak oluşturucudur. Geri kalan her şey insan ve GitOps kontrolünde kalır.
Nasıl çalışır:
• Wazuh saldırıları tespit eder ve uyarıları bir veri tabanına kaydeder. • Bir köprü (bridge) yeni uyarıları çeker ve ajanı başlatır. • Ajan sınırlı araçlar kullanır. Dosyaları okuyabilir/yazabilir, branch'ler oluşturabilir ve GitHub API'sini kullanabilir. Sadece yapılandırma dosyalarını düzenler. • ArgoCD depoyu (repo) izler. Bir insan PR'ı birleştirene kadar hiçbir şey yayına alınmaz (deploy edilmez).
İki güvenlik katmanı kullanıyoruz:
Kod kontrolleri. LLM olmayan kurallar farkı (diff) doğrular. Değişikliğin yapılandırma dosyaları içinde kalıp kalmadığını kontrol ederiz. Sunucu yolunun uyarıyla eşleşip eşleşmediğini kontrol ederiz. Farkın boyutunu kontrol ederiz. Eğer başarısız olursa, PR durdurulur.
İkinci bir LLM incelemesi. Farklı bir model ailesi PR'ı okur. Bir görüş sunar. Farklı bir model kullanıyoruz çünkü modeller genellikle kendi kendileriyle hemfikirdir. Ayrıca modele PR metnine güvenmemesini söylüyoruz. Bu, saldırganların uyarı içine komut gizlemesini engeller.
Geliştirme sırasında neleri değiştirdik:
• Cloud LLM'lerden Ollama kullanarak kendi sunucumuza geçtik. Bu, verileri gizli tutar ve hizmet kesintilerini önler. • "ToolCalling" ajanlarını "CodeAgent" ile değiştirdik. Küçük modeller temiz JSON göndermekte zorlanıyor. CodeAgent bunun yerine Python yazar. Bu, hataları ve adımları 20'den fazla seviyeden 3-8 arasına düşürdü. • "run_shell" araçlarını belirli Git araçlarıyla değiştirdik. Bu, "rm -rf" gibi tehlikeli komutları engeller. • Daha iyi ağ kararlılığı için "push" kurulumundan "pull" kurulumuna geçtik.
LLM'i hızlı bir junior yazılımcı gibi görüyoruz. Taslakları kullanışlıdır çünkü ajan ile üretim ortamınız arasında insanlar ve ikincil kontroller bulunur.
Kaynak: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi
